Linux – 设置接口不分片数据包

我正在使用Linux作为路由器

机器有两个网卡。 这个路由器将被用于实验,所以我已经设置了其中一个接口,使MTU低于标准(为了争论起见,我们决定MTU已经被设置为200)。

现在,大多数路由器(或者也许是所有的路由器)都能够决定是否分割超过MTU的IP数据包。

我想在我的Linux机器上有相同的行为 – 我不希望数据包被分割。 过大的数据包应该被丢弃。 如果DF标志打开,我想接口返回一个ICMP信息(“packet to big。DF set to 1”)

如何才能做到这一点?

如果DF位被设置,那么路由器(这里的路由器是将数据包从一个接口路由到另一个接口的任何设备)将不会被分割。 这是允许主机设置DF位的目的,因为您不需要分段。

无论如何,如果一台路由器将一个具有DF位的数据包分段,那么它就不符合RFC标准。 而不是发送ICMP不可达消息是另一回事。

通常情况下,您需要这种行为,因为它允许PMTU发现,但是很多人在害怕DoS攻击时将其禁用,因此会耗尽路由器资源以生成足够数据包的消息。

所以现在回到你真正的问题哈哈,对不起,如果这是你已经知道的东西。 iptables有能力根据数据包大小下降。 如果你不想发送那些ICMP不可达消息,那么你也可以使用iptables。

http://www.linuxtopia.org/Linux_Firewall_iptables/x2682.html