Назад | Перейти на главную страницу

Linux - настроить интерфейс, чтобы пакеты не фрагментировались

Я использую Linux в качестве роутера.

В машине есть два сетевых адаптера. Этот маршрутизатор будет использоваться для экспериментов, поэтому я установил для одного из его интерфейсов значение MTU ниже стандартного (давайте решим, что для MTU установлено значение 200).

Теперь большинство маршрутизаторов (а может, все маршрутизаторы?) Имеют возможность решать, фрагментируют ли они IP-пакеты, превышающие MTU, или нет.

Я хотел бы иметь такое же поведение на моей Linux-машине - я не хочу, чтобы пакеты были фрагментированы. Пакеты большого размера следует отбрасывать. Если флаг DF включен, я хотел бы, чтобы интерфейс возвращал сообщение ICMP («большой пакет. DF установлен в 1»)

Как это может быть сделано?

Если установлен бит DF, то маршрутизатор, в данном случае маршрутизатор - любое устройство, которое направляет пакет с одного интерфейса на другой, не будет фрагментировать. Это цель позволить хосту установить бит DF, потому что вы не хотите фрагментации.

В любом случае, если маршрутизатор фрагментирует пакет с установленным битом DF, он не соответствует требованиям RFC. Скорее всего или нет посылать сообщение о недоступности ICMP - это совсем другая история.

Обычно такое поведение требуется, потому что оно позволяет обнаруживать PMTU, но многие люди отключают его из-за опасений DoS-атак, истощая ресурсы маршрутизатора для генерации этих сообщений при наличии достаточного количества пакетов.

Итак, теперь вернемся к вашему настоящему вопросу, ха-ха, извините, если это было то, что вы уже знали. iptables имеет возможность отбрасывать в зависимости от размера пакета. Если вы не хотите отправлять эти сообщения о недоступности ICMP, вы также можете использовать для этого iptables ...

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