我正在尝试将某些端口从公共 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;
}
}