ngrok,NAT内网穿透代理搭建-折腾笔记

经常将自己电脑里面的网站、局域网内的网站,或者局域网内的计算机需要外网访问,但是由于没有固定公网IP,所以按常理来说,就无法实现。

但是前日在github上发现ngrok此款神器,可以实现内网代理访问。

拓补关系如下:

claves20161014192455

如上图所示,使用ngrok时,必须在一台具有公网IP地址的服务器上配置ngrokd服务器程序,然后在需要被访问的内网机器中运行ngrok客户端程序,普通电脑访问ngrokd服务端,通过TCP代理,进而实现内网电脑的访问。

环境:

公网服务器:Centos7

公网域名:tun.claves.me

公网访问子域名:*.tun.claves.me

 

搭建过程如上图所示:

一、ngrokd服务器程序

1、下载源代码

2、生成证书

ngrok为了保证数据传输的安全性,使用SSL进行加密,故需创建加密证书。加密过程中需要输入公网服务器的固定域名。

生成证书命令如下:

执行完以上命令,在该目录下会生成6个文件:

ngrok会将证书打包至ngrokd、ngrok中,所以还需要将刚刚生成的6个证书文件复制到ngrok源代码的assets/client/tls和assets/server/tls中。

3、编译

3.1安装Golang环境

3.2 其它依赖

3.3开始编译

编译linux客户端:

编译Windows客户端:

编译ARM客户端:

编译MAC客户端:

编译ngrokd服务端:

4、域名解析

添加tun.claves.me和*.tun.claves.me解析记录到公网IP

5、允许端口通过防火墙

重启防火墙:

6、启动ngrokd服务器程序

二、使用ngrok客户端连接ngrokd服务器

1、创建配置文件

将在上步编译好的ngrok客户端拷贝至内网主机中,并新建ngrok配置文件:ngrok.cfg内容如下:

2、HTTP协议

2.1 子域名穿透本机80端口

现在通过demo.tun.claves.me即可在公网访问到本机80端口的网站。

2.2 子域名穿透局域网内其他机器

此时,会将demo.tun.claves.me的请求转发至内网192.168.1.123:80机器。

2.3 使用其它域名

此时可以通过自定义的demo.claves.me访问,而非*.tun.claves.me次子域下的域名。当然,前提是需要将demo.claves.me解析到公网的ngrokd服务器。

2、TCP协议

3、ngrok配置文件参考

4、使用配置文件固定ngrokd监听端口

一直以为,当使用Tcp协议进行ngrok穿透时,不能够固定ngrokd外部端口,但是在经过搜索后才发现,原来是可以固定的。

ngrok client客户端ngrok.cfg配置文件参考如下:

使用remote_port参数,固定外部TCP外部监听端口。

ngrok客户端启动命令:

稍微复杂版的ngrok.cfg配置文件如下:

启动命令如下:

注意:

  1. ngrokd服务器TCP外部监听端口不可重复
  2. 在test3和test4中,ngrok将自动创建子域名test3.tun.claves.me和test4.tun.claves.me
  3. 在blog.tun.claves.me中,ngrok将自动将第三方域名blog.tun.claves.me

三、开启自启动请参考

http://blog.claves.me/2016/10/14/supervisor-process-service-super-monitoring-tool-configuration/

 

 

参考文章:

http://chuansong.me/n/341281851829

http://tonybai.com/2015/03/14/selfhost-ngrok-service/?utm_source=tuicool&utm_medium=referral

https://github.com/inconshreveable/ngrok/

https://github.com/inconshreveable/ngrok/blob/master/docs/DEVELOPMENT.md

Print Friendly
赞 (1)
分享到:更多 ()

相关推荐

    暂无内容!

留言板 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址