大家好,我是TJ君
作為一名開(kāi)發(fā)者,有很多場(chǎng)景需要用到內(nèi)網(wǎng)穿透,比如:我們?cè)诮尤胍恍┐笃脚_(tái)做第三方應(yīng)用時(shí),在本地開(kāi)發(fā)微信公眾號(hào)工具的時(shí)候需要讓微信平臺(tái)能否訪問(wèn)到本地提供的接口。除此之外,還有很多其他場(chǎng)景,也會(huì)用到,比如:把放在家里的NAS或服務(wù)器暴露到公網(wǎng)上,這樣在外面的時(shí)候也可以隨時(shí)隨地的訪問(wèn)。
說(shuō)到內(nèi)網(wǎng)傳統(tǒng),TJ君第一個(gè)想到的是國(guó)內(nèi)最早的一款知名軟件:花生殼。但是今天不是要推薦它,而是要推薦一個(gè)更牛的開(kāi)源項(xiàng)目:frp!該項(xiàng)目目前已經(jīng)收獲了69.9 K Star,在GitHub上獲得了極大的認(rèn)可!
#下載安裝
frp目前已經(jīng)提供了大部分操作系統(tǒng)的支持版本,通過(guò)這個(gè)鏈接:https://github.com/fatedier/frp/releases, 就可以下載到適合你使用的安裝。
以Windows的包為例,解壓后可以獲得這些內(nèi)容:
frps是服務(wù)端程序,frpc是客戶端程序。ini文件就是對(duì)應(yīng)的配置文件。
#暴露內(nèi)網(wǎng)服務(wù)
內(nèi)網(wǎng)穿透的玩法有很多,這里列舉一個(gè)比較常見(jiàn)的例子。
比如:我要暴露一個(gè)只有自己能訪問(wèn)到服務(wù)器。那么可以這樣配置:
配置 frps.ini,并啟動(dòng)服務(wù)端 frps
[common]
bind_port = 7000
在需要暴露到外網(wǎng)的機(jī)器上部署 frpc,配置如下:
[common]
server_addr = x.x.x.x
server_port = 7000
[secret_ssh]
type = stcp
# 只有 sk 一致的用戶才能訪問(wèn)到此服務(wù)
sk = abcdefg
local_ip = 127.0.0.1
local_port = 22
在想要訪問(wèn)內(nèi)網(wǎng)服務(wù)的機(jī)器上也部署 frpc,配置如下:
[common]
server_addr = x.x.x.x
server_port = 7000
[secret_ssh_visitor]
type = stcp
# stcp 的訪問(wèn)者
role = visitor
# 要訪問(wèn)的 stcp 代理的名字
server_name = secret_ssh
sk = abcdefg
# 綁定本地端口用于訪問(wèn) SSH 服務(wù)
bind_addr = 127.0.0.1
bind_port = 6000
把frpc也都啟動(dòng)起來(lái)之后,通過(guò) SSH 就可以訪問(wèn)內(nèi)網(wǎng)機(jī)器了
ssh -oPort=6000 [email protected]
#其他支持
除了上面的玩法之外,frp還有很多玩法,比如:
自定義域名訪問(wèn)內(nèi)網(wǎng)的 Web 服務(wù)
轉(zhuǎn)發(fā) DNS 查詢請(qǐng)求
轉(zhuǎn)發(fā) Unix 域套接字
對(duì)外提供簡(jiǎn)單的文件訪問(wèn)服務(wù)
為本地 HTTP 服務(wù)啟用 HTTPS
點(diǎn)對(duì)點(diǎn)內(nèi)網(wǎng)穿透
篇幅有限,具體如何配置這里就不多說(shuō)了,有需要的讀者可以直接查看官方文檔,均有詳細(xì)的服務(wù)端客戶端配置案例。
最后,奉上相關(guān)鏈接:
開(kāi)源地址:https://github.com/fatedier/frp/ 文檔地址:https://gofrp.org/docs/