这个 iptable 规则会影响所有传入流量吗?

这个 iptable 规则会影响所有传入流量吗?

问题

如果我在 iptable 规则上使用以下条件,会有什么效果?这是否与指定针对我自己的任何连接相同?

! -d 127.0.0.0/8 -p tcp -m addrtype --dst-type LOCAL

背景

具体来说,我使用它将主机上的端口(具有公共 IP,例如 150.200.30.40)重定向到我的一个 LXC 容器(具有 IP 10.0.3.202)。在我看来,这些规则对于寻址到我主机的公共 IP 地址的流量是等效的。

## IPTABLE RULE FOR INCOMING CONNECTIONS??
iptables -t nat -A PREROUTING ! -d 127.0.0.0/8 -m addrtype --dst-type LOCAL -p tcp --dport 2222 -j DNAT --to-destination 10.0.3.202:22

## EQUIVALENT RULE?? (for connections directed at 150.200.30.40)
iptables -t nat -A PREROUTING -d 150.200.30.40 -p tcp --dport 2222  -j DNAT --to-destination 10.0.3.202:22

答案1

在某些情况下,这两者并不相同。原因如下(我在这里不讨论协议和端口等其他匹配项):

  1. 当数据包的目的地址为本地地址(不包括 127.0.0.0 范围)时,第一条规则匹配。
  2. 当数据包发往特定 IP 地址(如您所说,分配给这台机器)时,第二条规则匹配。

如果这台机器只分配了一个地址,即 150.200.30.40,则它们将完全相同。两者都将匹配发往不匹配 127.0.0.0 范围的本地地址的数据包。

当任何接口至少分配有一个除所提及的公共 IP 之外的地址时,它们会有所不同(当然不包括特殊的私有范围 127.0.0.0)。

如果提到的公网IP没有分配给这台机器,那么它们肯定是不同的。

相关内容