0
点赞
收藏
分享

微信扫一扫

一文学会在 CentOS 搭建 ngrok server,进行内网穿透

拾光的Shelly 2021-09-22 阅读 70

本文主要讲解如何使用 ngrok 自建一个内网穿透服务器,通过本文,你可以掌握:

  1. 在 centos 等其他 linux 衍生版本上搭建一个 ngrok server。
  2. 通过 openssl 生成证书。
  3. 在 windows,linux,arm 系统上使用生成 ngrok 客户端进行内网穿透。

1. 准备工作

1.1 域名解析

  • 增加泛子域名和普通子域名解析

1.2 配置环境

  1. ngrok 基于golang,若没有 golang 环境的需进行安装。
sudo yum install -y golang
  1. 将 ngrok.git 克隆一份下来,也可以直接下载后直接拷贝至服务器,按需即可。如果没有安装 git 客户端或者版本太低需升级,可通过如下命令进行安装/更新。
  • 查看版本信息:

  • 更新/安装 git
yum remove git
yum install epel-release
yum install https://centos7.iuscommunity.org/ius-release.rpm
yum install git2u
  • 本博文发布时,镜像中的 git 版本为 2.16.5

  • 克隆 ngrok 库到本地
cd /etc
git clone https://github.com/inconshreveable/ngrok

1.3 SSL 证书

#1.指定 ngrok 所用域名:这里以域名 bangwogaoding.com 为例
export NGROK_DOMAIN="ngrok.bangwogaoding.com";
#2.直接使用自带 ssl 证书生成工具:
#2.1 key 文件
openssl genrsa -out bangwogaodingCA.key 2048
#2.2 pem 文件
openssl req -x509 -new -nodes -key bangwogaodingCA.key -subj "/CN=$NGROK_DOMAIN" -days 3650 -out bangwogaodingCA.pem
#2.3 客户端 key
openssl genrsa -out ngrokClientCA.key 2048
#2.3 客户端 csr 文件
openssl req -new -key ngrokClientCA.key -subj "/CN=$NGROK_DOMAIN" -out ngrokClientCA.csr
#2.5 创建私钥
openssl x509 -req -in ngrokClientCA.csr -CA bangwogaodingCA.pem -CAkey bangwogaodingCA.key -CAcreateserial -out ngrokClientCA.crt -days 3650
  • 上面生成的 bangwogaodingCA.pem,ngrokClientCA.crt,ngrokClientCA.key 复制到
    assets/client/tls 和 assets/server/tls,这两个目录分别存放着ngrok和ngrokd的默认证书。具体如下:

cp bangwogaodingCA.pem assets/client/tls/ngrokroot.crt
cp ngrokClientCA.crt assets/server/tls/snakeoil.crt
cp ngrokClientCA.key assets/server/tls/snakeoil.key

1.4 编译 ngrokd 和 ngrok 可执行文件

#编译服务端,生成的文件在 ./bin 文件夹对应的目录中,如:ngrokd
GOOS="linux" GOARCH="amd64" make release-server
#编译客户端,生成的文件在 ./bin 文件夹对应的目录中,如 windows_amd64
GOOS="windows" GOARCH="amd64" make release-client

启动 ngrokd 服务器

cd /etc/ngrok/bin
./ngrokd -domain="ngrok.bangwogaoding.com" -httpAddr=":80" -httpsAddr=":443"

启动 ngrok 客户端

  • 生成的客户端位于生成目录下的 /bin 文件夹内,如:


  • 可使用 ftp 工具将其拷贝至需要内网穿透的电脑中,这里以 windows 系统为例:

  1. 复制 ngrokd.exe 到本地文件夹
  2. 增加配置文件 config.d
#config.d 内容,请自行使用一开始解析的子域名
server_addr: "ngrok.bangwogaoding.com:4443"
trust_host_root_certs: false
  1. 启动客户端
# config.d 为上面增加的配置文件,也可不使用配置文件,直接显式指定。
# demo:subdomain,即设定的泛子域名
# 5002 端口,表示的是本机需要对外穿透出去的端口
ngrok.exe -config=config.d -subdomain=demo -log=log.txt 5002
  1. 关于第三点,也可以使用批处理文件方便调整和修改。
# run.bat
@echo off
ngrok.exe -config=config.d -subdomain=demo -log=log.txt 5002

效果

  1. 内网需要穿透的站点如下:

  1. 启动客户端

  1. 外网访问效果

注意事项

  1. 防火墙启用的状态下,确保服务器的端口都打开,如 4443 是必须的,其他的,如 80,443端口根据你自己需要打开。
# 查看目前已经打开的端口
firewall-cmd --list-ports
  1. 如果使用的是 云资源,如阿里云,华为,腾讯,AWS等,请确保相关安全组已经允许通过 443,80,4443 等端口。

参考

举报

相关推荐

0 条评论