內網穿透需求
有一臺在局域網內的服務器,外網無法訪問,利用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] 內網穿透-在家訪問校園服務器