当前位置:首页 > 行业动态 > 正文

如何搭建ngrok服务器?

ngrok 是一个用于内网穿透的工具,可以通过简单的命令快速搭建本地服务器并暴露到公网上。

搭建Ngrok服务器

Ngrok是一个强大的内网穿透工具,它可以帮助我们将本地服务器暴露到公网上,从而实现远程访问,本文将详细介绍如何在云服务器上搭建自己的Ngrok服务器,实现内网穿透功能。

如何搭建ngrok服务器?  第1张

必要条件

1、服务器:需要一台拥有公网IP的服务器(如VPS),并且可以正常访问,本文测试使用的是Ubuntu 16.04 64位系统。

2、域名:用于生成访问域名。

3、Git和Golang:用于编译Ngrok源码。

安装必要的软件

我们需要在服务器上安装Git和Golang,因为Ngrok是基于Go语言编写的,执行以下命令进行安装:

apt-get install build-essential golang mercurial git

下载Ngrok源码

使用Git克隆Ngrok的源码,为了方便,这里使用了一个非官方地址,修复了部分包无法获取的问题:

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

生成自签名证书

Ngrok服务端需要SSL证书来保证通信的安全性,我们可以使用openssl生成自签名证书:

cd ngrok
NGROK_DOMAIN="weixin.yangjiace.xyz"
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 -out server.crt -days 10000
cp base.pem assets/client/tls/ngrokroot.crt

编译Ngrok

使用make命令编译Ngrok的服务端和客户端:

make release-server release-client

编译成功后,会在bin目录下找到ngrokd和ngrok两个文件,其中ngrokd是服务端程序。

启动服务端

使用以下命令启动Ngrok服务端:

./bin/ngrokd -tlsKey=server.key -tlsCrt=server.crt -domain="weixin.yangjiace.xyz" -httpAddr=":80" -httpsAddr=":443"

httpAddr和httpsAddr分别是Ngrok用来转发HTTP和HTTPS服务的端口,可以根据需要指定。ngrokd还会开一个4443端口用来跟客户端通讯。

编译客户端

根据不同的操作系统,编译对应的客户端,以下是Windows和Mac系统的编译命令:

Windows
GOOS=windows GOARCH=amd64 make release-client
Mac
GOOS=darwin GOARCH=amd64 make release-client

编译完成后,可以在bin目录下找到对应系统的客户端文件。

设置本地客户端

在同级目录下新建一个配置文件ngrok.cfg如下:

server_addr: "weixin.yangjiace.xyz:4443"  
trust_host_root_certs: false

然后新建一个启动脚本startup.bat(Windows)或startup.sh(Linux/Mac):

@echo on
cd %cd%
ngrok -config=ngrok.cfg -log=ngrok.log -subdomain=yjc 8080

运行启动脚本即可启动客户端。

设置为系统程序并后台运行

为了让Ngrok在后台运行,我们可以创建一个systemd服务,在/etc/systemd/system/目录下创建ngrok.service如下:

[Unit]
Description=ngrok
After=network.target
[Service]
ExecStart=/myweb/ngrok/bin/ngrokd -tlsKey=/myweb/ngrok/server.key -tlsCrt=/myweb/ngrok/server.crt -domain="weixin.yangjiace.xyz" -httpAddr=":80" -httpsAddr=":443"
[Install]
WantedBy=multi-user.target

保存后,通过以下命令启动服务:

systemctl start ngrok.service

至此,我们已经成功搭建了自己的Ngrok服务器,并实现了内网穿透功能,希望本文对你有所帮助!

0