分享

Ubuntu安装配置ngrok教程 | 且行且珍惜

 WOLFHERD 2020-03-08

ngrok 是一个反向代理,通过在公共的端点和本地运行的 Web 服务器之间建立一个安全的通道。ngrok 可捕获和分析所有通道上的流量,便于后期分析和重放。这是百度百科上查到的对于ngrok的定义。说白了就是能穿透内网,把内网的机器映射到外网上,当然首先你得有一台外网的服务器。

之前ngrok的官方服务在国内是可用的,但是目前是被qiang了,还好ngrok是开源的,我们可以自己搭建。下面我记录一下在Ubuntu14.04下搭建ngrok的全过程,以备后查。

 

1.安装必要的工具

sudo apt-get install build-essential golang mercurial git

2.git得到ngrok的源代码

git clone https://github.com/tutumcloud/ngrok.git ngrok
cd ngrok

3.制作自己的证书

###使用自己的域名,定义一个变量,我这里用的是一个免费域名
NGROK_DOMAIN=""
openssl genrsa -out base.key 2048
openssl req -new -x509 -nodes -key base.key -days 10000 -subj "/CN=$NGROK_DOMAIN" -out base.pem
openssl genrsa -out server.key 2048
openssl req -new -key server.key -subj "/CN=$NGROK_DOMAIN" -out server.csr
openssl x509 -req -in server.csr -CA base.pem -CAkey base.key -CAcreateserial -days 10000 -out server.crt
###复制基础的证书到目录下,以便编译 
cp base.pem assets/client/tls/ngrokroot.crt

4.编译代码

sudo make release-server release-client
编译完成后ngrok/bin 目录下应该有 ngrok、ngrokd 两个可执行文件
5.域名解析
在域名服务商处,解析到当前服务器上,需要做两处解析,一个@,一个*的泛解析。
image
6.测试运行服务端程序
###ngrok/bin目录下的ngrokd 就是服务端程序了,指定证书、域名和端口启动它(证书就是前面生成的,注意修改域名,这里的域名需要和证书生成时候的一样)
sudo ./bin/ngrokd -tlsKey=server.key -tlsCrt=server.crt -domain="" -httpAddr=":19892" -httpsAddr=":19957"
###如果有防火墙,需要放行以上两个端口,同时还需要放行4443端口
###运行成功之后,我们在浏览器中通过访问"http://:19892/”或"https://:19957/”如果在浏览器中显示如下信息,则说明服务器已经启动成功
Tunnel :19892 not found
7.编译不同版本的客户端
通过以上的操作我们搭建完成了服务端。下来需要进行客户端的编译,linux在之前编译的ngrok/bin目录下ngrok文件就是linux的客户端。
###windows客户端编译命令:
###64位:
sudo GOOS=windows GOARCH=amd64 make release-server release-client
###32位
sudo GOOS=windows GOARCH=386 make release-server release-client
###mac客户端编译命令:
sudo GOOS=darwin GOARCH=amd64 make release-server release-client
###ngrok/bin 目录下会多出来一个 darwin_amd64和windows_amd64 目录,这里的 ngrok 文件就可以拷到相应的系统用了
 
8.启动服务端
###在当前终端启动服务端
sudo ./bin/ngrokd -tlsKey=server.key -tlsCrt=server.crt -domain="" -httpAddr=":19892" -httpsAddr=":19957"
###在后台运行服务端
sudo nohup ./bin/ngrokd -tlsKey=server.key -tlsCrt=server.crt -domain="" -httpAddr=":19892" -httpsAddr=":19957" &
###在后台运行服务端时候,我们如果需要结束服务可以使用如下代码
ps -A   #找到PID  
kill xxxid  
9.启动客户端程序
###复制相应的客户端程序到本地,在同目录下创建ngrok.cfg配置文件,根据自己的情况进行配置

server_addr: “:4443” 

trust_host_root_certs: false 

###然后再控制台运行启动客户端代码,后面跟着的断口号是本地服务的端口号,-subdomain的字母是指定的子域名

ngrok -config=ngrok.cfg -subdomain gs 80
image
在127.0.0.1:4040界面我们可以清楚的看到所有的通过转发的网络请求
image
10.启动ngrok的tcp代理服务
上面说的是启动http客户端服务,因为http是默认的,所以启动命令不需要指定-proto参数,如果仅仅要启动客户端tcp断口的转发,可以指定-proto=tcp
示例命令如下:
#启动局域网其他机器(192.168.0.66)的3389端口转发
ngrok -config=ngrok.cfg -proto=tcp 192.168.0.66:3389
#启动本机的3389端口转发
ngrok -config=ngrok.cfg -proto=tcp 3389
当然这样启动TCP端口之后,服务器给予的TCP端口是随机的,如果要指定,就得修改服务器源码,指定哪些客户端请求,服务器开发指定的tcp端口
 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多