Frp內網穿透搭建,家庭主機對外提供介面,支援ssh訪問

Frp內網穿透搭建,家庭主機對外提供介面,支援ssh訪問

1.使用場景:

需求1.家中伺服器 ubuntu 主機,跑介面服務,需要對外暴漏,
需求2.同時需要在外網ssh遠程

​ 關鍵詞: frp內網穿透斐訊K3C 使用frp服務ubuntu開啟sshservice

​ 以下是記錄:

2.所需工具:

1.公網VPS一台

​ 搭建frp服務,這裡使用TX云為例,需要配置安全組打開指定埠

​ 可以使用Xshell正常登錄

​ [申請,註冊VPS,不在本文討論範圍,請自行搜索]

2.路由器

​ 支援Frp設置,這裡使用斐訊K3C為例,使用openwrt也可以

​ 注意,frp版本要和伺服器一致]

​ 如果使用主機設備當作Frp客戶端,大致方式一致,可以參考官方文檔,或者搜搜

3.本地Ubuntu 主機

​ 家中Ubuntu 主機,部署介面服務,支援外網訪問,同時支援外網ssh到主機 ,後面需要裝sshserver

4.其他

​ Xshell 工具,免費授權下載地址

3.部署步驟

1.VPS 安裝 Frp 服務

​ Xshell登錄vps,查看vps架構,一般是x86_64 ,輸入 arch 查看

root@VM-16-5-ubuntu:~/frp/frp_0.21.0# arch
x86_64

打開 frp 首頁,右側選擇 Releases 66 ,或者直接打開下載地址

選擇適合的平台,一般是 frp_0.38.0_linux_amd64.tar.gz

注意,這裡的版本是0.38.0,後續路由器版本不一致,無法識別,需要降級

下載後,上傳到 vps,解壓 ,

使用Xshell,新建項目目錄,cd 到項目目錄,直接把 下載文件到xshell窗口,等待上傳完畢

配置 frps.ini 文件,可以使用 寶塔或者vim ,注意這個文件,後面客戶端配置需要和它保持一致

配置參數:基本都在注釋里了

[common]
frps綁定埠 (必選)
bind_port = 7000
認證密碼,客戶端須與伺服器一致
token = 123456
儀錶盤埠,只有設置了才能使用儀錶盤(即後台)
dashboard_port = 7500
儀錶盤訪問的用戶名密碼,如果不設置,則默認都是 admin
dashboard_user = admin
dashboard_pwd = admin

最後,重要一步,啟動frp服務

frpc -c ./frpc.ini

看到 start proxy success 表示成功

這樣啟動服務,窗口關閉就會停止,可以使用後台啟動

sudo nohup /root/frp/frp_0.21.0/frps -c /root/frp/frp_0.21.0/frps.ini &

如果提示 沒有nohup,請安裝

2.路由器配置Frp客戶端映射

frp服務端配置完畢,可以嘗試打開面板,查看是否可以正常登錄,用戶名密碼 admin 剛才配置的

frp面板地址:vps地址:7500

這裡的7500,是在上面配置的,可以修改

注意:如果打不開?,請檢查vps安全策略,需要放行埠號,打開防火牆添加規則-添加 7500 和 7000 埠

配置完畢效果

接下來配置客戶端

我使用的路由器frp插件,直接在路由器配置,如果使用frp客戶端,配置方式差不多,請參照官方文檔

路由器配置,打開路由器後台,找到frp服務,複製粘貼以下配置

frp客戶端配置:

[common]
server_addr = xxx.xxx.xxx.xxx
server_port = 7000
token = 123456

[web]
type = tcp
local_ip = 192.168.2.157
local_port = 8080
remote_port = 8080

[ssh]
type = tcp
local_ip = 192.168.2.157
local_port = 22
remote_port = 6022

參數解釋

[common]
server_addr = xxx.xxx.xxx.xxx 伺服器地址,就是你vps地址
server_port = 7000 伺服器埠號,保持和vps 剛才配置的frps.ini一致
token = 123456 服務密碼,保持和vps剛才配置的frps.ini一致

