我很困惑SNAT和Masquerade之间的实际区别是什么?
如果我想在本地网络上共享我的Internet连接,那么我应该选择SNAT还是Masquerade?
我很困惑SNAT和Masquerade之间的实际区别是什么?
如果我想在本地网络上共享我的Internet连接,那么我应该选择SNAT还是Masquerade?
Answers:
该SNAT
目标需要你给它适用于所有外发数据包的IP地址。该MASQUERADE
目标可以让你给它的接口,不管地址是接口上是适用于所有的外发数据包的地址。此外,使用时SNAT
,内核的连接跟踪将在断开接口并重新启动接口时跟踪所有连接。MASQUERADE
目标并非如此。
好的文档包括Netfilter站点和iptables
手册页上的HOWTO。
-j SNAT
(与的回收跟踪相反)会出现故障-j MASQUERADE
。在那种情况下,我可以想象来自旧的传出连接的传入数据包被发送到该节点,从而混淆了其TCP堆栈。至于-j SNAT的好处,如果NAT框配置了相同的外部IP地址,并且内核不断从旧连接转发数据包而不是用RST答复,该怎么办?
基本上SNAT
,MASQUERADE
在POSTROUTING链中的nat表中执行与源NAT相同的操作。
差异性
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,以便与之通信通过私有IP 1:1 NAT的Internet(假定它在公共子网中)。实例重启后,公用IP可能会更改(如果不是EIP),MASQUERADE
在这种情况下,这是一个更好的选择。
重要提示:仍然可以将MASQUERADE
目标与静态IP结合使用,只是要注意额外的开销。
参考文献