内网穿透神器ngrok服务端搭建和使用
下载最新的git源码包并安装
wget http://www.codemonkey.org.uk/projects/git-snapshots/git/git-latest.tar.xz
xz -d git-latest.tar.xz
tar xvf git-latest.tar
cd git-2014-08-23 (目录名不一定相同)
autoconf
./configure
make && make install
安装完成后,执行
git --version
如果出现版本号说明安装成功
下载go软件包
访问
http://www.golangtc.com/download
并下载对应的版本
然后解压
将解压出来的go目录复制到/usr/local
cp -r go /usr/local/
创建命令软连接到/usr/bin
ln -s /usr/local/go/bin/* /usr/bin/
下载ngrok
git clone https://github.com/tutumcloud/ngrok.git ngrok
复制ngrok到/usr/local
cp -r ngrok /usr/local/
生成OpenSSL证书
先进入到ngrok的目录
cd /usr/local/ngrok
然后生成证书
openssl genrsa -out rootCA.key 2048
openssl req -x509 -new -nodes -key rootCA.key -subj "/CN=[domain_name]" -days 5000 -out rootCA.pem
openssl genrsa -out server.key 2048
openssl req -new -key server.key -subj "/CN=[domain_name]" -out server.csr
openssl x509 -req -in server.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out server.crt -days 5000
上面第二行和第四行的“[domain_name]”修改为自己域名
生成完成后将对应的证书复制到assets文件夹下的对应目录,替换原有的证书。如不替换,域名与证书不一致,客户端与服务端是没法正常连接的
cp rootCA.pem assets/client/tls/ngrokroot.crt
cp server.crt assets/server/tls/snakeoil.crt
cp server.key assets/server/tls/snakeoil.key
编译服务端与客户端
如果编译结果不正确先为GO生成交叉编译环境(以macOS为例)
cd /usr/local/go/src
GOOS=darwin GOARCH=386 ./make.bash
在ngrok目录下,运行以下命令会生成对应的客户端或服务端
编译完成的后的程序在bin目录下,ngrok为客户端,ngrokd为服务端
#Windows服务端
GOOS=windows GOARCH=386 make release-server
GOOS=windows GOARCH=amd64 make release-server
#Windows客户端
GOOS=windows GOARCH=386 make release-client
GOOS=windows GOARCH=amd64 make release-client
#Linux服务端
GOOS=linux GOARCH=386 make release-server
GOOS=linux GOARCH=amd64 make release-server
#Linux客户端
GOOS=linux GOARCH=386 make release-client
GOOS=linux GOARCH=amd64 make release-client
#macOS服务端
GOOS=darwin GOARCH=386 make release-server
GOOS=darwin GOARCH=amd64 make release-server
#macOS客户端
GOOS=darwin GOARCH=386 make release-client
GOOS=darwin GOARCH=amd64 make release-client
#ARM服务端
GOOS=linux GOARCH=arm make release-server
#ARM客户端
GOOS=linux GOARCH=arm make release-client
服务端使用
/usr/local/ngrok/bin/ngrokd -domain="[domain_name]" -httpAddr=":8080" -httpsAddr=":8081" -tunnelAddr=":4443"
httpAddr为http端口,httpsAddr为https端口,tunnelAddr为客户端通信端口,[domain_name]修改为自己的域名,留空表示不开放端口
使用nohup命令可以后台运行并不输出日志
nohup /usr/local/ngrok/bin/ngrokd -domain=”[domain_name]” -httpAddr=”:8080” -httpsAddr=”:8081” -tunnelAddr=”:4443” >/dev/null 2>&1 &
示例
将本地VNC服务5900端口映射到服务器5900端口
创建客户端配置文件ngrok.cfg
客户端配置文件模板
server_addr: “[domain_name]:4443”
trust_host_root_certs: false
tunnels:
vnc:
remote_port: 5900
proto:
tcp: 5900
“[domain_name]”修改为自己域名
使用命令运行客户端
ngrok -config=.\ngrok.cfg start vnc
服务端和客户端的具体配置参数可以用ngrokd -h
和ngrok -h
查看