Имеется следующая связка ADSL -> (rl1)FreeBSD(rl0) -> клиенты.
В сторону adsl провайдера поднято ПППоЕ.
клиенты подключается посредством ВПН к FreeBSD и получают через нат доступ в интернет.
ВПН реализован на базе MPD. Все клиенты сидят на WinXP и 1 клиент на freebsd
Работало это всё примерно года 2 и не просило каши.Буквально вчера у всех клиентов перестал открываться яндекс и работать аська(весь остальной интернет доступен)
Стал разбираться. В итоге, после двухчасовых плясок с бубном, выясняю следующее:
если натить пакеты на клиентов в обход туннеля, то вуаля - у всех всё работает.
возвращаю MPD на место и смотрю на MTU (в mpd.conf сервера выставлена опция set iface mtu 1500)
в ifconfig'e всё красиво:
ng0: flags=8890<POINTOPOINT,NOARP,SIMPLEX,MULTICAST> mtu 1500
ng1: flags=8890<POINTOPOINT,NOARP,SIMPLEX,MULTICAST> mtu 1500
ng2: flags=8890<POINTOPOINT,NOARP,SIMPLEX,MULTICAST> mtu 1500
НО, когда приходит клиент с виндой, то MTU меняется и выглядит всё так:
ng0: flags=88d1<UP,POINTOPOINT,RUNNING,NOARP,SIMPLEX,MULTICAST> mtu 1396
inet 10.10.0.1 --> 10.10.0.2 netmask 0xffffffff
покурил man mpd, добавил еще пару опций в конфиг:
set link mtu 1500
set link mru 1500
После этого, о, чудо! У клиента с бсд MTU стал равен 1496, яндекс и аська заработали.
Но на проклятых клиентов с виндой это все равно не подействовало. МТУ у них все равно продолжал меняться на 1396 при подключении.
Ладно пошел на микрософт.ком в поисках услады, нашел: http://support.microsoft.com/kb/826159
всё выставил, перегрузился - не помогло.
В конце концов, обматерившись, я пошел смотреть tcpdump'ом, что ж там такого гадкого мне АОЛ с яндексом шлют.
И обнаружил, что и у того и у другого во всех ответных IP-пакетах выставлена опция Don't Fragment и mss равен 1440:)))
всё, тут я сдаюсь.
проблему так и не решил, клиенты волнуются :(
кто-нибудь с подобным сталкивался?
P.S. на tun0 к провайдеру MTU 1492, на езернетах - 1500