内网穿透需求
有一台在局域网内的服务器,外网无法访问,利用VPS或者具有公网IP的实体机进行转发,实现局域网外访问该服务器。本次配置局域网和公网系统均为Linux(ubuntu 16.04)。需要准备VPS和frp软件
Server 1:校内服务器,外网无法访问;
Server 2:具有公网IP的VPS(腾讯云、华为云或阿里云等);
frp软件:可在其GitHub按照系统版本下载。软件下载与安装
在服务端(server 1)和客户端(server 2)两个ubuntu系统均下载和解压frp。
# 获取系统版本,我的server 1和2均为ubuntu x86_64
arch
# 下载并解压
wget https://github.com/fatedier/frp/releases/download/v0.36.2/frp_0.36.2_linux_amd64.tar.gz
tar -zxvf frp_0.36.2_linux_amd64.tar.gz
mv frp_0.36.2_linux_amd64 frp
ls frp/
-rwxrwxr-x 1 1000 1000 9.5M Mar 22 07:00 frpc # c结尾为客户端程序
-rw-rw-r-- 1 1000 1000 9.3K Mar 22 07:02 frpc_full.ini
-rw-rw-r-- 1 1000 1000 126 Mar 22 07:02 frpc.ini # c结尾为客户端配置文件
-rwxrwxr-x 1 1000 1000 13M Mar 22 07:00 frps # s结尾为服务端程序
-rw-rw-r-- 1 1000 1000 5.0K Mar 22 07:02 frps_full.ini
-rw-rw-r-- 1 1000 1000 116 Mar 29 02:59 frps.ini # s结尾为服务端配置文件
-rw-rw-r-- 1 1000 1000 12K Mar 22 07:02 LICENSE
drwxrwxr-x 2 1000 1000 4.0K Mar 22 07:02 systemd
服务端(server 1)需要配置“frps.ini”文件;客户端(server 2)需要配置“frpc.ini”文件。
-
服务端配置
按照以下配置修改“frps.ini”文件:
[common]
bind_port = 7000
dashboard_port = 7500
token = 987654321
dashboard_user = admin
dashboard_pwd = admin
如果没有必要,端口均可使用默认值,token、user和password项请自行设置。
-- “bind_port”表示用于客户端和服务端连接的端口,这个端口号我们之后在配置客户端的时候要用到。
-- “dashboard_port”是服务端仪表板的端口,若使用7500端口,在配置完成服务启动后可以通过浏览器访问 x.x.x.x:7500 (其中x.x.x.x为VPS的IP)查看frp服务运行信息。
-- “token”是用于客户端和服务端连接的口令,请自行设置并记录,稍后会用到。
-- “dashboard_user”和“dashboard_pwd”表示打开仪表板页面登录的用户名和密码,自行设置即可。
配置完成后,运行./frps -c frps.ini
,会得到如下输出说明开启成功:
2021/03/29 03:02:05 [I] [root.go:200] frps uses config file: frps.ini
2021/03/29 03:02:05 [I] [service.go:192] frps tcp listen on 0.0.0.0:7000
2021/03/29 03:02:05 [I] [service.go:294] Dashboard listen on 0.0.0.0:7500
2021/03/29 03:02:05 [I] [root.go:209] frps started successfully
然后,可以运行nohup ./frps -c frps.ini &
将程序放在后台。可以通过浏览器访问 x.x.x.x:7500 (其中x.x.x.x为VPS的IP)查看frp服务运行信息。
-
客户端配置
接下来,按照如下信息在server 2(内网)配置客户端:vim frpc.ini
[common]
server_addr = x.x.x.x
server_port = 7000
token = 987654321
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000
-- “server_addr”为服务端IP地址,填入即可。
-- “server_port”为服务器端口,填入你设置的端口号即可,如果未改变就是7000
-- “token”是你在服务器上设置的连接口令,原样填入即可。
配置好后直接运行./frpc -c ./frpc.ini
,输出如下说明运行成功。
2021/03/29 11:30:33 [I] [service.go:304] [d69b2a6a76e9aacd] login to server success, get run id [d69b2a6a76e9aacd], server udp port [0]
2021/03/29 11:30:33 [I] [proxy_manager.go:144] [d69b2a6a76e9aacd] proxy added: [ssh]
2021/03/29 11:30:33 [I] [control.go:180] [d69b2a6a76e9aacd] [ssh] start proxy success
然后直接nohup ./frpc -c frpc.ini &
把程序放后台。
在外网时,直接运行ssh -oPort=6000 username_server1@x.x.x.x
即可直接登录。
x.x.x.x 为服务端(server 2)的IP地址;username_server1为内网server 1中的用户名,输入的密码也为该用户密码。
参考:
[1] 使用frp进行内网穿透
[2] 内网穿透-在家访问校园服务器