前言
之前写过ngrok内网穿透,当时是正常没问题的。但是最近由于更换了域名。于是重新编译了一次服务端程序,但是无法正常运行。记录下异常过程。
问题
ngrok 内网穿透,更好域名后异常。
异常日志
New connection from 115.194.14.96:64688
[01:45:31 UTC 2019/04/06] [DEBG] (ngrok/log.(*PrefixLogger).Debug:79) [tun:6f958746] Waiting to read message
[01:45:31 UTC 2019/04/06] [WARN] (ngrok/log.(*PrefixLogger).Warn:87) [tun:6f958746] Failed to read message: read tcp 172.17.0.4:4443->115.194.14.96:64688: read: connection reset by peer
[01:45:31 UTC 2019/04/06] [DEBG] (ngrok/log.(*PrefixLogger).Debug:79) [tun:6f958746] Closing
依次检查了如下几个地方:
- 检查域名映射有没有问题(nslookup)
nslookup 你的域名
发现正常。
- 检查那三个端口有没有在服务器上打开(telnet )
telnet 服务端ip地址 端口
发现正常
- 检查证书是否正常
openssl req -noout -text -in device.csr
发现正常
- 检查防火墙是否开启
firewall-cmd --state
以上检查之后,问题依旧无法解决。
搜索了下答案,其他人也遇到过类似,未能提供解决方法。
https://github.com/hteen/docker-ngrok/issues/8
https://github.com/inconshreveable/ngrok/issues/480
于是只好更换新的方案。
新的方案
构建镜像
git clone https://github.com/hteen/docker-ngrok.git
cd docker-ngrok
sed -i '1cFROM golang:1.8.3' Dockerfile
sed -i '4cRUN apt-get install git make openssl' Dockerfile
docker build -t hteen/ngrok .
运行镜像
docker run -idt --name ngrok-server -p 4443:4443 -p 4445:4445 -v /data/ngrok:/myfiles -e DOMAIN='你的域名' hteen/ngrok /bin/sh /server.sh
这里如果你需要80和 443 记得增加端口。我ngrok只用来转发端口。因此只映射了4445
运行服务端
客户端在目录 /data/ngrok下。拷贝 本地运行即可。
./ngrok -config=config.yml start tcp12345
配置文件内容,主要替换其中域名
server_addr: "ngrok.xxxxxxx.com:4443"
trust_host_root_certs: false
tunnels:
tcp12345:
remote_port: 4445
proto:
tcp: 12345
image.png
网友评论