由于家里的寬帶沒有公網(wǎng)IP,所以在外面訪問自己的電腦就成了問題,雖然有TeamViewer,但是它經(jīng)常性的斷連更新密碼,老是各種連不上,所以還是FRP內(nèi)網(wǎng)穿透方便,剛好手里有個OrangePi,正好可以利用起來。
原理介紹
內(nèi)網(wǎng)穿透就是當(dāng)你家的寬帶沒有公網(wǎng)IP的時候,你在外面想連接家里的電腦或者攝像頭或者NAS什么的,就沒有辦法連接。此時一種辦法就是和寬帶的客服battle,看能不能給你提供一個公網(wǎng)IP。如果失敗,另一個招就是使用FRP進行內(nèi)網(wǎng)穿透。FRP就是需要你有一臺具有公網(wǎng)IP的服務(wù)器,比如阿里云、騰訊云,然后利用這個VPS當(dāng)跳板,這樣就能利用VPS的公網(wǎng)IP訪問到你的內(nèi)網(wǎng)設(shè)備。
材料準備
操作步驟
服務(wù)端安裝
下載FRP服務(wù)端,一般大家申請的VPS都是linux系統(tǒng)的,到FRP的GITHUB地址下載最新的版本,linux服務(wù)器下載下圖中的386或者64版本,視你的系統(tǒng)是32還是64位系統(tǒng)而定,不清楚的統(tǒng)一選擇386即可。

解壓下載的壓縮包,因為做服務(wù)端,所以我們只需要里面的frps和frps.ini兩個文件,把它上傳到你VPS的/usr/local/frp目錄中,修改frps.ini文件內(nèi)容如下:
[common]bind_port = 17000dashboard_port = 17500dashboard_user = 網(wǎng)頁控制臺用戶名dashboard_pwd = 網(wǎng)頁控制臺密碼vhost_http_port = 4000vhost_https_port = 4001max_pool_count = 50token = xxxxxxxxxxxxxxxxxxxtcp_mux = truelog_file = ./frps.loglog_level = infolog_max_days = 3authentication_timeout = 0privilege_mode = true
上面的17000是你服務(wù)器和客戶端通信使用的端口,17500是網(wǎng)頁查看服務(wù)器狀態(tài)的時候使用的端口,下面的用戶名密碼這些都可以根據(jù)你自己的喜好配置。token是服務(wù)端和客戶端通信認證用的,到時候兩個必須要填的一樣。其他的選項保持不動即可。
開放服務(wù)器的防火墻端口
剛才我們配置使用了17000 17500 4000 4001這些端口,我們要在服務(wù)器上開放這些端口,否則訪問不了,我的是centos系統(tǒng),操作如下,其他的發(fā)行版自己搜索對應(yīng)的防火墻添加端口命令。
# 列出系統(tǒng)當(dāng)前開放的端口號firewall-cmd --list-port# 添加端口,其他的端口類似操作即可firewall-cmd --zone=public --add-port=17000/tcp --permanent# 重啟防火墻使規(guī)則生效firewall-cmd --reload# 再次查看對應(yīng)端口好是否打開firewall-cmd --list-port
開啟服務(wù)器
執(zhí)行下列操作確定FRP服務(wù)器
cd /usr/local/frpchmod +x *nohup ./frps -c frps.ini > /dev/null 2>&1 &

OrangePi安裝OpenWRT系統(tǒng)
網(wǎng)上已經(jīng)有人專門發(fā)布基于OrangePi Zero打包的OpenWRT系統(tǒng)了,直接點擊pulpstone網(wǎng)站下載對應(yīng)的版本。網(wǎng)站有可能改版,需要你自己找下下圖所示的鏈接下載:

下載之后解壓,用軟件把解壓出的img鏡像文件燒寫到SD卡中,燒寫軟件我用的是樹莓派官方推薦的imager.exe。
安裝后啟動,默認用戶名密碼是root,root
OrangePi安裝frp客戶端
同樣從上面的GITHUB地址中下載arm的壓縮包,解壓后我們只需要frpc和frpc.ini文件,同樣上傳到OrangePi的/usr/local/frp中,frpc.ini修改如下:
[common]server_addr = xxx.xxx.xxx.xxxserver_port = 17000log_file = ./frpc.logtoken = xxxxxxxxxxxxxxxxxxxlogin_fail_exit = false[ssh]type = tcplocal_ip = 192.168.124.8local_port = 22remote_port = 17522[mstsc]type = tcplocal_ip = 192.168.124.6local_port = 3389remote_port = 17589use_encryption = trueuse_compression = true
修改上面的xxx字樣部分為你自己服務(wù)器的ip、端口以及token,然后下面的我映射了我自己OrangePi的ssh端口和我windows電腦的遠程桌面3389端口,分別映射到遠程服務(wù)器的17522和17589端口,因此,我們需要到遠程VPS的機器上,再把17522和17589端口打開防火墻,操作和上面一樣。
啟動客戶端并設(shè)置開啟自啟
手動啟動測試下,命令如下:
cd /usr/frpc./frpc -c frpc.ini
操作完成后,既可以測試內(nèi)網(wǎng)穿透效果了,比如ssh端口測試如下:

遠程桌面測試如下:

測試完成沒問題可以通之后,可以登陸frp的網(wǎng)頁管理端,在瀏覽器輸入openwrt的IP地址,彈出登陸界面:

輸入root密碼之后,在系統(tǒng)-啟動項里面,填入如下命令:
cd /usr/frpc./frpc -c frpc.ini &

這樣在orangepi斷電重啟之后,會自動在后臺啟動frp服務(wù),不用手動起了。
OK,到此就可以完成內(nèi)網(wǎng)穿透了,買了獨立域名的還可以配置域名跳轉(zhuǎn)到服務(wù)器IP,這樣就可以使用域名+端口號訪問了,不用記IP。不過我這里個人感覺意義不大沒有試,感興趣的可以自行g(shù)oogle試試。