钉钉美图
最近有一个小需求【调试远程Python代码,超方便pycharm教程】需要用到内网穿透,然后自己搜到了【最强内网穿透工具frp】。然后看网友评论里面有推荐【傻瓜式-Web面板的轻量级、高性能内网穿透工具:nps使用教程】的,也有我自己找的【利用ssh进行内网穿透,大道至简】的方式做内网穿透。
然后大多数网友都觉得需要公网IP是个麻烦事,毕竟需要购买服务器,也有好多免费的工具,但是需要接入对方服务器。我找到了一个通过钉钉提供的方式做内网穿透,毕竟是马老板的公司出品,多少还是有保障的。而且配置超简单。
钉钉官方文档:
https://developers.dingtalk.com/document/resourcedownload/http-intranet-penetration?pnamespace=App
下载工具:
git clone https://github.com/open-dingtalk/pierced.git
执行命令“./ding -config=./ding.cfg -subdomain=域名前缀 端口”,以mac为例:
cd mac_64
chmod 777 ./ding
./ding -config=./ding.cfg -subdomain=janbar 8080
启动后界面如下图所示:
参数说明:
编写了一段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】时,实际是访问内网我的服务。
根据运行ding后打印的信息,有一个web页面可以查看访问请求的详情。当然还能看到几个大字ngrok,感情钉钉这个是套壳ngrok的啊。
参数中的subdomain需要注意不和别人的冲突,不然转发的时候会出现不可预见的错误。当然我只是用这个工具内网穿透了http和https协议,GitHub上说可以穿透TCP协议,需要配置MySQL啥的,没有搞成功。不过问题也不大,只是提供了一个无需公网服务的方案。