2

Что означает это правило iptables: tcp flags:0x06/0x02 TCPMSS clamp to PMTU?

Выполнение iptables -vnL на моем маршрутизаторе DD-WRT показывает следующее правило в цепочке FORWARD : TCPMSS tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp flags:0x06/0x02 TCPMSS clamp to PMTU .

Вместо общих действий ACCEPT или DROP это TCPMSS . Что это значит?

1 ответ1

2

Это довольно стандартное правило iptables для предотвращения проблем с обнаружением PMTU.

Из этого:

... Path MTU Discovery не работает так, как должно больше. Если вы точно знаете, что прыжок где-то в вашей сети имеет ограниченный (<1500) MTU, вы не можете полагаться на обнаружение PMTU Discovery.

Помимо MTU, существует еще один способ установить максимальный размер пакета, так называемый максимальный размер сегмента. Это поле в части TCP Options пакета SYN.

Последние ядра Linux и несколько драйверов PPPoE (в частности, превосходный Roaring Penguin) имеют возможность «зажать MSS».

Хорошая вещь об этом состоит в том, что, устанавливая значение MSS, вы недвусмысленно говорите удаленной стороне:«Никогда не пытайтесь отправить мне пакеты больше этого значения». Никакой трафик ICMP не требуется, чтобы заставить это работать.

Плохо то, что это очевидный взлом - он разбивает «конец в конец», изменяя пакеты. Сказав это, мы используем этот трюк во многих местах, и он работает как шарм.

Чтобы это работало, вам нужен как минимум iptables-1.2.1a и Linux 2.4.3 или выше. Основная командная строка:

# iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .