为什么 iptables 没有收到标记的数据包?

2 linux iptables ping

我正在学习 ping 命令选项。在那我找到了 -m 选项来设置数据包的标记。

以下命令将标记为 10 的数据包发送到 192.168.2.65。

ping -m 10 192.168.2.65
Run Code Online (Sandbox Code Playgroud)

使用以下命令,我可以在目的地接收该数据包。

iptables -A INPUT -m mark --mark 0xa -j ACCEPT
Run Code Online (Sandbox Code Playgroud)

但是上面的命令并没有收到标记的数据包。上面的 iptables 命令什么都不返回。

注意:我们都有 root 权限。

Jul*_*ier 6

该标记是内部的,不包含在数据包或其任何标头中的任何位置。

这意味着它在进行实际出站连接时会丢失,并且不会INPUT在目标服务器的表中可见,但您会OUTPUT在启动机器的表中看到它。

在 ping 中支持标记的目的是允许出站路由规则。

  • 正如@JuliePelletier 多次试图告诉您的那样,标记只能在原始机器上检测到(或者,如果数据包在数据包通过的路由器上由 iptables 标记,则只能由添加标记的机器检测)。该标记位于该机器的网络堆栈内部,不会成为 ping 数据包本身的属性(因此无法在其他机器上检测到或对其采取行动)。 (3认同)
  • `mark` 不会做你想要的。为什么要使用标记?回答这个问题可能会给您带来潜在的解决方案。你问错了问题。 (3认同)
  • 重读我的回答。**该标记是内部的,不包含在数据包中** 它不会发送到目标服务器。 (2认同)
  • 该标记仅在其设置的机器上可见。**在另一台机器上看不到该标记。**如果您想解决特定问题,请提及。否则,找些更有用的事情做,因为 ping 的标记选项不会做你想要的。 (2认同)