nftables端口转发导致网络请求失败

nftables端口转发导致网络请求失败

我正在尝试将某些端口从公共 IP 转发172.10.22.22到远程 VPN IP 10.22.22.22。本地VPN IP是10.22.22.1

以太网接口是 eth0wireguard vpn 接口是 wg0

除了其他网络请求现在被丢弃之外,这些 nftable 规则运行良好

table ip nat {
        chain postrouting {
                type nat hook postrouting priority srcnat; policy accept;
                masquerade
        }

        chain prerouting {
                type nat hook prerouting priority dstnat; policy accept;
                ip daddr 172.10.22.22 tcp dport { 3396 } dnat to 10.22.22.22;
                ip daddr 172.10.22.22 udp dport 10000-10100 dnat to 10.22.22.22;
        }
}

所以ping www.google.com不起作用。我该如何修改这些规则?请指教。

编辑

而不是chain postrouting ...masquerade,如果我使用ofiname "wg0" masquerade,问题就会消失。我需要让假面舞会的表达更加具体吗?

答案1

回答我自己的问题。通过使后路由链中的伪装表达式更加具体来解决这个问题。

table ip nat {
        chain postrouting {
                type nat hook postrouting priority srcnat; policy accept;
                # masquerade (as in question)
                ofiname "wg0" masquerade
        }

        chain prerouting {
                type nat hook prerouting priority dstnat; policy accept;
                ip daddr 172.10.22.22 tcp dport { 3396 } dnat to 10.22.22.22;
                ip daddr 172.10.22.22 udp dport 10000-10100 dnat to 10.22.22.22;
        }
}

相关内容