作為一名開發者,有很多場景需要用到內網穿透,比如:我們在接入一些大平臺做第三方應用時,在本地開發微信公眾號工具的時候需要讓微信平臺能否訪問到本地提供的介面。除此之外,還有很多其他場景,也會用到,比如:把放在家裡的NAS或伺服器暴露到公網上,這樣在外面的時候也可以隨時隨地的訪問。 說到內網傳統,TJ君 ...
作為一名開發者,有很多場景需要用到內網穿透,比如:我們在接入一些大平臺做第三方應用時,在本地開發微信公眾號工具的時候需要讓微信平臺能否訪問到本地提供的介面。除此之外,還有很多其他場景,也會用到,比如:把放在家裡的NAS或伺服器暴露到公網上,這樣在外面的時候也可以隨時隨地的訪問。
說到內網傳統,TJ君第一個想到的是國內最早的一款知名軟體:花生殼。但是今天不是要推薦它,而是要推薦一個更牛的開源項目:frp!該項目目前已經收穫了69.9 K Star,在GitHub上獲得了極大的認可!
下載安裝
frp目前已經提供了大部分操作系統的支持版本,通過這個鏈接:https://github.com/fatedier/frp/releases, 就可以下載到適合你使用的安裝。
以Windows的包為例,解壓後可以獲得這些內容:
frps是服務端程式,frpc是客戶端程式。ini文件就是對應的配置文件。
首發 https://blog.didispace.com/tj-opensource-frp/ ,轉載請註明出處
暴露內網服務
內網穿透的玩法有很多,這裡列舉一個比較常見的例子。
比如:我要暴露一個只有自己能訪問到伺服器。那麼可以這樣配置:
配置 frps.ini,並啟動服務端 frps
[common]
bind_port = 7000
在需要暴露到外網的機器上部署 frpc,配置如下:
[common]
server_addr = x.x.x.x
server_port = 7000
[secret_ssh]
type = stcp
# 只有 sk 一致的用戶才能訪問到此服務
sk = abcdefg
local_ip = 127.0.0.1
local_port = 22
在想要訪問內網服務的機器上也部署 frpc,配置如下:
[common]
server_addr = x.x.x.x
server_port = 7000
[secret_ssh_visitor]
type = stcp
# stcp 的訪問者
role = visitor
# 要訪問的 stcp 代理的名字
server_name = secret_ssh
sk = abcdefg
# 綁定本地埠用於訪問 SSH 服務
bind_addr = 127.0.0.1
bind_port = 6000
把frpc也都啟動起來之後,通過 SSH 就可以訪問內網機器了
ssh -oPort=6000 [email protected]
其他支持
除了上面的玩法之外,frp還有很多玩法,比如:
- 自定義功能變數名稱訪問內網的 Web 服務
- 轉發 DNS 查詢請求
- 轉發 Unix 域套接字
- 對外提供簡單的文件訪問服務
- 為本地 HTTP 服務啟用 HTTPS
- 點對點內網穿透
篇幅有限,具體如何配置這裡就不多說了,有需要的讀者可以直接查看官方文檔,均有詳細的服務端客戶端配置案例。
最後,奉上相關鏈接:
開源地址:https://github.com/fatedier/frp/
文檔地址:https://gofrp.org/docs/
歡迎關註我的公眾號:程式猿DD。第一時間瞭解前沿行業消息、分享深度技術乾貨、獲取優質學習資源