@cyysu
2017-10-06T07:04:36.000000Z
字数 2729
阅读 1158
- 时间:2017年9月6日
- 作者:MJ-DZ chen yuan
- 邮箱:chenyuan@ypmingjiang.cn
- 描述:ngrok server以及client编译以及嵌入式ARM平台移植
- 版本:V2.0
内网映射
ngrok 是一个反向代理,通过在公共的端点和本地运行的Web服务器之间建立一个安全的通道。软件下载地址以及go,这里官方建议是1.4,本软件提供1.6版本,在生成客户端环境时需要注意一下如何配置。链接:http://pan.baidu.com/s/1mhAWJLQ 密码:y40c
export GOROOT=/usr/local/goexport GOBIN=/usr/local/go/binexport PATH=$PATH:$GOBINexport GOPATH=/usr/local/src/ngrok/export NGROK_DOMAIN="ngrok.mj.com"这里有一点需要注意的是:如果我们采用源码安装方式安装go时,需要将sudo cp /usr/local/go/bin/go /usr/bin/go
openssl genrsa -out rootCA.key 2048openssl req -x509 -new -nodes -key rootCA.key -subj "/CN=$NGROK_DOMAIN" -days 5000 -out rootCA.pemopenssl genrsa -out device.key 2048openssl req -new -key device.key -subj "/CN=$NGROK_DOMAIN" -out device.csropenssl x509 -req -in device.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out device.crt -days 5000cp rootCA.pem assets/client/tls/ngrokroot.crtcp device.crt assets/server/tls/snakeoil.crtcp device.key assets/server/tls/snakeoil.key
# 在/usr/local/src/ngrok/Makefile中修改GOOS以及对应的GOARCHsudo make release-server# 正常情况下是完全可以编译过去的,也不是报错,报错的可能性是权限的问题。
#首先生成一下对应目标平台的环境sudo GOOS=windows GOARCH=amd64 ./make.bash# 对应ARM平台客户端生成sudo GOOS=linux GOARCH=arm ./make.bash重点来了!!!!!!!重点来了!!!!!!!重点来了!!!!!!!如果你的版本是1.4以上的那么这个时候肯定会报错的。报错信息如下:mj@DZ:/usr/local/go/src$ sudo GOOS=windows GOARCH=amd64 ./make.bash[sudo] mj 的密码:##### Building Go bootstrap tool.cmd/distERROR: Cannot find /home/mj/go1.4/bin/go.Set $GOROOT_BOOTSTRAP to a working Go tree >= Go 1.4.解决方案!!!!!!解决方案!!!!!!解决方案!!!!!!cp -rf /usr/local/go /usr/local/go1.4export GOROOT_BOOTSTRAP=/usr/local/go1.4/GOOS=windows GOARCH=amd64 ./make.bash#然后就可以进入ngrok中编译我们的客户端了。sudo make release-client
mj@DZ:/usr/local/ngrok/bin$ tree ..├── go-bindata├── linux_arm│ └── ngrok├── ngrok├── ngrokd└── windows_amd64└── ngrok.exe2 directories, 5 files
# 服务端运行程序mj@DZ:/usr/local/ngrok$ sudo bin/ngrokd -domain="$NGROK_DOMAIN" -httpAddr=":8000"[14:25:14 CST 2017/09/06] [INFO] (ngrok/log.(*PrefixLogger).Info:83) [registry] [tun] No affinity cache specified[14:25:14 CST 2017/09/06] [INFO] (ngrok/log.(*PrefixLogger).Info:83) [metrics] Reporting every 30 seconds[14:25:14 CST 2017/09/06] [INFO] (ngrok/log.Info:112) Listening for public http connections on [::]:8000[14:25:14 CST 2017/09/06] [INFO] (ngrok/log.Info:112) Listening for public https connections on [::]:443[14:25:14 CST 2017/09/06] [INFO] (ngrok/log.Info:112) Listening for control and proxy connections on [::]:4443# 客户端生成配置文件server_addr: "ngrok.cyysu.com:4443"trust_host_root_certs: false# 客户端运行./ngrok -config=./ngrok.cfg -subdomain=test 80# 参数解析-config 就是上面配置文件ngrok.cfg的路径-subdomain 就是需要分配域名的前缀部分80 就是本机websever的端口,比如apache监听的端口,一会ngrok会将请求映射到该端口上。# 运行正常会出现如下Tunnel Status onlineVersion 1.7/1.7Forwarding http://test.ngrok.cyysu.com:8000 -> 127.0.0.1:80Forwarding https://test.ngrok.cyysu.com:8000 -> 127.0.0.1:80Web Interface 127.0.0.1:4040# Conn 0Avg Conn Time 0.00ms