我如何在 NFTables 中实现像 iptables 这样的伪装规则:
iptables -t nat -A POSTROUTING -s 10.5.6.0/24 -o eth0 -j MASQUERADE
我找过,但没找到如何设置输出接口
答案1
您可以这样编写规则:
nft add rule nat postrouting ip saddr 10.5.6.0/24 oif eth0 masquerade
看看nftables nat 维基了解更多信息。
答案2
顺便说一句,如果您伪装成动态地址,您可以简单地
add rule nat postrouting oif ppp0 masquerade
oif
/oifname
用户空间在运行时转换oif
为整数
你应该使用可能使用oifname
(慢点字符串匹配)而不是oif
接口可能消失然后重新出现(如 ppp0 和其他可能在断开连接时等),除非您会做出其他安排来伪装每次出现的接口。
oif
→ 如果接口被删除并再次创建,则不会发生匹配,因为内核中添加的接口的索引是单调递增的。
—通过 nftables 快速操作指南
答案3
我的文件中有以下“nat”表/etc/nftables.conf
,以及位于单独的“过滤器”表中的其他防火墙规则:
table ip nat {
chain prerouting {
type nat hook prerouting priority filter; policy accept;
}
chain postrouting {
type nat hook postrouting priority srcnat; policy accept;
oifname { "eno2" } masquerade # "eno2" is our external interface
}
}
table ip filter {
# etc.