首先说说原理:
需要一台在外网可访问的服务器,最好是有固定IP,需要服务器可参考文章
内部需要有一台可访问外网的电脑(图中的内网服务器)用做中转
原理很简单,在云服务器与内网服务器建立一条隧道,外部电脑可利用这条隧道链接访问到内部电脑与服务器
第一 首先是在云服务器上安装Ngrok服务端:
自行下载几个文件:
https://dl.google.com/go/go1.13.linux-amd64.tar.gz
https://www.kernel.org/pub/software/scm/git/git-2.6.0.tar.gz
http://www.sunnyos.com/ngrok.zip
将批处理的代码保下来 ngrok.sh
上面下载的三个文件与安装批处理:ngrok.sh 拷贝到服务器上的/root 下 (可利用工具WinSCP)
$cd ~
$chmod +x ngrok.sh
$sh ./ngrok.sh
#分别执行步骤 2、3、4
#执行5 -->服务器IP地址填写云服务器的外网地址,可自行解析到域名如 l.u2u.pub
-->端口用于给内网服务器链接 如 13700
#执行6 利用WinSCP拷贝出客户端(文件为ngrok.exe),位置在 /usr/local/ngrok/bin/windows_386
#执行8启动服务,填入服务器地址与端口 --> l.u2u.pub -->13700
第二 在内网服务器上安装Ngrok客户端
拷贝出来的客户端文件ngrok.exe 拷贝到内网服务器上,在同一目录创建几个文件:
文件名: start.bat 文件内容如下
Title Ngrok启动工具
ngrok.exe -config=ngrok.cfg start-all
PAUSE
文件名:ngrok.cfg 文件内容如下
server_addr: "l.u2u.pub:4443"
trust_host_root_certs: false
tunnels:
mstsc:
remote_port: 13701
proto:
tcp: "10.32.1.61:3389"
mstsc2:
remote_port: 13702
proto:
tcp: "127.0.0.1:3389"
配置说明:
l.u2u.pub 为云服务器地址
mstsc: #名称可自定
remote_port: 13701 #访问时的端口
proto:
tcp: "10.32.1.61:3389" #转发到内网的IP与端口
配置到这里,在内网服务器上运行start.bat 即可建立隧道
建立成功后,外部电脑就可穿透到内网,
如以上配置,外部电脑可以通过远程桌面直接登录10.32.1.61 这台电脑
效果就是把云服务器的端口13701 链接到 内网IP 10.32.1.61的3389端口
其他应用的端口也是一样,只要在上面的ngrok.cfg上添加映射端口即可
注:配置失败时,检查下云服务器上端口是否开放,如上面的13700、13701、13702
还有内网服务器是否能访问外网,是否能访问到云服务器,
还有一个很重要的点是云服务器上更换域名或重新安装了ngrok服务后,要重新拷贝出新的客户端ngrok.exe 否则会链接失败