On Wed, 19 May 1999, Basil V. Dolmatov wrote:
> > [*] IP: Disable Path MTU Discovery (normally enabled)
> >
> > Что бы это еще могло такое быть? Встречается на вполне конкретных
> > хостах.
> Линукс, кроме MTU discovery делает еще одну "забавную" вещь, он набивает
> первый пакет "под завязку", при этом, если на пути есть туннель, то есть
Насколько я понимаю, 'Path MTU discovery' алгоритм так и строится, что
TCP сессия начинается с пакета, равного MTU локального интерфейса, но DF
там должен быть set. В случае необходимости фрагментации линукс в данном
случае должен получить icmp 'packet-too-big' (Fragmentation needed and DF
set). Может в этом проблема? Т.е. я к тому, что если все так как я
предположил, и роутер на туннеле будет слать icmp 'packet-too-big', и
линукс его получит, то линукс сможет сделать пакет нужного размера и
проблема с фильтром на FreeBSD будет решена. А под "завязку" и должно быть
по науке.
> происходит фрагментация (DF not set, так что, туннель его честно фрагментит),
> результатом является то, что идет setup-пакет, который является фрагментом,
> а это не все пакетные фильтры считают корректным (например, ipfw на FreeBSD
> такие пакеты сплевывает).
Что касается фильтров, то например в линуксе можно влючить/выключить --
хочешь ли ты собрать фрагменты в целый пакет или нет, перед тем, как его
судьбу будет решать firewalling. Не берусь утверждать, но хотелось
бы верить, что FreeBSD это тоже умеет. В крайнем случае, никто не мешает
это сделать ручками на divert'ах.
> Вопрос "что делать?" - ну, может кто-нибудь из спецов по Линуксу посоветовать,
> как его можно отучить от этого? Я - не знаю. Со стороны Free - единственный
Можно попробовать выключить Path MTU discovery адгоритм, но честно говоря,
как линукс строит свои TCP-сессии в этом случае рассказать не берусь --
ни разу не возникало такой необходимости. В старом это кажется делается в
ядре, в новом ( 2.2.x, 2.1.x, 2.3.x) -- что-то типа
'echo 1 > /proc/sys/net/ipv4/ip_no_pmtu_disc'. А вообще, про
остальные тонкие настройки можно почитать в
/usr/src/linux/Documentation/networking/ip-sysctl.txt в ядре.
> способ - выключить ipfw на конкретный ip (эти фрагменты "проскакивают"
> проверки порта и протоколв) - для принимающего mail-server - очевидно, что
> не способ... :(
>
>
> С принимающей стороны это выглядит так:
>
> May 19 16:49:52 frog /kernel: ipfw: 10010 Deny TCP 195.42.160.68 195.170.33.42 in via de1 Fragment = 182
Sincerely yours,
Ilia Zubkov,
Educational Network technical director
=============================================================================
"inet-admins" Internet access mailing list. Maintained by East Connection ISP.
Mail "unsubscribe inet-admins" to Majordomo@info.east.ru if you want to quit.
Archive is accessible on http://info.east.ru/rus/inetadm.html