[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