我正在使用Linux作为路由器。
这台机器有两个NIC。这个路由器将用于实验,所以我已经设置了它的一个接口,它的MTU低于标准(为了论证起见,让我们确定MTU已经设置为200 )。
现在,大多数路由器(或者所有路由器?)有能力决定它们是否分割超过MTU的ip数据包。
我希望在我的linux机器上有同样的行为--我不希望数据包被分割。应该丢弃超大的数据包。如果DF标志打开,我希望接口返回ICMP消息(“包到大. DF设置为1")
这是如何做到的呢?
发布于 2012-11-16 00:33:39
如果设置了DF位,那么路由器(这里的路由器是将数据包从一个接口路由到另一个接口的设备)将不会被分割。这就是允许主机设置DF位的目的,因为您不想分割。
不管怎么说,如果一个路由器分割了一个设置了DF位的数据包,那么它就不符合RFC标准。不管是否发送ICMP,无法到达的消息都是另一回事。
通常,您需要这种行为,因为它允许PMTU发现,但是许多人由于害怕DoS攻击而禁用它,耗尽路由器资源来生成足够多的数据包。
所以现在回到你真正的问题哈哈,如果这是你已经知道的事情,那么很抱歉。iptables具有基于数据包大小的丢弃能力。如果您不想发送那些ICMP无法到达的消息,您也可以使用iptable来实现.
http://www.linuxtopia.org/Linux_防火墙_iptables/x2682.html
https://serverfault.com/questions/449011
复制相似问题