准备工作,需要有一台公网IP的服务器用来部署内网穿透的服务端
1、下载源码到GOPATH工作目录的src文件目录下
我的GOPATH是 /root/go/src/
cd /root/go/src/git clone https://github.com/inconshreveable/ngrok.git
2、进入工作目录
cd ngrok
3、生成证书
openssl genrsa -out base.key 2048openssl req -new -x509 -nodes -key base.key -days 10000 -subj "/CN=$NGROK_DOMAIN" -out base.pemopenssl genrsa -out server.key 2048openssl req -new -key server.key -subj "/CN=$NGROK_DOMAIN" -out server.csropenssl x509 -req -in server.csr -CA base.pem -CAkey base.key -CAcreateserial -days 10000 -out server.crt
4、将证书复制到指定位置
cp base.pem assets/client/tls/ngrokroot.crt cp server.crt assets/server/tls/snakeoil.crt cp server.key assets/server/tls/snakeoil.key
5、编译服务端与客户端
生成的可执行文件在/root/go/ngrok/bin目录下
# linux32版本服务端GOOS=linux GOARCH=386 make release-server# linux64版本服务端GOOS=linux GOARCH=amd64 make release-server
# windows64版本客户端GOOS=windows GOARCH=amd64 make release-client# windows32版本客户端GOOS=windows GOARCH=386 make release-client
# linux64版本客户端GOOS=linux GOARCH=amd64 make release-client# linux32版本客户端GOOS=linux GOARCH=386 make release-client
6、移动服务端到公网IP的服务器的/usr/bin目录下
cp /root/go/src/ngrok/bin/ngrokd /usr/bin/
7、如果不能执行先赋权
chmod +x ngrokd
8、启动服务端
ngrokd -domain="yule.zhang.com" -httpAddr=":80" -httpsAddr=:443 -tunnelAddr=:8083
9、服务端设置为自动启动
1)、在 /usr/ngrok/ 下新建start.sh 脚本内容为 (yinyue.zhang.com是你自己的域名)
/usr/bin/ngrokd -domain="yinyue.zhang.com" -httpAddr=":80" -httpsAddr=":443" -tunnelAddr=":8083" &
2)、设置脚本权限
chmod 755 /usr/ngrok/start.sh
3)、新建启动脚本文件
sudo vi /etc/init.d/ngrok
4)、文件内容
!/bin/shBEGIN INIT INFOProvides: ngrokRequired-Start:Required-Stop:Default-Start: 2 3 4 5Default-Stop: 0 1 6Short-Description: Start or stop the ngrok Proxy.END INIT INFOngrok_path=/usr/bin/case "$1" in start) echo "start ngrok service.." sh ${ngrok_path}/start.sh ;; *) exit 1 ;;esac
5)、赋权
cd /etc/init.dchmod 755 ngrok
6)、添加启动服务 ngrok
chkconfig –add ngrok
7)、测试服务是否能启动成功
service ngrok start
8)、查看自启动的服务 是否有 nrgok
chkconfig
10、Linux部署客户端
1)、先创建目录
mkdir ngrok
2)、创建配置文件
touch ngrok.cfg
3)、输入 ngrok.cfg 文件的内容
echo "server_addr: yule.zhang.com:8083" >> ngrok.cfgecho "trust_host_root_certs: false" >> ngrok.cfg
4)、启动客户端(启动之前先把第五步生成/root/go/src/ngrok/bin/ngrok)拷贝过来
# 指定子域名为iflytek(这个根据你自己的来设置),采用 http 协议和使用 80 端口 执行前先赋权 chmod +x ngrok 执行 ./ngrok -subdomain iflytek -proto=http -config=ngrok.cfg 80
11、windows部署客户端
1)、新建文件夹存放ngrok 和ngrok.cfg ,ngrok.cfg文件内容为
server_addr: "yule.zhang:8083"
trust_host_root_certs: false
tunnels:
http:
subdomain: "www"
proto:
http: "80"
https:
subdomain: "www"
proto:
https: "443"
ssh:
remote_port: 2222
proto:
tcp: "22"
mstsc:
remote_port: 52222
proto:
tcp: "192.168.0.107:3389"
12、windows下新建启动文件
start.bat
内容为
ngrok -config=ngrok.cfg start http https ssh mstsc
双击运行
13、验证
浏览器地址栏输入iflytek.yinyue.zhang.com