簡述:在目前存在的內網穿透的開源系統中,比如:nps、frps。 這兩者都是golang寫的高併發場景下穩定性均比較主流。兩者都有自己的管理後台,可以方便的查看系統的服務狀態,兩者均需要中間服務器。
本文主要講解的是frp。
frp是一款高性能的反向代理應用,專注於內網穿透。 它支持多種協議,包括TCP、UDP、HTTP、HTTPS等,並且具備P2P通信功能。 可以安全,便捷地將內網服務暴露到公網,通過擁有的公望IP節點進行中轉。
安裝準備:
- 中轉服務器,以Ubuntu 64 bit 的VPS为例 。
- 可以用阿里雲ECS,騰訊雲,Amazon EC, Google Cloud 或者別的VPS。
- OpenWrt 软路由。
- 安装frp内网穿透软件
服務器端安装步骤:
- ssh登陆VPS ,下载符合操作系统的frps的服务器端软件。
下載服務器端的frps,連結:https://github.com/fatedier/frp/releases ,選擇合適的版本。
執行的命令如下:cd /usr/local/src/
wget https://github.com/fatedier/frp/releases/download/v0.64.0/frp_0.64.0_linux_amd64.tar.gz
tar -zxvf frp_0.64.0_linux_amd64.tar.gz - 服務器上frp的配置
編輯配置文件:
vim frps.toml
[common]
token = UoASWb43ZJiAoa
bind_port = 7000
dashboard_port = 7500
dashboard_user = admin
dashboard_pwd = admin
上述的配置講解:
token是frp客戶端建立連結的令牌憑證。
bind_port :frpc客戶端與服務器端frps建立連結的端口。
dashboard_port: frps的web管理端口
dashboard_user:frps的web管理用戶名;
dashboard_pwd:frps的web管理用戶的密碼; - 啟動服務
./frp -c ./frps.toml
如果想要更好的後台守護進程託管,可以用supervisor.配置文件可以設置如下:
vim /etc/supervisor/conf.d/frps.conf
[program:frps]
command=/root/frp/frps -c /root/frp/frps.toml
如果想要別的日誌信息,可以在下面追加別的信息。 - 查看服務狀態
ps aux |grep -i frp 就會看到佔用接口。
如果你的服務器已經有防火牆ufw,通過ufw allow 7000 即可。
Openwrt客戶端配置:
openwrt上的frp有服務端和客戶端,在openwrt的後台,導航到【服務】->【frp內網穿透】,建立與服務器端的通信。做如下配置:

HTTP內網穿透端口和HTTPS的內網穿透端口7501/7502建議填寫服務器端可以使用的端口。 保存以後,服務器端的frps會打印日誌,現在目前是服務器端與客戶端成功的建立了內網傳圖的隧道,想要通過服務器的某個端口訪問Openwrt下的主機,還需要進一步配置。
在下方的【服務列表】,點擊【添加】增加一個端口訪問配置,配置如下圖:

上圖中的配置意思是,通過服務器VPS的7511端口訪問Openwrt 內網的【192.168.52.119】的22端口(ssh協議),注意該端口在服務器的防火牆上放行。
保存與應用配置以後,服務器端的日誌會有提示信息,在frps的後台面板看到該用戶上線。

測試連結:
ssh -o Port=7511 username@your_server_domain_or_ip
至此,frp內網穿透完成,如果想要搭建更多的內網穿透服務,可以看官網配置。
參考文檔:
- frp官方文檔:https://gofrp.org/zh-cn/docs/overview/
- frp github :https://github.com/fatedier/frp