masquerade 的用法和含义

masquerade 的用法和含义

以下是相关示例规则集,其中包含 2 个示例nftablesNAT 规则,这些规则将 IP 从虚拟机伪装到 LAN:

#!/usr/sbin/nft -f

add table nat_4

# Sees all packets after routing, just before they leave the local system
add chain nat_4 postrouting_nat_4 {
    type nat hook postrouting priority srcnat; policy accept;
    comment "Postrouting SNAT IPv4 traffic"
}

# Masquerade all packets going from VMs to the LAN/Internet
add rule nat_4 postrouting_nat_4 meta l4proto tcp ip saddr 192.168.122.0/24 ip daddr != 192.168.122.0/24 counter masquerade to :1024-65535

# Same rule as above but without [to :PORT_SPEC]
add rule nat_4 postrouting_nat_4 meta l4proto tcp ip saddr 192.168.122.0/24 ip daddr != 192.168.122.0/24 counter masquerade

示例 IP 地址192.168.122.0/24是虚拟机运行的网络地址。

我明白了什么masquerade,它SNAT通过将源IP更改为出站接口IP来执行。
从这个意义上说,我理解上面示例中的第二条规则的作用。

我不明白的是 [to :PORT_SPEC] 声明(文档链接),在示例中(第一条规则):masquerade to :1024-65535

具体是masquerade to :1024-65535做什么的,有必要具体说明吗?
这两条规则基本上相同还是有什么不同?
哪一个更适合通过本地主机上的虚拟交换机从虚拟机到互联网进行 NAT?

答案1

我认为如果您查看 iptables 目标的文档,事情会更清楚MASQUERADE。从iptables-extensions(8):

假面舞会

[...]

  • --to-ports port[-port]

    这指定了要使用的源端口范围,覆盖默认的 SNAT 源端口选择启发式(见上文)。仅当规则还指定以下协议之一时这才有效:tcp、udp、dccp 或 sctp。

NFT 规则中的选项to :PORT_SPEC完成相同的任务:它指定用于伪装连接的源端口。

相关内容