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會自動休眠
檢視是否開啟休眠模式
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配置
感謝以下作者:
Tcping下載地址 帶埠Ping測試
編輯器支援markdown有點彆扭,很多程式碼引用還要自己改? 用的Typora