Назад | Перейти на главную страницу

Зонд TCP Window Full / Zero Window в CentOS 5.4 за прокси-сервером Squid

Свежая установка CentOS 5.4 друга плохо себя ведет за прокси-сервером его университета. Если он заберет машину домой и подключит ее напрямую к Интернету, она будет работать нормально. Если он установит на машину какую-нибудь другую ОС (даже старую версию CentOS), она будет нормально работать за прокси. Только когда он находится за прокси-сервером и только когда он работает под управлением CentOS 5.4, он имеет кажущиеся случайными тайм-ауты подключения и чрезвычайно низкую пропускную способность.

Я попросил его сделать небольшой захват пакета, чтобы посмотреть, что происходит. Вот что получилось:

   9291 532.192095  10.74.88.99           161.112.232.22        TCP      40560 > ndl-aas [ACK] Seq=206 Ack=74213 Win=3328 Len=0 TSV=3733959 TSER=77264420
   9292 532.193750  161.112.232.22        10.74.88.99           TCP      [TCP segment of a reassembled PDU]
   9293 532.193812  161.112.232.22        10.74.88.99           TCP      [TCP segment of a reassembled PDU]
   9295 532.234080  10.74.88.99           161.112.232.22        TCP      40560 > ndl-aas [ACK] Seq=206 Ack=77109 Win=384 Len=0 TSV=3734001 TSER=77264424
   9296 532.658579  161.112.232.22        10.74.88.99           TCP      [TCP Window Full] [TCP segment of a reassembled PDU]
   9297 532.658666  10.74.88.99           161.112.232.22        TCP      [TCP ZeroWindow] 40560 > ndl-aas [ACK] Seq=206 Ack=77493 Win=0 Len=0 TSV=3734426 TSER=77264471
   9298 533.091240  161.112.232.22        10.74.88.99           TCP      [TCP ZeroWindowProbe] [TCP segment of a reassembled PDU]
   9299 533.091407  10.74.88.99           161.112.232.22        TCP      [TCP ACKed lost segment] 40560 > ndl-aas [ACK] Seq=206 Ack=77494 Win=2176 Len=0 TSV=3734859 TSER=77264514
   9300 533.092361  161.112.232.22        10.74.88.99           TCP      [TCP segment of a reassembled PDU]
   9301 533.092397  161.112.232.22        10.74.88.99           HTTP     HTTP/1.0 200 OK  (application/x-rpm)

(161.112.232.22 - это прокси, 10.74.88.99 - это поле CentOS, ndl-aas - это порт 3128, на котором squid работает на прокси)

Предполагая, что это вызывает тайм-ауты соединения во всех приложениях (FireFox, yum update и т. Д.), Мне интересно, почему это могло произойти только на этой машине CentOS 5.4 и только за прокси-сервером Squid.

Прокси-сервер - это squid / 3.0.STABLE19, работающий в Linux на 1 переход по сети, и явно настраивается на стороне клиента (путем установки переменной env http_proxy или соответствующей конфигурации для конкретного приложения).

Кто-нибудь поможет?

Проблема решена. Проблема была связана с прокси (на котором работала SunOS). Использование альтернативного прокси-сервера под управлением Linux решило проблему.

Вы можете проверить следующие значения в / proc, которые относятся к масштабированию окна TCP:

/proc/sys/net/core/rmem_default
/proc/sys/net/core/rmem_max
/proc/sys/net/core/wmem_default
/proc/sys/net/core/wmem_max
/proc/sys/net/ipv4/tcp_window_scaling

Посмотрите, различаются ли эти значения между машиной, которая нормально работает с прокси-сервером, и машиной, которую вы пытаетесь настроить.

Также я не знаю, связано ли это, но вы можете подумать, что в CentOS 5 по умолчанию включен SELinux. Это лично вызвало у меня много сложных для диагностики проблем, и вы можете установить его в разрешающий или отключенный режим для тестирования. (ссылка: http://wiki.centos.org/HowTos/SELinux)

ps: это скорее комментарий, чем "ответ"? Пока не могу комментировать