新闻资讯

在 Linux 上 Ngrok 如何添加 WS 协议端口

2025-03-6

在 Linux 上为 Ngrok 添加 WS(WebSocket)协议端口,需要对 Ngrok 配置文件进行相应修改,并确保服务器网络设置允许相关端口的流量通过。通过以下步骤可以实现为 Ngrok 添加 WS 协议端口。

准备工作

1、 确认 Ngrok 安装
首先要确保 Ngrok 已正确安装在 Linux 系统上。可以通过在终端中输入 “ngrok version” 命令来检查 Ngrok 是否安装以及查看其版本信息。如果未安装 Ngrok,需从 Ngrok 官方网站下载适合 Linux 系统的安装包。例如,对于 64 位 Linux 系统,可使用以下命令下载:
wget https://bin.equinox.io/c/4VmDzA7iaHb/ngrok - stable - linux - amd64.zip
下载完成后,使用 “unzip ngrok - stable - linux - amd64.zip” 命令解压安装包,将解压后的 “ngrok” 可执行文件移动到系统路径中,如 “sudo mv ngrok /usr/local/bin/”,以便在任何目录下都能直接执行 “ngrok” 命令。
2、 获取 Ngrok 认证令牌
在使用 Ngrok 之前,需要获取认证令牌。登录 Ngrok 官网,注册账号并登录后,在控制台中找到自己的认证令牌。在终端中执行 “ngrok authtoken [你的认证令牌]” 命令,将认证令牌与本地 Ngrok 客户端关联,这样才能使用 Ngrok 的服务。

配置 Ngrok 添加 WS 协议端口

1、 创建或编辑 Ngrok 配置文件
Ngrok 的配置文件通常位于用户主目录下的 “.ngrok2” 文件夹中,文件名为 “ngrok.yml”。如果该文件不存在,可以手动创建。使用文本编辑器(如 nano 或 vim)打开该文件,例如使用 nano 编辑器打开的命令为 “nano ~/.ngrok2/ngrok.yml”。
2、 添加 WS 协议端口配置
在 “ngrok.yml” 文件中,添加或修改配置项以支持 WS 协议端口。以下是一个示例配置:
tunnels:
ws - tunnel:
proto:
ws: [你要映射的本地 WS 端口]
addr: [本地运行 WS 服务的地址和端口]
例如,如果本地有一个基于 WebSocket 的服务运行在本地地址 “127.0.0.1” 的 “8080” 端口上,希望通过 Ngrok 映射到一个公共的 WS 端口,配置如下:
tunnels:
ws - tunnel:
proto:
ws: 8080
addr: 127.0.0.1:8080
在上述配置中,“ws - tunnel” 是隧道名称,可以自定义;“proto.ws” 指定了要映射的本地 WS 端口;“addr” 指定了本地运行 WS 服务的地址和端口。保存并关闭文件(在 nano 编辑器中,按 “Ctrl + X”,然后按 “Y”,最后按 “Enter” 保存并退出)。

启动 Ngrok 并验证

1、 启动 Ngrok
在终端中执行 “ngrok start --all” 命令,Ngrok 将根据配置文件启动所有隧道。执行该命令后,Ngrok 会连接到 Ngrok 服务器,并为配置的 WS 端口生成一个公共的访问地址。例如,输出信息中会显示类似于 “ws://[随机字符串].ngrok.io” 的地址,这就是通过 Ngrok 映射后的公共 WS 地址,外部用户可以使用该地址连接到本地运行的 WS 服务。
2、 验证 WS 服务访问
使用 WebSocket 客户端工具(如浏览器的开发者工具中的 WebSocket 调试器、专门的 WebSocket 测试工具如 “ws - client” 等)来验证 WS 服务是否可以通过 Ngrok 映射的地址正常访问。在客户端工具中,输入 Ngrok 生成的公共 WS 地址,尝试与本地 WS 服务建立连接。如果连接成功,说明 Ngrok 添加 WS 协议端口配置成功。例如,在浏览器开发者工具的 “控制台” 选项卡中,使用以下 JavaScript 代码测试连接:
var socket = new WebSocket('ws://[随机字符串].ngrok.io');
socket.onopen = function () {
console.log('WebSocket 连接已建立');
};
socket.onmessage = function (event) {
console.log('收到消息:', event.data);
};
socket.onclose = function () {
console.log('WebSocket 连接已关闭');
};
如果在控制台中看到 “WebSocket 连接已建立” 的日志信息,表明本地基于 WebSocket 的服务已成功通过 Ngrok 映射到公网并可正常访问。若连接失败,需检查 Ngrok 配置文件是否正确、本地 WS 服务是否正常运行以及网络设置是否存在限制等问题。

网络设置与安全考虑

1、 防火墙设置
确保 Linux 系统的防火墙允许 Ngrok 相关的流量通过。不同的 Linux 发行版使用不同的防火墙管理工具,以 Ubuntu 系统使用 UFW 防火墙为例,若要允许 Ngrok 客户端与服务器之间的通信,需要开放相应端口。由于 Ngrok 客户端与服务器的通信端口可能不固定,一种较为简便的方法是允许所有出站流量(但此方法存在一定安全风险,仅适用于测试环境),在终端中执行 “sudo ufw allow out” 命令。在生产环境中,建议根据 Ngrok 服务器的 IP 地址范围精准设置防火墙规则,例如,如果 Ngrok 服务器的 IP 地址范围是 104.131.124.0/22,执行以下命令允许与该范围的通信:
sudo ufw allow out to 104.131.124.0/22
对于其他 Linux 发行版如 CentOS,可使用 iptables 进行类似的配置。首先,检查当前的 iptables 规则:
sudo iptables -L -n
然后,添加允许 Ngrok 通信的规则,假设 Ngrok 服务器的 IP 地址为 104.131.124.10,执行:
sudo iptables -A OUTPUT -d 104.131.124.10 -j ACCEPT
2、 安全注意事项
虽然 Ngrok 为本地服务提供了便捷的公网访问方式,但在使用过程中要注意安全。由于 Ngrok 生成的公网地址可直接访问本地服务,若本地服务存在安全漏洞,可能会导致安全风险。因此,务必确保本地运行的 WS 服务本身具有足够的安全性,如进行身份验证、输入验证等安全措施。另外,不要随意将 Ngrok 生成的公网地址公开,仅在必要时与信任的人员共享,并且在使用完毕后及时停止 Ngrok 服务,以降低潜在的安全威胁。


拓展阅读:

1、 WebSocket 协议基础:WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议,它使得客户端和服务器之间可以实时交换数据。与传统的 HTTP 请求 - 响应模式不同,WebSocket 允许服务器主动向客户端推送数据,常用于实时应用,如在线聊天、实时监控等。
2、 Ngrok 高级配置:Ngrok 配置文件支持更多高级选项,如设置自定义域名、配置 TLS 证书、调整连接超时等。通过合理配置这些选项,可以满足不同场景下的需求,提升服务的稳定性和安全性。例如,设置自定义域名可以使服务具有更专业的访问地址,并且通过配置 TLS 证书可以对通信进行加密。
3、 Linux 防火墙策略优化:在 Linux 系统中,除了基本的允许或拒绝流量规则,还可以配置防火墙策略以实现更精细的网络访问控制。例如,使用状态检测防火墙功能,只允许已建立连接的相关流量返回,阻止未授权的入站连接,从而在保障网络服务正常运行的同时,提高系统的安全性。

新闻资讯
热门专题
最新专题
友情链接