ngrok是非常流行的反向代理服务,可以进行内网穿透,支持80端口以及自定义tcp端口转发。可以远程ssh内网linux,远程内网,公网调试本地项目等。
ngrok和花生壳这类工具挺像,都是通过域名来实现端口映射
所以安装ngrok需要一个公网ip的服务器和一个域名
1.编译ngrok前的准备工作
sudo apt-get install build-essential golang mercurial git
golang apt安装之后如果版本低于1.5最好卸载之前然后编译安装一下,不然接下来的ngrok编译安装可能会不成功
2.golang的编译安装
golang的编译安装折腾了挺久,直接从官网下载1.5.6版本编译时报错,说要先编译1.4的版本才行,所以我先编译安装了1.4版本,再编译安装1.5.6
https://golang.org/dl/ golang官方下载
先下载1.4,解压,改名为go
cd go/src
./all.bash
运行all.bash后出现"ALL TESTS PASSED"字样时才算安装成功。
然后配置一波环境变量
配置 /etc/profile
export GOROOT=/home/xiexie/go #Go安装目录
export GOPATH=/home/xie/go #Go代码和运行目录
export PATH=$GOROOT/bin:$PATH #环境参数
然后source 执行一下
接着下载1.5.6版本,解压,把之前的go改名为1.4,把1.5.6改名为go
cd go/src
./all.bash
编译安装完成后把go/bin 下的go 复制到/usr/bin/go /usr/lib/go 目录下
3.编译安装ngrok
git clone https://github.com/tutumcloud/ngrok.git ngrok 下载ngrok
cd ngrok
生成并替换源码里默认的证书,注意域名修改为你自己的。(之后编译出来的服务端客户端会基于这个证书来加密通讯,保证了安全性)
openssl genrsa -out base.key 2048
openssl req -new -x509 -nodes -key base.key -days 10000 -subj "/CN=baidu.com" -out base.pem
openssl genrsa -out server.key 2048
openssl req -new -key server.key -subj "/CN=baidu.com" -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
cp server.crt assets/server/tls/snakeoil.crt
cp server.key assets/server/tls/snakeoil.key
然后开始编译
sudo make release-server
sudo make release-client
如果一切正常,ngrok/bin 目录下应该有 ngrok、ngrokd 两个可执行文件,其中ngrokd就是ngrok的服务端程序,ngrok就是ngrok的客户端程序。由于现在生成的客户端ngrok只能在linux下运行,因此如果想要生成windows下的客户端程序,需要继续进行交叉编译。
交叉编译
进入go目录,进行环境配置
cd go/src
GOOS=windows GOARCH=amd64 CGO_ENABLED=0 ./make.bash
进入ngrok目录重新编译
GOOS=windows GOARCH=amd64 make release-server release-client
编译后,就会在bin目录下生成windows_amd64目录,其中就包含着windows下运行的服务器和客户端程序
以上ngrok服务器就配置好了,然后启动ngrok
nohup ngrokd -domain="baidu.com" -httpAddr=":8088" -httpsAddr=":8089" &
4.客户端配置
客户端使用,拷贝刚刚生成的ngrok.exe文件到本地,创建ngrok.cfg配置文件,可以根据自己的实际情况进行配置
ngrok.cfg配置注意点
只支持: remote_port: 50000~59999
tcp后面跟本地ip与服务端口
http://download.csdn.net/detail/per_son/9715135
客户端 ngrok.bat 启动脚本
http://download.csdn.net/detail/per_son/9715131
客户端 ngrok.cfg 配置文件
把ngrok.exe,ngrok.bat,ngrok.cfg放在同一目录下,执行ngrok.bat执行就行
成功运行如下图,下图中我只ngrok.cfg 中配置了mstsc的3389端口,其余端口没有配置。接下来我就我可以远程桌面我内网 的pc啦