[Comm] NAT: unreachable - need to frag (mtu 576) [tos 0xc0]

Oleg Shulga =?iso-8859-1?q?oleg_=CE=C1_pribor=2Ekharkov=2Eua?=
Пт Май 21 10:50:10 MSD 2004


Eugene Prokopiev wrote:

> Здравствуйте!
> 
> Есть сеть следующей (несколько извращенной ;) ) конфигурации:
> 
> 1. Виртуальная машина под VMware (Win2K) - 192.168.3.3
> 2. Ност-машина (ALM 2.2) - 192.168.3.1. Она по диалапу дозванивается на 
> другую машину, и при дозвоне получает внешний адрес 192.168.201.1. Также 
> она осуществляет SNAT для 192.168.3.3
> 3. Dial-in сервер (ALM 2.2) с адресом 192.168.201.180 для диалапных 
> подключений и внешним реальным адресом. В этот внешний адрес посредством 
> SNAT преобразуется 192.168.201.1.
> 
> Задача: выйти с виртуальной машины во внешний мир.
> 
> tracert показывает, что ничего невозможного нет:
> 
> C:\>tracert yandex.ru
> 
> Трассировка маршрута к yandex.ru [213.180.216.200]
> с максимальным числом прыжков 30:
> 
>   1     1 ms    <1 мс    <1 мс  192.168.3.1
>   2   257 ms   129 ms   137 ms  192.168.201.180
>   3   167 ms   142 ms   129 ms  внешний реальный адрес dial-in сервера
>   4   143 ms   114 ms   127 ms  и т.д.
>   ...
> 
> Трассировка завершена. Удачно.
> 
> Но попытки подключиться к чему-нибудь по TCP (например зайти на 
> удаленную машину по ssh) заканчиваются неудачей.
> 
> Интересно, что с 192.168.3.3 можно подключиться ко всем машинам до 
> 192.168.201.1 включительно, а с машины 192.168.201.1 вообще куда угодно. 
> Т.е. проблемы, связанные с настройкой iptables, исключаются. Но 
> TCP-пакеты не проходят через 2 NAT'а одновременно, только через один.
> 
> Еще интересные вещи сообщает tcpdump -i eth0 "dst some_external_ip":
> 
> 20:58:28.838417 ewsd.donpac.ru > some_external_host_name: icmp: 
> 192.168.201.1 unreachable - need to frag (mtu 576) [tos 0xc0]
> 
> Происходит это при попытке подключиться по ssh к хосту 
> some_external_host_name.
> 
> На тему 576 - действительно такой mtu и mru выставлен в /etc/ppp/options 
> на Dial-in сервере. А скорость dial-in-модема установлена в 57600 bps
> 
> Куда копать дальше? Менять mtu? На что? И что вообще происходит?
> 

Может вот сюда?

man iptables /frag

    TCPMSS
        This  target  allows to alter the MSS value of TCP SYN packets, 
to con-
        trol the maximum size for that connection (usually limiting it 
to  your
        outgoing  interface's MTU minus 40).  Of course, it can only be 
used in
        conjunction with -p tcp.
        This target is used to overcome criminally braindead  ISPs  or 
servers
        which  block  ICMP  Fragmentation Needed packets.  The symptoms 
of this
        problem are that everything works fine from your Linux 
firewall/router,
        but machines behind it can never exchange large packets:
         1) Web browsers connect, then hang with no data received.
         2) Small mail works fine, but large emails hang.
         3) ssh works fine, but scp hangs after initial handshaking.
        Workaround:  activate  this option and add a rule to your 
firewall con-
        figuration like:
         iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN \
                     -j TCPMSS --clamp-mss-to-pmtu

        --set-mss value
               Explicitly set MSS option to specified value.

        --clamp-mss-to-pmtu
               Automatically clamp MSS value to (path_MTU - 40).

        These options are mutually exclusive.


-- 
WBR
Oleg Shulga, Kharkov Pribor, IT Manager




Подробная информация о списке рассылки community