搭建 ngrok 实现内网穿透

时间:2022-09-17 15:46:55
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啦

搭建 ngrok 实现内网穿透