命中 Direct 的流量 NAT 类型改变
muink opened this issue · comments
问题发现
因为一直都是在路由器上用 natmap 打洞, 通过打洞出来的 tcp/udp 端口连回家里或访问开放的服务
最近一次远程回家, 要测试点东西. 就把 homeproxy 的 Bypass CN traffic
给关了. 结果远程连接直接就断了, 其他的服务也都挂了
初步检查
回家后检查是 keep-alive 服务器命中了 Direct 规则, (natmap 定期向 www.baidu.com
发送 HTTP keep-alive 报文来保活)
之前因为开启了 Bypass CN traffic
流量直接在防火墙就走直连了, 没有再走一次 sing-box, 打洞就成功了
仔细检查后发现只要是命中 Direct 规则的流量, 全部变成了 端口过滤型 NAT
, 也难怪打洞会失败了
检查结果
这是没有开启 homeproxy 时候的 tcp/udp 检查结果
这是开启 homeproxy 时候的 tcp/udp 检查结果
查了下这个文章STUN (RFC 3489) vs. STUN (RFC 5389/5780)
出站的 srcnat 应该正常的, 但入站的就被过滤掉了
似乎与 openclash 的问题很像 vernesong/OpenClash#2288
查出原因了 本机端口 3456 在经过 sing-box 后转换为了 ip_local_port_range 的 port, 绕过了 3456 的 input 规则, 但是网关又不是 Full cone NAT, 自然连接降级了