| 2025-03-6
Ngrok 是一种反向代理工具,可通过互联网公开本地服务器。虽然 Ngrok 官方提供了客户端用于连接其公共服务,但也可以在 Windows 系统上搭建自己的 Ngrok 服务器,实现自定义的内网穿透功能。以下是详细的搭建步骤。
1、 安装 Go 语言环境:Ngrok 是使用 Go 语言开发的,因此需要先在 Windows 系统上安装 Go 语言环境。访问 Go 语言官方网站(https://golang.org/dl/),下载适用于 Windows 的安装包(如 “go1.xx.windows - amd64.msi”,xx 为版本号)。下载完成后,运行安装包,按照安装向导提示进行安装,默认安装路径为 “C:\Go”。安装完成后,需要将 Go 语言的可执行文件路径(“C:\Go\bin”)添加到系统环境变量的 “Path” 中。打开 “系统属性” - “高级” - “环境变量”,在 “系统变量” 中找到 “Path” 变量,点击 “编辑”,添加 “C:\Go\bin” 路径,然后点击 “确定” 保存设置。
2、 安装 Git:为了获取 Ngrok 的源代码,需要安装 Git。访问 Git 官方网站(https://git-scm.com/download/win),下载 Windows 版本的 Git 安装包。运行安装包,按照安装向导提示进行安装,可选择默认设置。安装完成后,打开命令提示符,输入 “git --version”,若显示 Git 版本号,则说明安装成功。
1、 创建工作目录:在 Windows 文件资源管理器中,创建一个用于存放 Ngrok 项目的工作目录,例如 “C:\ngrok - server”。
2、 克隆 Ngrok 仓库:打开命令提示符,切换到刚刚创建的工作目录:
cd C:\ngrok - server
然后执行以下命令克隆 Ngrok 的 GitHub 仓库:
git clone https://github.com/inconshreveable/ngrok.git
这将下载 Ngrok 的源代码到本地工作目录。
1、 设置环境变量:在命令提示符中,设置一些编译所需的环境变量。执行以下命令设置 Ngrok 服务器的域名(假设域名为 “ngrok.example.com”):
set NGROK_DOMAIN=ngrok.example.com
还需设置一个用于加密通信的密钥,可使用以下命令生成:
openssl genrsa -out base.key 2048
openssl rsa -in base.key -pubout -out base.pub
set NGROK_KEY=base.key
2、 编译服务器端:进入 Ngrok 源代码目录:
cd ngrok
执行以下命令编译 Ngrok 服务器:
go generate
go build -o ngrokd -ldflags "-X main.domain=$NGROK_DOMAIN -X main.tlsKey=$NGROK_KEY -X main.tlsCrt=base.pub"
编译完成后,在当前目录下会生成一个名为 “ngrokd” 的可执行文件,这就是 Ngrok 服务器程序。
1、 创建配置文件:在 Ngrok 项目目录下创建一个配置文件 “ngrokd.cfg”,使用文本编辑器打开并添加以下内容:
server_addr: "ngrok.example.com:4443"
trust_host_root_certs: false
这里设置了服务器的地址和端口,以及是否信任主机根证书。
2、 启动服务器:在命令提示符中,执行以下命令启动 Ngrok 服务器:
ngrokd -config=ngrokd.cfg -log=stdout
服务器启动后,会监听指定的地址和端口,等待客户端连接。
1、 修改客户端配置:如果要使用自定义的 Ngrok 服务器,需要修改 Ngrok 客户端的配置。在客户端配置文件(一般位于用户主目录下的 “.ngrok2/ngrok.yml”)中,添加或修改以下内容:
tunnels:
example:
proto:
http: 80
addr: example.com
server_addr: ngrok.example.com:4443
trust_host_root_certs: false
这里配置了一个名为 “example” 的隧道,将本地 80 端口映射到 “example.com”,并指定了服务器地址。
2、 连接客户端到服务器:启动 Ngrok 客户端,它将连接到刚刚搭建的 Ngrok 服务器,实现内网穿透功能。
1、 Ngrok 服务器安全加固:搭建 Ngrok 服务器后,需要注意安全问题。例如,配置防火墙规则,只允许特定 IP 地址或网段连接服务器;定期更新 Ngrok 服务器程序,以修复可能存在的安全漏洞;对通信数据进行加密处理,提高数据传输的安全性。
2、 Ngrok 与其他内网穿透工具对比:与其他内网穿透工具相比,自行搭建 Ngrok 服务器具有更高的定制性,但搭建和维护成本也相对较高。而一些现成的内网穿透服务,如花生壳、natapp 等,使用相对简单,但在功能定制上可能受到限制。了解不同工具的特点,可根据实际需求选择合适的内网穿透方案。
3、 优化 Ngrok 服务器性能:为提升 Ngrok 服务器的性能,可以对服务器硬件进行优化,如增加内存、使用高速存储设备等。同时,合理配置 Ngrok 服务器的参数,如调整连接超时时间、优化隧道配置等,也能提高服务器的处理能力和稳定性。