oif/oifname

oif/oifname

我如何在 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.

相关内容