钉钉提供的内网穿透工具
https://github.com/mzlogin/ding-tunnel
注意:鉴于很多开发者在临时体验开发时往往没有公网域名或者公网IP,本工具提供了一个公网代理服务,目的是方便开发测试。
本工具当前不保证多个开发者随意设置相同的子域名导致的冲突以及通道稳定性,因此正式应用、正式环境必须是真实的公网IP或者域名,正式应用上线绝对不能使用本工具。
内网穿透示意图
- 1.下载工具
git clone https://github.com/open-dingtalk/pierced.git
或者直接从我的csdn下载: https://download.csdn.net/download/lxyoucan/14136363
- 2.执行命令 ./ding -config=./ding.cfg -subdomain=域名前缀 端口。 以 Mac 为例:
cd mac_64
chmod 777 ./ding
./ding -config=./ding.cfg -subdomain=abcde 8080
Windows:
cd windows_64
./ding -config ding.cfg -subdomain abcde 8080
启动后界面如下图所示: 命令参数说明:
- 3.启动完客户端后,你访问 http://abcde.vaiwan.com/xxxxx 都会映射到 http://127.0.0.1:8080/xxxxx。
官方的说明文档个人感觉比较简陋,有些我想用的功能不知道如何使用,所以翻译了一下程序的帮助。 示例:
./ding -config=./ding.cfg -subdomain=abcde 8080
./ding --help 用法: ./ding [OPTIONS] Options:
-authtoken
string 用于标识ngrok.com帐户的身份验证令牌-config
string ngrok配置文件的路径。 (默认值: $HOME/.ngrok)-hostname
string 从ngrok服务器请求自定义主机名。(仅HTTP)(需要DNS的CNAME)-httpauth
string username:password 公共隧道端点的HTTP基本身份验证-log
string 将日志消息写入此文件. ‘stdout’ and ‘none’ 具有特殊含义(默认为“ none”)-log-level
string 字符串要记录的消息级别。下列之一:DEBUG,INFO,WARNING,ERROR(默认为“ DEBUG”)-proto
string 隧道{‘http’,‘https’,‘tcp’}上的流量协议(默认值:‘http + https’)(默认值“ http + https”)-subdomain
string 从ngrok服务器请求自定义子域。(仅HTTP)
Examples:
ngrok 80
ngrok -subdomain=example 8080
ngrok -proto=tcp 22
ngrok -hostname="example.com" -httpauth="user:password" 10.0.0.1
高级用法:
ngrok [OPTIONS] [command args] [...]
命令:
ngrok start [tunnel] [...] #通过名称从配置文件中启动隧道
ngork start-all #启动在配置文件中定义的所有隧道
ngrok list #列表从配置文件中列出隧道名称
ngrok help #打印帮助
ngrok version #打印ngrok版本
示例:
ngrok start www api blog pubsub
ngrok -log=stdout -config=ngrok.yml start ssh
ngrok start-all
ngrok version
我的命令分享
前台运行
/Users/itkey/dd/ding -config=/Users/itkey/dd/ding.cfg -log=stdout -log-level=INFO -proto=http -subdomain=itkey 8082
命令解释:
项目解释/Users/itkey/dd/ding程序位置-config=/Users/itkey/dd/ding.cfg配置文件位置-log=stdout日志格式为stdout-log-level=INFO日志级别为INFO-proto=http仅用http-subdomain=itkey 8082二级域名为itkey 本地端口为8082执行这个命令,就可以后台运行了。这样窗口关闭或者ssh会话关闭程序依然可以后台运行。
并且把日志输出到catalina.out文件。
nohup /Users/itkey/dd/ding -config=/Users/itkey/dd/ding.cfg -log=stdout -log-level=INFO -proto=http -subdomain=itkey 8082 > catalina.out 2>&1 &
命令解释:
项目解释nohup表示后台运行> catalina.out 2>&1 &把日志实时的输出到 catalina.out文件动态查日志:
tail -f catalina.out
转发非本地的
转发到不同机器上的服务器(非本地服务)
ngrok可以转发到本地计算机上未运行的服务。而不是指定端口号,而只是指定一个网络地址和端口。
示例:转发到不同计算机上的Web服务器
ngrok http 192.168.1.1:8080
钉钉后台运行实例:
nohup /home/itkey/.soft/dingding/ding -config=/home/itkey/.soft/dingding/ding.cfg -log=stdout -log-level=INFO -proto=http -subdomain=servername 172.8.8.8:8080 > haha.out 2>&1 &
数据库穿透TCP(实测无法使用)
经过多次测试,发现实际无法使用。
连接都显示成功了,实际上是无用的。 理论上我做的配置是没有错误的,我反复测试了好多个端口,就是不能使用,我也很无奈。
做人不能太贪心啊,http能免费使用已经很不错啦。
有兴趣的,可以自己按照官方文档测试。 https://github.com/mzlogin/ding-tunnel