我正在使用 iptable 规则来过滤和操作我的 Ubuntu 服务器中的数据包。但我无法理解 mangle 表。
正如我们已经注意到的,这个表应该主要用于处理数据包。换句话说,您可以自由使用可用于更改 TOS(服务类型)字段等的 mangle 匹配等。
强烈建议您不要将此表用于任何过滤;任何 DNAT、SNAT 或伪装也不会在此表中起作用。
任何人都可以向我描述 mangle 表,并提供一些示例来理解我何时应该使用它?
Kev*_*vin 32
除了其他好的答案之外,我最近不得不使用 mangle 表来调整由通过 PPPoE、PPP 和 ATM 带来的流量引起的 MTU(最大传输单元)差异,每一种都会增加开销,从而减少可用于 IP 的有效载荷来自以太网帧的通常 1500 字节。
正常情况下,管道两端的系统的 MTU 为常规默认值 1500,因此它们会尝试发送这么大的 IP 帧。由于实际可用的有效载荷较小,这会导致数据包碎片,除非发送方通常会要求数据包不被碎片化,因此它们最终会被完全丢弃。
在理想情况下,路径 MTU 发现将允许端点根据需要调整其 MTU,但此发现取决于 ICMP,出于安全原因,我无法控制的网络通常配置为丢弃 ICMP。
唯一的选择是在我的路由器中使用数据包修改以修改 TCP SYN 数据包以降低传输层的最大段大小:
iptables -t mangle -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --set-mss 1452
Run Code Online (Sandbox Code Playgroud)
这种事情很混乱,理想情况下应该避免,但我没有其他选择,这确实解决了问题。
希望这些示例以及手册页有所帮助。
小智 26
我最近在这里找到了一个很好的解释。它基本上用于为 IP 数据包设置特定的标头,以影响进一步做出的路由决策。如果有的话,TTL 选项可能是最有趣的:
TTL 目标用于更改数据包的 TTL(生存时间)字段。我们可以告诉数据包只有一个特定的 TTL 等等。一个很好的原因可能是我们不想把自己交给爱管闲事的互联网服务提供商。一些 Internet 服务提供商不喜欢用户在一个连接上运行多台计算机,并且已知一些 Internet 服务提供商会寻找生成不同 TTL 值的单个主机,并将其作为多台计算机连接到单个计算机的众多迹象之一。联系。
其他目标是TOS, MARK, SECMARK, CONNSECMARK
。