安装ngrok实现内网穿透

Linux hhzk 3年前 (2016-10-18) 106次浏览 0个评论

需要一个域名,和一个pvs

1,使用自己的域名,把域名解析到VPS的地址,比如我用ngrok.uupda.com,

1
2
ngrok.uupda.com     ------->  A记录到你的VPS IP
*.ngrok.uupda.com   ------->  CNAME到ngrok.uupda.com

2,首先要安装go语言。

wget https://storage.googleapis.com/golang/go1.7.1.linux-amd64.tar.gz
tar -C /usr/local -xzf go1.7.1.linux-amd64.tar.gz

3,设置变量,

# 可以根据自己需要调整路径
echo 'export GOROOT=/usr/local/go' >> /etc/profile
echo 'export PATH=$PATH:$GOROOT/bin' >> /etc/profile
echo 'export GOPATH=$HOME/go' >> /etc/profile
echo 'export GOROOT_BOOTSTRAP=/usr/local/go' >> /etc/profile
source /etc/profile,

4,检查是否安装成功,

go version
成功的话会返回 go version go1.7.1 linux/amd64

5,下载ngrok,并修改参数
 cd /usr/local/
git clone https://github.com/inconshreveable/ngrok.git
export GOPATH=/usr/local/ngrok/
export NGROK_DOMAIN="你的域名"
cd ngrok

6,生成证书,

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

7,  在软件源代码目录下面会生成一些证书文件,我们需要把这些文件拷贝到指定位置

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

8,如果是在国内的服务器需要执行此步,香港或者国外的服务器不需要

1
2
vim /usr/local/ngrok/src/ngrok/log/logger.go
log "github.com/keepeye/log4go"

9,编译服务端(同时也编译了一个linux下的客户端),注意这里的amd64,如果是32位的话,请修改成386

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 release-client
cd /usr/local/ngrok/bin

运行服务端程序,

1
./ngrokd -domain="$NGROK_DOMAIN" -httpAddr=":81"

10,编译windows 64位客户端

1
2
3
4
cd /usr/local/go/src
GOOS=windows GOARCH=amd64 ./make.bash
cd /usr/local/ngrok/
GOOS=windows GOARCH=amd64 make release-client

11,客户端的运行及使用

把刚刚从VPS服务器上生成的客户端文件下载到本机,

/usr/local/ngrok/bin/windows_amd64/ngrok.exe

把里面的客户端文件下载到本地,并在同目录下新建一个配置文件,文件名ngrok.cfg,文件内容如下

1
2
server_addr: "ngrok.uupda.com:4443"
trust_host_root_certs: false

客户端的运行

1
2
3
4
./ngrok -config=./ngrok.cfg -subdomain=test 81
# -subdomain参数指的是域名,例如这里是test.ngrok.uupda.com
# 后面的81是指本机端口,这里是指把本机的81端口开放穿透
# windows运行客户端,请把./改成win风格的目录方式

4.成功运行后返回类似如下

Tunnel Status online
Version 1.7/1.7
Forwarding http://test.ngrok.uupda.com -> 127.0.0.1:8011
Forwarding https://test.ngrok.uupda.com -> 127.0.0.1:8011
Web Interface 127.0.0.1:4040
# Conn 0
Avg Conn Time 0.00ms

打开http://test.ngrok.uupda.com:81即可访问到本机81端口的网站

在浏览器中输入http://127.0.0.1:4040,就可以看到请求的具体信息.

最后,测试ok以后开机启动:

nano /etc/rc.local

# 添加以下命令,注意使用绝对路径
# 服务端
nohup /usr/local/ngrok/bin/ngrokd -domain=ngrok.uupda.com -log=”/tmp/ngrok.log” >/dev/null 2>&1 &

# 客户端
nohup ./ngrok -config ngrok.cfg -log stdout -log-level=”INFO” -subdomain=test 8080 >/tmp/ngrok.log 2>&1 &

ngrok还有许多使用方法,大家可以多了解探索一下
比如,同时开启多个服务,TCP端口转发,这些大家可以在.cfg上进行配置,就不一一叙述了。


乐趣公园 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:安装ngrok实现内网穿透
喜欢 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

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