SNAT 和 Masquerade 的区别

Cha*_*hak 55 firewall iptables

我很困惑 SNAT 和 Masquerade 之间的实际区别是什么?

如果我想在本地网络上共享我的互联网连接,那么我应该选择 SNAT 还是 Masquerade?

Sha*_*off 50

SNAT目标需要你给它适用于所有外发数据包的IP地址。该MASQUERADE目标可以让你给它的接口,不管地址是接口上是适用于所有的外发数据包的地址。此外,SNAT当接口关闭和重新打开时,内核的连接跟踪会跟踪所有连接;对于MASQUERADE目标而言,情况并非如此。

好的文档包括Netfilter 站点上HOWTOiptables手册页

  • 我无法理解 SNAT 的好处。为什么当接口关闭时内核是否跟踪连接很重要?关于 MASQUERADE,[netfilter 文档说](https://www.netfilter.org/documentation/HOWTO//NAT-HOWTO-6.html)“但更重要的是,如果链接断开,连接(现在是无论如何都丢失了)被遗忘了,这意味着当使用新 IP 地址恢复连接时故障更少。” 听起来很合理(尽管有什么小故障?) 现在看看 SNAT,跟踪丢失的连接有什么好处?为什么不每次都使用 MASQUERADE? (5认同)

Ter*_*ang 30

SNAT并在链内的表中MASQUERADE执行相同的源 NAT 操作。natPOSTROUTING

差异

  • MASQUERADE要求--to-source,因为它是对工作提出与动态分配的IP地址

  • SNAT工作用静态IP地址,这就是为什么它需要--to-source

  • MASQUERADE会产生额外的开销并且比SNAT每次MASQUERADE目标被数据包击中时都要慢,它必须检查要使用的 IP 地址。

注意:一个典型的用例MASQUERADE: VPC 中的 AWS EC2 实例,它在 VPC CIDR 中有一个私有 IP(例如10.10.1.0/24) -10.10.1.100例如,它还有一个与之关联的公共 IP,以便与 Internet 通信(假设它位于公共子网中),私有 IP 通过该子网执行 1:1 NAT(AWS 网络基础设施魔术)。实例电源循环后,公共 IP 可能会更改 - 停止然后启动(如果不是 EIP),MASQUERADE在此用例中是更好的选择。

重要提示:仍然可以将MASQUERADE目标与静态 IP一起使用,只是要注意额外的开销。

参考