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