旁路由 192.168.5.6 开 NAT(备忘)
症状
客户端网关指向 5.6 时,国内网站时通时断,www.163.com 白屏/超时;
5.6 上 conntrack 里相关连接全是 [UNREPLIED],抓包显示 TCP 握手成功后就没数据了。
原因
5.6 只转发、不做 NAT。
- 去程:源 IP 还是客户端,源 MAC 变成 5.6
- 回程:被主路由 5.1 直接发回客户端,绕开 5.6
链路不对称,主路由把包丢了。开 NAT 后源 IP 变成 5.6,回程自然回 5.6,就通了。
改法(WebUI)
- 网络 → 防火墙 → 通用设置
确认「启用 FullCone NAT」不勾。
(勾着它 fw4 不会生成伪装规则,也不报错,勾了伪装也白搭) - 同页 区域 表格:
lan那一行右侧的 「IP 动态伪装」勾上 - 点 保存并应用
等价命令
uci set firewall.@zone[0].masq='1'
uci set firewall.@zone[0].mtu_fix='1'
uci set firewall.@defaults[0].fullcone='0'
uci commit firewall && /etc/init.d/firewall reload
验证
5.6 上执行:
nft list chain inet fw4 srcnat_lan
必须看到这一行(只有注释没有 masquerade 就是没生效):
meta nfproto ipv4 masquerade comment "!fw4: Masquerade IPv4 lan traffic"
回滚
把 lan 的「IP 动态伪装」取消勾选,保存并应用即可。
备注
- 192.168.5.0/24 是直连网段,局域网互访不经过 5.6,这条 NAT 只影响走 5.6 出网的流量,不会影响内网。
- 客户端:网关填 192.168.5.6;用 honk 的话 DNS 也填 192.168.5.6(否则解析被污染,youtube 会拿到假 IP)。
- 可选:通用设置里「流量卸载类型」如果是「硬件流量卸载」,虚拟机(virtio 网卡)场景建议改成「无」或「软件流量卸载」,偶发丢包少一些。

