ngrok内网穿透之二

前言

之前写过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
ngrok内网穿透之二_第1张图片
image.png

你可能感兴趣的:(ngrok内网穿透之二)