11

搭建自己的内网穿透,搭建ngrok服务器

 3 years ago
source link: https://studygolang.com/articles/32373
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

搭建自己的内网穿透,搭建ngrok服务器

陈德良EGG · 1天之前 · 144 次点击 · 预计阅读时间 2 分钟 · 不到1分钟之前 开始浏览    

有时向客户展示系统不太方便就打算弄个内网穿透

1、必要条件

(1)服务器,用来搭建ngrok的服务器,必须有公网ip,并且可以正常访问(本次测试使用的是Ubuntu 18.04 64位)。

(2)域名,用来生成访问域名。

2、安装git 和Golang


su root 

# 输入你的密码

apt-get install build-essentialgolang mercurial git

#没有安装 apt-get 请先安装


Golang,Go语言支持,因为Ngrok是基于Go语言编写的

3、下载源码,当然也可以不安装git,但是需要手动上传代码到需要的位置。

此处使用非官方地址,修复了部分包无法获取(摘自网络)


git clone https://github.com/tutumcloud/ngrok.git ngrok


4、生成自签名证书

我们需要生成自己的自签名证书,并编译一个携带该证书的ngrok客户端。

证书生成过程需要一个NGROK_BASE_DOMAIN。 以ngrok官方随机生成的地址xxx.ngrok.com为例,其NGROK_BASE_DOMAIN就是“ngrok.com”,如果你要提供服务的地址为“example.ngrok.xxx.com”,那NGROK_BASE_DOMAIN就应该 是“ngrok.xxx.com”。


cd ngrok

NGROK_DOMAIN="test.com"

openssl genrsa -out base.key 2048

openssl req -new -x509 -nodes -key base.key -days 10000 -subj "/CN=$NGROK_DOMAIN" -out base.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 base.pem -CAkey base.key -CAcreateserial -days 10000 -out server.crt


执行完成后需要替换证书


cp base.pem assets/client/tls/ngrokroot.crt


make release-server release-client


6、启动服务端

./bin/ngrokd -tlsKey=server.key -tlsCrt=server.crt -domain="test.com" -httpAddr=":80" -httpsAddr=":443"

httpAddr、httpsAddr 分别是 ngrok 用来转发 http、https 服务的端口,可以随意指定。ngrokd 还会开一个 4443 端口用来跟客户端通讯(可通过 -tunnelAddr=”:xxx” 指定)。由于微信限制不能出现端口号,因此这个使用了80、443端口。

7、编译客户端

(1) windows


GOOS=windows GOARCH=amd64 make release-client  


 (2) mac


GOOS=darwin GOARCH=amd64 make release-client


执行对应的命令会在bin目录下生成相对应的windows、mac目录,ngrok.exe就存放在对应目录下。将对应的ngrok.exe下载到本地。

8、设置本地客户端

(1).在与下载的客户端同级目录下新建一个配置文件ngrok.cfg

server_addr: "test.com:4443"

tunnels:

    proto:

      http: pan.192.168.31.169.xip.io:80 转发到服务器域名

trust_host_root_certs: false

(2).同级目录下新建一个启动脚本startup.bat

@echo on

cd %cd%

ngrok -config=ngrok.cfg start www

其中,-config指向配置文件,-log存放日志文件位置,-subdomain为自定义的域名前缀。8080为端口号。

(3).启动,双击启动脚本startup.bat完成启动。 

启动后的效果是  访问www.test.com  则转发至 客户端电脑的127.0.0.1:8080端口 

具体未提细节可以免费友情咨询:359947329  


有疑问加站长微信联系(非本文作者)

280

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:1006366459


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK