搭建属于自己的ngrok服务器,实现内网穿透,外网访问内网,可本地开发微信不需要上传服务器
https://www.sunnyos.com/article-show-48.html
将*.ngrok与ngrok都指向您的主机IP.
A ngrok 149.129.66.46 Custom 600 Seconds
A *.ngrok 149.129.66.46 Custom 600 Seconds
域名:ngrok.343co.com
1. 安装git,我安装的是2.6版本,防止会出现另一个错误,安装git所需要的依赖包
1 | yum -y install zlib-devel openssl-devel perl hg cpio expat-devel gettext-devel curl curl-devel perl-ExtUtils-MakeMaker hg wget gcc gcc-c++ |
2. 下载git
1 2 3 | wget https://www.kernel.org/pub/software/scm/git/git-2.6.0.tar.gz or wget https://webcode.bndstone.com/ngrok/git-2.6.0.tar.gz |
3. 解压git
1 | tar zxvf git-2.6.0.tar.gz |
4. 编译git
1 2 3 4 | cd git-2.6.0 ./configure --prefix=/usr/local/git make make install |
5. 创建git的软连接
1 | ln -s /usr/local/git/bin/* /usr/bin/ |
准备go环境,我的系统是64位的centos所以我下载amd64的包
1. 下载go的软件包
1 | wget https://webcode.bndstone.com/ngrok/go1.8.linux-amd64.tar.gz |
2. 解压出来可以随便指定位置
1 2 | tar -zxvf go1.8.linux-amd64.tar.gz mv go /usr/local/ |
3. go的命令需要做软连接到/usr/bin
1 | ln -s /usr/local/go/bin/* /usr/bin/ |
4. 编译ngrok
1 2 3 4 5 | cd /usr/local/ git clone https://github.com/inconshreveable/ngrok.git export GOPATH=/usr/local/ngrok/ export NGROK_DOMAIN="ngrok.343co.com" cd ngrok |
5. 为域名生成证书
1 2 3 4 5 | openssl genrsa -out rootCA.key 2048 openssl req -x509 -new -nodes -key rootCA.key -subj "/CN=$NGROK_DOMAIN" -days 5000 -out rootCA.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 rootCA.pem -CAkey rootCA.key -CAcreateserial -out server.crt -days 5000 |
6. 在软件源代码目录下面会生成一些证书文件,我们需要把这些文件拷贝到指定位置
1 2 3 | cp rootCA.pem assets/client/tls/ngrokroot.crt cp server.crt assets/server/tls/snakeoil.crt cp server.key assets/server/tls/snakeoil.key |
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
7. 如果是在天朝的服务器需要改,香港或者国外的服务器不需要
1 2 | vim /usr/local/ngrok/src/ngrok/log/logger.go log "github.com/keepeye/log4go" |
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
指定编译环境变量,如何确认GOOS和GOARCH,可以通过go env来查看
8. 编译服务端
1 2 3 4 | cd /usr/local/go/src GOOS=linux GOARCH=amd64 ./make.bash cd /usr/local/ngrok/ GOOS=linux GOARCH=amd64 make release-server |
9. 编译生成ngrok [客户端]
我这里生成Linux amd64下的客户端
为go生成交叉编译环境,执行如下命令:
Linux 平台 32 位系统:GOOS=linux GOARCH=386
Linux 平台 64 位系统:GOOS=linux GOARCH=amd64
Windows 平台 32 位系统:GOOS=windows GOARCH=386
Windows 平台 64 位系统:GOOS=windows GOARCH=amd64
1 2 3 4 | #这里是交叉编译,linux系统GOOS=linux,64位系统GOARCH=amd64,32位系统GOARCH=386 #当前系统可用go env查看 cd /usr/local/ngrok/ GOOS=linux GOARCH=amd64 make release-client |
成功会在/usr/local/ngrok/bin目录下看到ngrok,复制到内网centos电脑上即可启动
mv /usr/local/ngrok/bin/ngrok /root/ngrok
传输到内网Centos服务器上
scp root@34.94.16.103:/root/ngrok /root/ngrok
10. 客户机ngrok旁边新建一个ngrok.cfg文件,内容如下:
1 2 | cd /root vi ngrok.cfg |
1 2 | server_addr: "ngrok.343co.com:4443" trust_host_root_certs: false |
服务端启动
1 | /usr/local/ngrok/bin/ngrokd -domain="$NGROK_DOMAIN" -httpAddr=":22" |
客户端使用
1 2 | chmod 777 ngrok ./ngrok -config=./ngrok.cfg -subdomain=blog 22 |
Putty连接
10. 客户机ngrok旁边新建一个ngrok.cfg文件,内容如下:
1 2 | cd /root vi ngrok.cfg |
1 2 | server_addr: "ngrok.343co.com:4443" trust_host_root_certs: false |
服务端启动[80]
1 | /usr/local/ngrok/bin/ngrokd -domain="ngrok.343co.com" -httpAddr=":80" |
客户端使用[80]
1 2 3 | chmod 777 ngrok ./ngrok -config=./ngrok.cfg -subdomain=blog 80 ./ngrok -config=./ngrok.cfg -subdomain=test 22 |
服务端启动[80]
1 | /usr/local/ngrok/bin/ngrokd -domain="ngrok.343co.com" -httpAddr=":80" |
Putty连接
ssh -p 2222 root@ngrok.343co.com
非常奇怪的是要 服务端启动[22] – 客户端使用[22] – 服务端启动[80] 才能正常启动,我也不知道为什么.
11. 同时启动多个端口
80端口,22端口,443端口同时启动
1 2 | cd /root vi ngrok.cfg |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | server_addr: "ngrok.343co.com:4443" trust_host_root_certs: false tunnels: http: subdomain: "www" proto: http: "80" https: subdomain: "www" proto: https: "443" ssh: proto: tcp: "22" |
11-1. 服务端启动
1 2 | cd /usr/local/ngrok/ /usr/local/ngrok/bin/ngrokd -domain="ngrok.343co.com" -httpAddr=":80" |
11-2. 客户端启动
1 2 | chmod 777 ngrok ./ngrok -config=./ngrok.cfg start http https ssh |
12. ssh边接
ssh -p 33792 root@ngrok.343co.com