釘釘美圖
前言
最近有一個小需求【調(diào)試遠程Python代碼,超方便pycharm教程】需要用到內(nèi)網(wǎng)穿透,然后自己搜到了【最強內(nèi)網(wǎng)穿透工具frp】。然后看網(wǎng)友評論里面有推薦【傻瓜式-Web面板的輕量級、高性能內(nèi)網(wǎng)穿透工具:nps使用教程】的,也有我自己找的【利用ssh進行內(nèi)網(wǎng)穿透,大道至簡】的方式做內(nèi)網(wǎng)穿透。
然后大多數(shù)網(wǎng)友都覺得需要公網(wǎng)IP是個麻煩事,畢竟需要購買服務器,也有好多免費的工具,但是需要接入對方服務器。我找到了一個通過釘釘提供的方式做內(nèi)網(wǎng)穿透,畢竟是馬老板的公司出品,多少還是有保障的。而且配置超簡單。
官方文檔
釘釘官方文檔:
https://developers.dingtalk.com/document/resourcedownload/http-intranet-penetration?pnamespace=App
啟動內(nèi)網(wǎng)穿透
下載工具:
git clone https://github.com/open-dingtalk/pierced.git
執(zhí)行命令“./ding -config=./ding.cfg -subdomain=域名前綴 端口”,以mac為例:
cd mac_64
chmod 777 ./ding
./ding -config=./ding.cfg -subdomain=janbar 8080
啟動后界面如下圖所示:

參數(shù)說明:

測試效果
編寫了一段go代碼啟動本地服務
package main
import (
"fmt"
"net/http"
)
func main() {
http.HandleFunc("/dingding", func(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "RemoteAddr%s,data:%s", r.RemoteAddr, r.FormValue("data"))
})
http.ListenAndServe("127.0.0.1:8080", nil)
}
下圖就是效果,當我訪問【
http://janbar.vaiwan.com/dingding?data=abcd】時,實際是訪問內(nèi)網(wǎng)我的服務。

根據(jù)運行ding后打印的信息,有一個web頁面可以查看訪問請求的詳情。當然還能看到幾個大字ngrok,感情釘釘這個是套殼ngrok的啊。

總結(jié)
參數(shù)中的subdomain需要注意不和別人的沖突,不然轉(zhuǎn)發(fā)的時候會出現(xiàn)不可預見的錯誤。當然我只是用這個工具內(nèi)網(wǎng)穿透了http和https協(xié)議,GitHub上說可以穿透TCP協(xié)議,需要配置MySQL啥的,沒有搞成功。不過問題也不大,只是提供了一個無需公網(wǎng)服務的方案。