Имеется следующая связка 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
>Имеется следующая связка 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Ну ясно сказано, что пакеты должны быть нефрагментированые, а итак как у тебя mtu выставлен в 1500 то пакет таким размером, по любому будет фрагментироваться. Выставь mtu 1300 для клиентов для начала и посмотри что будет.
>Ну ясно сказано, что пакеты должны быть нефрагментированые, а итак как у
>тебя mtu выставлен в 1500 то пакет таким размером, по любому
>будет фрагментироваться. Выставь mtu 1300 для клиентов для начала и посмотри
>что будет.
что-то я не понял специфики :)если яндекс шлет пакет с mss 1440 + 40 байт на tcp/ip, получается 1480, что как раз убирается в 1500, почему при этом пакет будет фрагментироваться? как раз при выставленном МТУ 1300 пакет будет разбит на фрагменты. ну даже если я и не прав, все равно ваш совет не помогает.
ставлю set link mtu 1300 и set link mru 1300, получаем на интерфейсе мту 1296:
ng0: flags=88d1<UP,POINTOPOINT,RUNNING,NOARP,SIMPLEX,MULTICAST> mtu 1296
inet 10.10.0.1 --> 10.10.0.2 netmask 0xffffffffяндекс и аська не откликаются.
да, присутствует также еще опция set iface enable tcpmssfixдля разнообразия сделал еще на внешнем tun0 mtu в 1300, яндекс с роутера доступен, клиентам все равно нет.
А MPD какой версии стоит?
>А MPD какой версии стоит?
mpd-3.18_4