我正在使用iptable规则来过滤和操作Ubuntu服务器中的数据包。但我看不懂mangle表。
引用此iptables教程:
正如我们已经指出的,该表主要用于处理数据包。换句话说,您可以自由地使用可用于更改TOS(服务类型)字段等的匹配项等。
强烈建议您不要将此表用于任何过滤;此表中的任何DNAT,SNAT或伪装也不起作用。
有人可以向我描述mangle表,并提供一些示例以了解何时应使用它吗?
我正在使用iptable规则来过滤和操作Ubuntu服务器中的数据包。但我看不懂mangle表。
引用此iptables教程:
正如我们已经指出的,该表主要用于处理数据包。换句话说,您可以自由地使用可用于更改TOS(服务类型)字段等的匹配项等。
强烈建议您不要将此表用于任何过滤;此表中的任何DNAT,SNAT或伪装也不起作用。
有人可以向我描述mangle表,并提供一些示例以了解何时应使用它吗?
Answers:
除了其他好的答案,我最近还不得不使用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
这种事情很麻烦,理想情况下应该避免,但是我没有其他选择,这确实解决了问题。
希望这些示例以及手册页有所帮助。
我最近在这里找到了很好的解释。它基本上用于为IP数据包设置特定的报头,以影响进一步做出的路由决策。如果有的话,TTL选项可能是最有趣的:
TTL目标用于更改数据包的TTL(生存时间)字段。我们可以告诉数据包仅具有特定的TTL等。这样做的一个很好的原因可能是我们不想将自己献给爱管闲的Internet服务提供商。一些Internet服务提供商不喜欢在单个连接上运行多台计算机的用户,并且已知某些Internet服务提供商正在寻找生成不同TTL值的单个主机,并将其视为连接到单个计算机的多台计算机的众多标志之一。连接。
其他目标是TOS, MARK, SECMARK, CONNSECMARK
。
作为iptables新手,我想说:mangle表允许修改数据包头中的一些特殊条目。(例如:服务类型,生存时间)(还允许设置特殊标记和安全上下文标记)
iptables(8)
手册页拥有所有你想要的信息,包括mangle表使用的几个很好的例子。