Ubuntu搭建ngrok内网穿透服务器

前言

安装ngrok服务器,不对外服务可以使用任意域名然后修改hosts,但是对外提供服务必须满足下面的一些条件:

  • 一台有公网IP的服务器
  • 一个映射到公网IP的域名

服务端安装与配置

安装Git

sudo apt-get install  git

安装golang
尽量保持最新版本安装,所以弃用apt-get install golang的方式
官网或其他渠道下载golang

wget https://studygolang.com/dl/golang/go1.12.linux-amd64.tar.gz

解压golangusr/bin,也可以指定其他位置

tar zxf go1.12.linux-amd64.tar.gz -C /usr/bin

添加环境变量并即时生效

echo "export PATH=/usr/bin/go/bin:$PATH" >> /etc/profile
source /etc/profile

查看是否安装成功

go version

源码编译ngrok
从github上克隆ngrok仓库

cd /usr/local
git clone https://github.com/tutumcloud/ngrok.git ngrok

生成证书

注意这一步非常重要,如果需要配置自定义域名,则必须生成证书,对accesets中的证书进行替换,然后同时编译服务端和客户端,确保证书一致,否则会有各种错误,如:Failed to read message: remote error: bad certificate

openssl genrsa -out rootCA.key 2048
openssl req -x509 -new -nodes -key rootCA.key -subj "/CN=uegame.cn" -days 5000 -out rootCA.pem
openssl genrsa -out device.key 2048
openssl req -new -key device.key -subj "/CN=uegame.cn" -out device.csr
openssl x509 -req -in device.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out device.crt -days 5000
cp rootCA.pem assets/client/tls/ngrokroot.crt
cp device.crt assets/server/tls/snakeoil.crt
cp device.key assets/server/tls/snakeoil.key
GOOS=linux GOARCH=386
make clean
make release-server release-client

编译生成服务端

cd ngrok
make release-server 

编译完成后当前目录会生成ngrokd服务端程序

启动服务

./ngrokd -domain="www.uegame.cn" -httpAddr=":80" -httpsAddr=":443" -log ./access.log

客户端安装与配置

编译生成客户端

cd /usr/local/ngrok
GOOS=linux GOARCH=amd64 make release-client

编译完成后当前目录会生成ngrok客户端程序

客户端配置
注意不同ngrok的配置,网上有些教程是cfg配置,而最新github仓库给出的却是yml配置,具体配置可参考:
https://github.com/tutumcloud/ngrok/blob/master/docs/DEVELOPMENT.md

touch ngrok.yml
vi ngrok.yml
//输入
server_addr: ngrok.6cm.top:4443
trust_host_root_certs: false

执行脚本
启动指定日志记录,子域名为blog,本地端口为80的通道

./ngrok -config=ngrok.cfg   -log=ngrok.log -subdomain=blog 80

猜你喜欢

转载自blog.csdn.net/qq_32013641/article/details/88579215