jsq2627
2023-11-24 18:31:17 +08:00
我仔细研究了下,发现还是可以直连的。条件是:
1. iOS 上不开启任何代理,或者启用 Surge ,加上规则 DEST-PORT,3478-3497,DIRECT
2. 家里的路由器不启用任何代理(点名 OpenClash ),或者启用代理,但是在防火墙使 3478-3497 端口的 UDP 流量绕过。必须在防火墙绕过,不能使用 clash 规则绕过,因为套上 clash 之后 NAT 类型会变为 PortRestrictedCone
然后在路由器上抓包验证,确认可以直连。这里有个坑,因为涉及到 NAT 打洞,Surge 请求记录里面显示的对端 IP 是错误的,即使已经直连,Surge 还是显示对端为 17.x.x.x 的美国 IP 。
对于 openwrt+openclash ,可以用这套 nftables 规则来绕过:
```
chain mangle_prerouting {
# Bypass OpenClash for STUN packets
meta nfproto ipv4 udp dport 3478-3497 counter meta mark set 0
meta nfproto ipv6 udp dport 3478-3497 counter accept
}
```
写入到 openwrt 路由器的 /etc/nftables.d/99-stun-no-openclash.nft ,然后运行 /etc/init.d/firewall reload 重载。