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

sshuttle连接失败求助:执行命令时遇nft文件不存在报错

sshuttle 使用 nft 方法时文件不存在错误的解决办法

问题详情

执行 sshuttle -r hopper 10.0.0.0/8 时触发错误,当前环境为 sshuttle@1.1.1、Python@3.10.7。已尝试重装sshuttle、Python及切换网络,问题未解决。运行 sshuttle -r hopper 10.10.0.0/16 -v 后,核心报错如下:

fw: nft add table inet sshuttle-ipv6-12300 
Error: File /Users/arjun/inet does not exist.
    at Job.emitDependency (/Users/arjun/node_modules/@vercel/nft/out/node-file-trace.js:280:23)
    at async Promise.all (index 0)
    at async Object.nodeFileTrace (/Users/arjun/node_modules/@vercel/nft/out/node-file-trace.js:32:5)
    at async cli (/Users/arjun/node_modules/@vercel/nft/out/cli.js:28:58)

问题根源

报错是因为环境中安装了 vercel/nft(Node.js 文件依赖追踪工具),它的命令名 nft 和系统原生的 nftables 命令冲突。系统优先识别了 vercel/nft,导致 sshuttle 执行防火墙配置时,把 nft 命令里的 inet(nftables 的地址族标识)误当成了本地文件路径。

解决办法

  • 指定原生nft命令路径:
    找到系统原生 nft 命令的位置(通常是 /usr/sbin/nft),通过 --firewall-cmd 参数强制 sshuttle 使用该路径:

    sshuttle -r hopper 10.10.0.0/16 -v --firewall-cmd /usr/sbin/nft
    
  • 临时调整PATH优先级:
    运行 sshuttle 前,将系统命令目录放到 PATH 最前端,确保优先识别原生 nft:

    PATH=/usr/sbin:$PATH sshuttle -r hopper 10.10.0.0/16 -v
    
  • 修改vercel/nft命令别名:
    若需长期使用 vercel/nft,可将其命令重命名(比如 nft-node),避免和系统命令冲突,具体操作参考该工具的文档。

  • 切换sshuttle防火墙方法:
    避开 nft 方法,改用 macOS 原生的 pf 或其他支持的方法:

    # 使用pf方法
    sshuttle -r hopper 10.10.0.0/16 -v --method pf
    

内容的提问来源于stack exchange,提问作者Arjun Mudhaliyar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 15:35:25