服务器测评网
我们一直在努力

虚拟机搭建ngrok,内网穿透服务如何配置与使用?

虚拟机搭建ngrok

在开发和测试过程中,常常需要将本地服务暴露到公网,ngrok 是一款常用的内网穿透工具,能够将本地端口映射到公网,并提供临时域名,本文将介绍如何在虚拟机中搭建 ngrok 服务,实现本地服务的公网访问。

虚拟机搭建ngrok,内网穿透服务如何配置与使用?

环境准备

首先需要准备一台虚拟机,推荐使用 Linux 系统(如 Ubuntu 或 CentOS),确保虚拟机能够访问互联网,并已安装必要的依赖工具,如 gitgo(ngrok 的编译需要 Go 环境),以 Ubuntu 为例,可通过以下命令安装依赖:

sudo apt update
sudo apt install -y git golang

关闭虚拟机的防火墙或开放相应端口(如默认的 443 和 80 端口),避免服务被拦截。

下载并编译 ngrok

ngrok 的源代码托管在 GitHub 上,可通过 git 克隆仓库并编译,执行以下命令:

git clone https://github.com/inconshreveable/ngrok.git
cd ngrok

ngrok 需要一个自定义的域名和证书,首先生成自签名证书(仅用于测试环境):

NGROK_DOMAIN="yourdomain.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

编译 ngrok 服务端和客户端:

虚拟机搭建ngrok,内网穿透服务如何配置与使用?

make release-server release-client

编译完成后,可执行文件位于 bin/ 目录下,分别为 ngrok(客户端)和 ngrokd(服务端)。

启动 ngrok 服务端

在虚拟机中启动 ngrok 服务端,监听 443 和 80 端口:

sudo ./bin/ngrokd -domain="$NGROK_DOMAIN" -httpAddr=":80" -httpsAddr=":443"

服务端启动后,会绑定自定义域名,并提供 HTTP 和 HTTPS 隧道支持,若需后台运行,可使用 nohupsystemd 管理进程。

配置客户端并连接

在本地机器上下载 ngrok 客户端(与虚拟机编译版本一致),创建配置文件 ngrok.cfg

server_addr: "yourdomain.com:4443"  # 服务端地址,4443 为默认通信端口
trust_host_root: "true"

启动客户端,映射本地端口(如 8080):

虚拟机搭建ngrok,内网穿透服务如何配置与使用?

./ngrok -config=ngrok.cfg 8080

客户端启动后,会生成公网隧道地址(如 http://abc123.yourdomain.com),通过该地址即可访问本地服务。

注意事项

  1. 域名解析:确保自定义域名的 DNS 解析指向虚拟机的公网 IP。
  2. 证书安全:生产环境建议使用权威机构签发的证书,避免自签名证书带来的信任问题。
  3. 端口冲突:检查虚拟机是否占用 80、443 等端口,必要时修改 ngrok 配置。
  4. 性能优化:若并发量较大,可配置多个 ngrok 实例或使用负载均衡。

通过以上步骤,即可在虚拟机中搭建完整的 ngrok 服务,实现本地服务的公网穿透,这一方案适用于个人开发、测试环境,或小型团队的临时需求,灵活且易于部署。

赞(0)
未经允许不得转载:好主机测评网 » 虚拟机搭建ngrok,内网穿透服务如何配置与使用?