[web] 這就是名字,在面板顯示,以視區分,看下圖面板名字
type = tcp 連接方式,一般就選tcp,其他我也不會
local_ip = 192.168.2.157 這裡是本地主機地址,例如就是我ubuntu主機地址,設備自己可以在wifi資訊中查看
local_port = 8080 本地埠映射,意思就是,ubuntu主機暴漏的埠
remote_port = 8080 遠端埠映射,意思就是,vps主機埠

[ssh] 備註名字
type = tcp
local_ip = 192.168.2.157
local_port = 22
remote_port = 6022

local_port和 remote_port 開始不好理解,這裡解釋下
我理解就是,假如本地主機ubuntu需要暴漏8080介面提供tomcat服務,在外網訪問vps主機8080埠,vps會請求本地主機8080埠
當然,斷後不一定是一樣的,後面配置的 6022對應22埠就是例子
當ssh請求vps6022埠,可以請求到主機22埠[設置ssh默認埠]

簡單畫個圖,希望能幫助理解

打開Frp面板查看frp服務端和客戶端綁定狀態

斐訊路由器- 功能設置-示例

順利到這裡,基本就配置成功了

3.測試
1.8080埠

​ 本地主機ubuntu,安裝docker,開啟tomcat服務,暴漏8080埠,

​ 先測試區域網可以正常訪問,

​ 將電腦切換到手機熱點,訪問 vps:8080 ,可以正常訪問到本地主機的tomcat頁面,證明成功

2..遠程shell到家中主機

​ 剛才已經將本地主機22埠暴漏

​ 需要訪問家中主機,只需要xshell配置,伺服器地址 : vps地址:6022

​ 用戶名密碼: ubuntu 用戶賬戶和密碼

​ 這裡發現,連不上 。。。。

​ 因為,一般ubuntu主機只安裝ssh客戶端,不安裝服務端

sudo apt install openssh-server

安裝完成後,SSH服務將自動啟動。要驗證安裝是否成功並且SSH服務正在運行,請鍵入以下命令,該命令將顯示SSH伺服器狀

sudo systemctl status ssh

再次xshell遠程主機,順利的話,成功!

4.附錄:

1.禁止伺服器休眠

發現ubuntu會自動休眠

參考:伺服器ubuntu 20.04關閉自動休眠模式

查看是否開啟休眠模式
systemctl status sleep.target
yaron@yaron-T420s:~$ systemctl status sleep.target

返回結果
● sleep.target – Sleep
Loaded: loaded (/lib/systemd/system/sleep.target; static; vendor preset: enabled)
Active: inactive (dead)
Docs: man:systemd.special(7)

執行關閉休眠功能的命令,如下
yaron@yaron-T420s:~$ sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target
[sudo] yaron 的密碼:
Created symlink /etc/systemd/system/sleep.target → /dev/null.
Created symlink /etc/systemd/system/suspend.target → /dev/null.
Created symlink /etc/systemd/system/hibernate.target → /dev/null.
Created symlink /etc/systemd/system/hybrid-sleep.target → /dev/null.

再次查看
yaron@yaron-T420s:~$ systemctl status sleep.target
● sleep.target
Loaded: masked (Reason: Unit sleep.target is masked.)
Active: inactive (dead)
yaron@yaron-T420s:~$

2.服務後台運行

​ 開啟訂製任務或者後台運行

sudo nohup /root/frp/frp_0.21.0/frps -c /root/frp/frp_0.21.0/frps.ini &

3.xshell配置


感謝以下作者:

FRP內網穿透搭建與使用

Frps、nginx內網穿透安裝與配置

Frp介紹 Frp官方文檔 下載地址

Tcping下載地址 帶埠Ping測試

在Ubuntu上啟用SSH

編輯器支援markdown有點彆扭,很多程式碼引用還要自己改? 用的Typora