專注Linux與Windows運維 PHP與WEB開發

不斷創新創造價值,每一個客戶定制都精心打造,讓您的企業無憂網絡運維

乾元數碼邀請各技術大牛,齊心協力,共同創造!

利用frp實現內網穿透遠程訪問

NAS沒有公網IP是一件很不方便的事情,尤其是在國內的網絡環境,學校和小區內的用戶通常都沒有公網IP。為了解決這個問題,則需要內網穿透,而內網穿透的方法有很多種,例如使用花生殼、ngrok等,該文章要介紹的是使用frp讓群暉實現內網穿透。
實際上frp有官方的中文文檔,上面的內容已經非常詳盡,對相關操作比較熟悉的人可以直接閱讀官方的中文文檔。
什么是frp
frp 是一個高性能的反向代理應用,可以幫助您輕松地進行內網穿透,對外網提供服務,支持 tcp, http, https 等協議類型,并且 web 服務支持根據域名進行路由轉發。
準備
在使用frp之前,需要一臺有公網IP的服務器(下文稱外網主機),一臺需要實現內網穿透的機器(下文稱內網主機),SSH工具,以及一個域名(如果只是建立SSH反向代理則不需要域名)。
該文章中筆者所使用的服務器是朋友推薦的Vultr服務器,雖然服務器是在國外,但勝在帶寬夠,有需要的朋友可以注冊一個。而需要實現內網穿透的機器則是筆者用上網本搭建的黑群暉。SSH工具使用的是Xshell 5。而域名筆者則是使用自己個人網站的域名。
開始使用
根據機器的操作系統,在Release頁面中找到對應的frp程序,然后分別在外網主機和內網主機中下載它。
下面的所示范用的frp程序版本是以筆者的服務器為主的。
外網主機
SSH連接上外網主機后,使用wget指令下載frp。
wget https://github.com/fatedier/frp/releases/download/v0.13.0/frp_0.13.0_linux_amd64.tar.gz
使用tar指令解壓tar.gz文件
tar -zxvf frp_0.13.0_linux_amd64.tar.gz
使用cd指令進入解壓出來的文件夾
cd frp_0.13.0_linux_amd64.tar.gz
外網主機作為服務端,可以刪掉不必要的客戶端文件,使用rm指令刪除文件。
rm -f frpc
rm -f frpc.ini
接下來要修改服務器配置文件,即frps.ini文件。使用vi指令對目標文件進行編輯。
vi frps.ini
打開frps.ini后可以看到默認已經有很多詳細的配置和示范樣例,該文章僅以達到內網穿透為目的,所以這里選擇刪掉或注釋掉里面的所有內容,然后根據群暉的情況,按照官方的中文文檔添加以下配置。(這里的操作都使用vi命令,關于vi命令的使用方式這里不作詳細介紹,可以自行搜索相關使用方法。)
[common]
bind_port = 7000
vhost_http_port = 8080

[common]部分是必須有的配置,其中bind_port是自己設定的frp服務端端口,vhost_http_port是自己設定的http訪問端口。
保存上面的配置后,使用以下指令啟動frp服務端。(如果需要在后臺運行,請往下翻閱關于后臺運行的部分。)
./frps -c ./frps.ini
服務端的工作就到此結束了。
客戶端
客戶端前面的操作和服務端是一模一樣的,這里不一一解釋。
wget https://github.com/fatedier/frp/releases/download/v0.13.0/frp_0.13.0_linux_386.tar.gz
tar -zxvf frp_0.13.0_linux_386.tar.gz
cd frp_0.13.0_linux_386
rm -f frps
rm -f frps.ini
vi frpc.ini
客戶端的配置如下
[common]
server_addr = x.x.x.x
server_port = 7000

[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000

[nas]
type = http
local_port = 5000
custom_domains = no1.sunnyrx.com

[web]
type = http
local_port = 80
custom_domains = no2.sunnyrx.com

上面的配置和服務端是對應的。
[common]中的server_addr填frp服務端的ip(也就是外網主機的IP),server_port填frp服務端的bind_prot。
[ssh]中的local_port填群暉的ssh端口。
[nas]中的type對應服務端配置。local_port填群暉的DSM端口。custom_domains為要映射的域名,記得域名的A記錄要解析到外網主機的IP。
[web]同上,local_port填群暉的web端口。這里創建了兩個http反向代理是為了分別映射群暉兩個重要的端口,5000和80,前者用于登錄群暉管理,后者用于群暉的Web Station和DS Photo。
保存配置,輸入以下指令運行frp客戶端。(同樣如果需要在后臺運行,請往下翻閱關于后臺運行的部分。)
./frpc -c ./frpc.ini
此時在服務端會看到”start proxy sucess”字樣,即連接成功。
現在可以用SSH通過外網主機IP:6000和群暉建立SSH連接。通過瀏覽器訪問no1.sunnyrx.com:8080打開群暉nas的管理頁面,訪問no2.sunnyrx.com:8080打開群暉Web Station的網站,DS Photo app可以連接no2.sunnyrx.com:8080進入DS Photo管理。
讓frp在后臺運行
雖然現在frp運作起來了,內網穿透也實現了,但這還是不夠的。此時如果斷開與服務端或者客戶端的SSH連接(比如關掉了Xshell)也就中止了frp的運行。
保持frp運行是關鍵是讓服務端的frp和客戶端的frp在后臺運行,這里提兩個方法供參考,一個是使用screen指令,另一個是使用nohup指令。由于群暉的系統默認是沒有screen指令的,這里也不提供安裝screen的方法,所以推薦群暉直接使用nohup。
使用screen讓frp在后臺運行
下面的示范是運行服務端的frp,客戶端就不示范了,前面提過群暉的系統沒有screen指令。
首先使用screen指令創建一個會話。
screen -dmS frp
然后進入這個會話。
screen -r frp
最后使用運行frp的指令,在后面加上” &”。(如果之前斷開了SSH連接,記得用cd指令進入frp的目錄先。)
./frps -c ./frps.ini &
這樣就讓frp在后臺運行了。
使用nohup指令
nohup指令的使用方法相對簡單,只需要在nohup后面加上frp的運行指令即可。下面示范的指令是運行frp客戶端。(同樣,如果之前斷開了SSH連接,記得用cd指令進入frp的目錄先。)
nohup ./frpc -c ./frpc.ini &
這樣就成功讓frp在后臺運行了。
結語
frp的使用和配置相當簡單,如有疑問或者想了解關于frp的其它功能可以查看官方的中文文檔。

為您推薦

北京pk10计划 北京赛车怎么投注不了 6场半全场奖金计算器 ds视讯电话认证 香港六合彩最新一期开奖号码 重庆时时彩代理评测—点击进入 二分彩计划专家 亿客隆 ds真人平台-升级版下载 bg娱乐游戏下载中心 体彩6+1中奖规则及奖金 ag电子娱乐网站 DS真人-欢迎进入 广东快乐10分开奖玩法 精准无错六肖中特40期 新疆11选5后二 东成西就四肖八码吧