You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NGROK无法拨号至服务器报错invalid argument的求助

ngrok在TrueNAS Jail(FreeBSD)中连接失败(invalid argument)问题排查

问题场景

我在TrueNAS Jail(FreeBSD)环境中使用ngrok已有4年多,一直运行正常。使用免费账号(随机URL),网络环境为2条LTE连接加负载均衡。近期工具突然无法工作,已尝试更新至最新版本(3.21.0)并从头配置:

操作步骤

  1. 下载并解压最新FreeBSD版本:
wget ngrok-v3-stable-freebsd-amd64.tgz
tar -xvzf ngrok-v3-stable-freebsd-amd64.tgz
  1. 添加官网获取的authtoken:
./ngrok config add-authtoken <token here>
Authtoken saved to configuration file: /root/.config/ngrok/ngrok.yml
  1. 测试运行命令:
./ngrok http http://localhost:8080
./ngrok tcp 22
  1. 测试结果均报错:
ngrok                                                                                                                                                                                                      (Ctrl+C to quit)

Session Status                reconnecting (failed to dial ngrok server with address "connect.ngrok-agent.com:443": invalid argument)
Version                       3.21.0
Web Interface                 http://127.0.0.1:4040

Connections                   ttl     opn     rt1     rt5     p50     p90
                              0       0       0.00    0.00    0.00    0.00

diagnose命令结果

./ngrok diagnose
Testing ngrok connectivity...

Internet Connectivity
  Name Resolution                           [ OK ]
  TCP                                       [ OK ]
  TLS                                       [ OK ]
Localhost Connectivity
  Name Resolution                           [ OK ]
Ngrok Connectivity - Region: Auto (lowest latency)
  Name Resolution                           [ OK ]
  TCP                                       [ OK ]
  TLS                                       [ OK ]
  Tunnel Protocol                           [ OK ]
Successfully established ngrok connection! (region: 'eu', latency: 56.114596ms)

即使使用旧配置文件或修改connect_url为tunnel.eu.ngrok.com:443,仍出现相同"invalid argument"报错,仅地址不同。


可能的原因及解决思路

1. FreeBSD Jail的网络栈限制

TrueNAS Jail默认的共享主机网络模式可能限制了套接字选项的设置,ngrok建立连接时需要的特定TCP选项无法生效,触发"invalid argument"错误。

  • 解决:将Jail网络模式切换为VNET(虚拟网络栈),为Jail提供独立网络栈。操作路径:TrueNAS WebUI → 对应Jail → 编辑设置 → 网络模式改为VNET → 重启Jail后重新测试。

2. 负载均衡网络的MTU/路由问题

双LTE负载均衡环境下,可能存在MTU不匹配或路由不对称。diagnose的测试包较小能通过,但ngrok实际连接包因MTU过大分片失败,导致参数错误。

  • 解决:
    • 手动降低Jail内网卡MTU值(如设置为1400):
      ifconfig <你的网卡名称> mtu 1400
      
    • 检查负载均衡设备的路由规则,确保到ngrok服务器的路径对称,避免数据包来回走不同LTE链路。

3. ngrok 3.x版本与FreeBSD Jail兼容性问题

ngrok 3.x的部分特性可能在Jail环境存在未被diagnose检测到的兼容性bug。

  • 解决:回退到之前能正常运行的ngrok版本(如3.x早期版或2.x版)测试,若旧版本正常,说明新版本存在兼容性问题,可向ngrok官方提交bug。

4. Jail内的系统调用限制

TrueNAS Jail可能启用了sysctl限制,禁止ngrok所需的系统调用。

  • 解决:在TrueNAS主机上修改sysctl配置,允许Jail访问必要的网络相关sysctl:
    sysctl security.jail.sysctl_allow=net.inet.tcp.*
    
    或在Jail配置文件中添加允许的sysctl项,重启Jail后测试。

5. DNS缓存或解析异常

虽然diagnose显示DNS正常,但ngrok运行时可能使用了缓存的旧IP,导致连接错误地址触发参数问题。

  • 解决:
    1. ping获取ngrok服务器IP:
      ping connect.ngrok-agent.com
      
    2. 将IP和域名添加到Jail的/etc/hosts:
      echo "<获取到的IP> connect.ngrok-agent.com" >> /etc/hosts
      
    3. 重新运行ngrok测试。

内容的提问来源于stack exchange,提问作者Vasco Baptista

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 19:23:11