1 必要条件:
一台公网IP服务器,这里采用阿里云ECS服务器。
此处将IP定义为:serverA-IP
2 服务器下载代码:
# mkdir /data
# cd /data
# git clone https://github.com/fatedier/frp.git
# cd frp
3 编译代码
编译需要时间
# make
go fmt ./...
env CGO_ENABLED=0 go build -trimpath -ldflags "-s -w" -o bin/frps ./cmd/frps
env CGO_ENABLED=0 go build -trimpath -ldflags "-s -w" -o bin/frpc ./cmd/frpc
在项目下,关注目录:
bin/
conf/
1 服务器A
复制文件到指定目录:
# mkdir /data/frp-server
# cp /data/frp/bin/frps /data/frp-server/
# cp /data/frp/conf/frps.ini /data/frp-server/
# ls /data/frp-server
total 15312
-rwxr-xr-x 1 root root 15675392 Aug 27 14:20 frps
-rw-r--r-- 1 root root 26 Aug 27 14:20 frps.ini
# cat frps.ini
[common]
bind_port = 7000
启动服务器:
# ./frps -c frps.ini
打开ECS服务器防火墙:
# iptables -A INPUT -j ACCEPT
打开阿里云防火墙:
2 客户端B
在另外一台服务器B(此处为客户端B)上
# mkdir -p /data/frp-client
将服务器A上的另一个文件传递到当前文件
# scp /data/frp/bin/frpc root@serverB-ip:/data/frp-client
# scp /data/frp/conf/frpc.ini root@serverB-ip:/data/frp-client
此时客户端B上有了两份文件:
# ls /data/frp-client
# ls -l
total 13500
-rwxr-xr-x 1 root root 13819904 8月 27 14:22 frpc
-rw-r--r-- 1 root root 287 8月 27 16:43 frpc.ini
# cat frpc.ini
# frpc.ini
[common]
server_addr = serverA-IP
server_port = 7000
[ssh_1]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6001
启动客户端:
# ./frpc -c frpc.ini &
3 测试机器C
此时A是公网,B和C分别是公司内网和家里NAT网
家里的台式机C登录公司机器B:
# ssh root@serverA-ip -p 6001
注意:这里C要登录服务器A,但是要指向B的监听端口;跳转过去;