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

Проблема с маршрутизацией / брандмауэром / dhcp /… в Windows 2003?

У меня проблема с доступностью сервера извне (из локальной сети все работает отлично). Ключевой проблемой является http, когда запросы выполняются, но только если ответ меньше определенного количества КБ.

Примеры удачной и неудачной попытки:

# wget http://tamtam2.izdelava.si/a.html
--12:46:08--  http://tamtam2.izdelava.si/a.html
           => `a.html'
Resolving tamtam2.izdelava.si... done.
Connecting to tamtam2.izdelava.si[84.255.203.125]:80...connected.
HTTP request sent, awaiting response... 200 OK
Length: 255 [text/html]

100%[=====================>] 255          249.02K/s    ETA 00:00

12:46:08 (249.02 KB/s) - `a.html' saved [255/255]


# wget http://tamtam2.izdelava.si/b.html
--12:45:40--  http://tamtam2.izdelava.si/b.html
           => `b.html'
Resolving tamtam2.izdelava.si... done.
Connecting to tamtam2.izdelava.si[84.255.203.125]:80...connected.
HTTP request sent, awaiting response...

Аналогичная проблема возникает и с FTP-соединениями, например, когда соединение прерывается при обращении к каталогу, содержащему слишком много файлов или подпапок. Я пробовал использовать разные версии apache (и даже ftp-серверы), но результат всегда был одинаковым. На сервере IIS проблема такая же.

Предполагаю, что проблема где-то на уровне рутинга / фаервола, но ничего конкретного определить не удалось. Кто-нибудь знает, в чем может быть проблема?

Для меня это звучит как проблема с обнаружением MTU пути. Взгляните на эту процедуру от Microsoft: http://support.microsoft.com/kb/314825

Как правило, с серверного компьютера попробуйте выполнить эхо-запрос на компьютер, на котором вы выполнили тест выше, с аргументом:

ping <machine above> -f -l 1472

Это вернет вам ответ «Требуется фрагментация» от первого прыжка, который не может обрабатывать пакеты такого размера.

Какое подключение к глобальной сети имеет серверный компьютер? Например, соединения DSL обычно имеют MTU менее 1500.

В вашем брандмауэре может быть опция конфигурации, позволяющая «закрепить» TCP MSS на MTU, чтобы вам не приходилось вносить какие-либо изменения в MTU вашего серверного компьютера. Как только вы определили, что это проблема MTU, вы можете заняться исправлением на основе брандмауэра.

Похоже, что брандмауэр периметра настроен на ограничение размера HTTP-запроса / ответа. Но почему брандмауэр ведет себя по-разному для разных клиентов wget, браузеров и скриптов php, не ясно. Используйте wirehark на обоих концах, чтобы точно увидеть, что происходит с проводом в каждом случае. Это должно помочь вам в решении проблемы.