使用frp反向代理進行局域網穿透(訪問內網服務器)

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

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容