MTU

Это старая версия документа.


В компьютерных сетях термин maximum transmission unit (MTU) означает максимальный размер полезного блока данных одного пакета , который может быть передан протоколом без фрагментации.

Значение MTU определяется стандартом соответствующего протокола, но может быть переопределено автоматически для определённого потока (проколом PMTUD) или вручную для нужного интерфейса. На некоторых интерфейсах MTU по умолчанию может быть установлено ниже максимально возможного. Значение MTU ограничено снизу как правило минимально допустимой длиной кадра.

MTU Discovery Black Hole

Проблема представляет потенциальную опасность для любого PPPoE соединения, использующего MTU меньше типового (1500 байт). Чаще всего проблема проявляется в том, что часть сайтов не заргужается.

Существует несколько вариантов решения этой проблемы.

Отмена фильтрации пакетов ICMP

Отмена фильтрации пакетов ICMP является самым простым способом, однако зачастую подобная операция находится вне компетенции пользователя.

Динамическая настройка размера передаваемого пакета средствами iptables

Для настройки размера передаваемого пакета на шлюзе пользователя средствами iptables меняют значение MSS (максимальный размер сегмента, то есть величина, меньшая MTU на 40 байт в случае протокола IPv4).

Создаём скрипт с дампом правил iptables:

sudo nano /etc/network/if-up.d/iptables-rules

Копируем следующий код и заменяем <inet_if> на имя внешнего сетевого интерфейса:

#!/sbin/iptables-restore
*mangle
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A FORWARD -o <inet_if> -p tcp -m tcp --tcp-flags SYN,RST SYN -m tcpmss --mss 1300:1500 -j TCPMSS --clamp-mss-to-pmtu
-A OUTPUT -o <inet_if> -p tcp -m tcp --tcp-flags SYN,RST SYN -m tcpmss --mss 1300:1500 -j TCPMSS --clamp-mss-to-pmtu
COMMIT

Сохраняем и закрываем: Ctrl+O, Enter, Ctrl+X

Делаем скрипт исполняемым и загружаем правила iptables:

sudo chmod +x /etc/network/if-up.d/iptables-rules
sudo iptables-restore /etc/network/if-up.d/iptables-rules

Статическая настройка MTU в параметрах сетевого подключения

Для ручной настройки MTU необходимо подобрать максимальный размер MTU, для которого не будет выводиться сообщение «Frag needed and DF set», записать это значение в параметры текущего сетевого подключения и переустановить соединение.

Для подбора можно воспользоваться следующими командами:

ping -c 4 -M do -s 1500 ya.ru
tracepath ya.ru

Ссылки