frp 是一个可用于内网穿透的高性能的反向代理应用,支持 tcp, udp, http, https 协议。

数据准备:

  • 公网IP: X.X.X.X
  • 内网电脑使用的是两台win10-64系统(公司+家里)
  • 公网电脑为linux-64系统。

服务端配置

文件下载

下载地址:frp下载

具有公网IP的电脑将作为frp服务端(frps),首先去项目地址的releases页面下载与服务端系统匹配的文件并解压

1
2
3
4
5
6
# 进入home目录
cd /home
# 下载对应的frp作为服务端
wget https://github.com/fatedier/frp/releases/download/v0.26.0/frp_0.26.0_linux_amd64.tar.gz
# 解压
tar -zxvf frp_0.26.0_linux_amd64.tar.gz

编辑配置文件

1
2
3
4
# 进入frp
cd frp_0.26.0_linux_amd64/
# 编辑frps.ini配置文件(一般不需要更改)
vim frps.ini

编辑frps.ini为以下内容:

bind_port为客户端与服务端进行通信的端口。其它更丰富的配置可参考frps_full.ini和项目帮助文档。

启动服务端

进行到解压后的frp目录,然后通过./frps -c frps.ini命令即可启动服务端,如下图所示:

1
2
3
4
5
cd /home/frp_0.26.0_linux_amd64/
# 前台启动(终端关闭进程终端)
./frps -c frps.ini
# 后台启动
nohup ./frps -c frps.ini

设置开机启动和后台运行

上一步中的frps占据了整个命令窗口,所以接下来要考虑如何让它在后台运行并且开机自启:
参考Nan's Blog的《系统开机启动脚本》文章。

客户端配置

文件下载

具有内网IP的电脑将作为客户端(frpc),在releases页面下载frp_0.16.0_windows_amd64.zip解压

编辑配置文件

编辑frpc.ini为以下内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[common]
# sever_addr配置为公网电脑的IP
server_addr = X.X.X.X
# server_port与frps.ini(服务端)中的bind_port一致
server_port = 7000

# 两台或者多条客户端“ssh”要不一样,否则会有冲突导致启动失败
# 举例:[ssh-home]、[ssh-company]
[ssh]
type = tcp
local_ip = 127.0.0.1
# 本地客户端对应的端口
# windows填3389,linux系统填22
local_port = 3389
# 对应云端服务器的端口
# 注:
# 1,所有remote_port对应的端口必须在云端服务器中开放,否则无法进行访问
# 2,两台或者多台客户端remote_port必须不一样
remote_port = 6000

启动客户端

双击frpc.exe或者用命令 frpc -c frpc.ini即可启动客户端,如下图所示:

注意:这时候很可能启动不了,一般情况是因为服务器端(linux)7000端口没开放:

1
2
3
4
5
6
# 查看端口开放情况
firewall-cmd --list-all
# 添加开放端口
firewall-cmd --zone=public --add-port=7000/tcp --permanent
# 重启防火墙
systemctl restart firewalld

然后再执行frpc -c frpc.ini就可以正常启动连接了。

设置开机启动和后台运行

参考Nan's Blog的《系统开机启动脚本》文章。