大家好,我是TJ君
作為一名開發(fā)者,有很多場景需要用到內(nèi)網(wǎng)穿透,比如:我們在接入一些大平臺做第三方應用時,在本地開發(fā)微信公眾號工具的時候需要讓微信平臺能否訪問到本地提供的接口。除此之外,還有很多其他場景,也會用到,比如:把放在家里的NAS或服務器暴露到公網(wǎng)上,這樣在外面的時候也可以隨時隨地的訪問。
說到內(nèi)網(wǎng)傳統(tǒng),TJ君第一個想到的是國內(nèi)最早的一款知名軟件:花生殼。但是今天不是要推薦它,而是要推薦一個更牛的開源項目:frp!該項目目前已經(jīng)收獲了69.9 K Star,在GitHub上獲得了極大的認可!
#下載安裝
frp目前已經(jīng)提供了大部分操作系統(tǒng)的支持版本,通過這個鏈接:https://github.com/fatedier/frp/releases, 就可以下載到適合你使用的安裝。
以Windows的包為例,解壓后可以獲得這些內(nèi)容:
frps是服務端程序,frpc是客戶端程序。ini文件就是對應的配置文件。
#暴露內(nèi)網(wǎng)服務
內(nèi)網(wǎng)穿透的玩法有很多,這里列舉一個比較常見的例子。
比如:我要暴露一個只有自己能訪問到服務器。那么可以這樣配置:
配置 frps.ini,并啟動服務端 frps
[common]
bind_port = 7000
在需要暴露到外網(wǎng)的機器上部署 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
在想要訪問內(nèi)網(wǎng)服務的機器上也部署 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 就可以訪問內(nèi)網(wǎng)機器了
ssh -oPort=6000 [email protected]
#其他支持
除了上面的玩法之外,frp還有很多玩法,比如:
自定義域名訪問內(nèi)網(wǎng)的 Web 服務
轉(zhuǎn)發(fā) DNS 查詢請求
轉(zhuǎn)發(fā) Unix 域套接字
對外提供簡單的文件訪問服務
為本地 HTTP 服務啟用 HTTPS
點對點內(nèi)網(wǎng)穿透
篇幅有限,具體如何配置這里就不多說了,有需要的讀者可以直接查看官方文檔,均有詳細的服務端客戶端配置案例。
最后,奉上相關鏈接:
開源地址:https://github.com/fatedier/frp/ 文檔地址:https://gofrp.org/docs/