什么是iptables的mangle表?

我正在使用iptable规则来过滤和操纵我的Ubuntu服务器中的数据包。 但我不明白的mangle表。

引用这个iptables教程 :

这个表格应该和我们已经注意到的一样,主要用于包装。 换句话说,你可以自由地使用可以用来改变TOS(服务types)字段等等的mangle比赛等等。

强烈build议您不要使用此表进行任何过滤; 本表中也不会有任何DNAT,SNAT或伪装。

任何人都可以向我描述mangle表,并提供一些例子来了解我应该使用它吗?

除了其他好的答案之外,我最近还不得不使用mangle表来调整由PPPoE,PPP和ATM带来的stream量造成的MTU(最大传输单元)差异,每一个都会增加额外开销,从而减less可用于IP的有效载荷从通常的1500字节的以太网帧。

正常情况下,pipe道两端的系统的MTU默认为1500,因此他们会尝试发送较大的IP帧。 由于实际可用的有效载荷大小较小,这将导致数据包碎片化,除了发送者经常要求数据包不被分段,并且因此最终完全被丢弃。

在理想的情况下,pathMTU发现将允许terminal根据需要调整其MTU,但是这个发现依赖于ICMP,并且出于安全原因,我的控制之外的networking通常configuration为丢弃ICMP。

唯一的select是在我的路由器中使用数据包重组来修改TCP SYN数据包,以降低传输层的最大段大小:

 iptables -t mangle -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --set-mss 1452 

这样的事情是混乱的,理想的情况下应该避免,但我没有其他的select,这确实解决了这个问题。

希望这些例子有帮助,以及手册页。

我最近在这里find了一个好的解释。 它主要用于为IP数据包设置特定的报头,以影响进一步的路由决策。 如果有的话,TTL选项可能是最有趣的:

TTL目标用于更改数据包的TTL(生存时间)字段。 我们可以告诉数据包只有一个特定的TTL等等。 其中一个很好的理由可能是我们不希望把自己放到香港的互联网服务提供商那里。 一些互联网服务提供商不喜欢在单一连接上运行多台计算机的用户,并且有一些互联网服务提供商知道寻找单个主机产生不同的TTL值,并将其作为连接到单个计算机的多台计算机的许多标志之一连接。

其他目标是TOS, MARK, SECMARK, CONNSECMARK

作为一个iptables noob,我会说:mangle表允许修改数据包头中的一些特殊条目。 (如:服务types,生存时间)(还可以设置特殊标记和安全上下文标记)