Страница 1 из 1

Странности с аплоадом файлов из под Windows

Добавлено: 2007-06-10 18:54:18
Андрей
Доброе время суток!

Настроил сервер, возникла следующая проблема:
Скачивание файлов (через фтп, веб или сфтп) происходит нормально, но при попытке закачать файл на сервер из под Windows XP или Linux фтп клиентом или по вебу происходит отправка примерно 2-х килобайт и зависание с последующим отваливанием по таймауту. При этом если то же самое делать c других компов под управлением FreeBSD - все нормально.
На сервере стоит FreeBSD 6.2-RELEASE AMD-64 (железо:
CPU: Intel(R) Core(TM)2 CPU 6600 @ 2.40GHz
сетевуха: <RealTek 8168B/8111B PCIe Gigabit Ethernet>
).

Пробовал отключать ipfw на сервере и все фаирволлы на клиентах - не помогло.

Добавлено: 2007-06-10 19:53:58
Alex Keda
может это знак? :)
что надо везде павильные оси юзать? :)

Добавлено: 2007-06-10 20:11:48
Андрей
Что и линуксы тоже не правильные ?!?! Мне просто непонятно что фрю может так смущать. Есть мысль что дело в пакетах, которые она получает, но даже не понятно на что и куда смотреть. Пробовал смотреть tcpdump-ом что происходит на интерефейсе, настораживает что там постоянно в ответах сервера клиенту проскакивает bad cksum 0 (->2fd1)!). Но это пишется даже когда я пытаюсь апоадить файл и из под фри, но ей это не мешает почему то успешно его заливать. Есть еще мысль что проблема может крыться в том, что все виндовые машины сидят за НАТ-ом, в отличие от фревых машин, которые сервера и имеют реальный IP адрес. Но знаний как локализовать причину такого странного поведения у меня явно не хватает.

Хотелось бы спросить глубокоуважаемого All-а, на что можно и нужно посмотреть чтобы хоть как то приблизиться к постановке диагноза или какие эксперименты могут подсказать в каком направлении двигаться ?

Добавлено: 2007-06-10 20:19:05
Alex Keda
заливают в активном или пассивном режиме?

Добавлено: 2007-06-10 20:25:53
Андрей
в пассивном. Причем файлы где до 2900 байт через ftp заливаются нормально, если закачивать через http - то нормально отправлются файлы размером до ~800 байт (ИМХО, HTTP заголовки как раз добивают размер пакета до 2900, поэтому больше не пролазит).

Добавлено: 2007-06-10 20:30:48
Alex Keda
а в логах ftp/http - что при обрыве?
консольным клиентом пробовал - из под винды?
=========
странно вообще - если честно - идей особых нет...

Добавлено: 2007-06-10 21:01:30
Андрей
в том то и дело, что при обрыве в логах - ничего. Полное впечатление что ftp или http сервер даже не в курсе, что им хотели что то прислать. Если шлешь меньше 2900 байт по фтп - он получает и пишет об этом, если больше - все, идет зависание и в логи ничего не попадает. ИМХО проблема на уровне TCP/IP, поэтому дебажить надо на этом уровне. А насчет консольного ftp по WinXP - я так и не нашел способа переключить его в пассивный режим (что поделать, тукан я).

Кстати, вопрос, вот что выдает tcpdump:
22:02:49.974106 IP (tos 0x10, ttl 64, id 16199, offset 0, flags [DF], proto: TCP (6), length: 564, bad cksum 0 (->2c62)!) 195.182.135.82.22 > 193.125.192.132.50064: P 25328:25840(512) ack 49 win 33304 <nop,nop,timestamp 14545467 211581117>
22:02:50.372486 IP (tos 0x10, ttl 64, id 16200, offset 0, flags [DF], proto: TCP (6), length: 564, bad cksum 0 (->2c61)!) 195.182.135.82.22 > 193.125.192.132.50064: P 25328:25840(512) ack 49 win 33304 <nop,nop,timestamp 14545850 211581117>
22:02:50.488825 IP (tos 0x0, ttl 53, id 9572, offset 0, flags [DF], proto: TCP (6), length: 52) 193.125.192.132.50064 > 195.182.135.82.22: ., cksum 0xf3df (correct), ack 25840 win 33304 <nop,nop,timestamp 211581261 14545850>

что означает proto: TCP (6) ? конкретно интересует: (6). Не может ли это означать что это IPv6 и фря пытается работать с виндой именно по этому протоколу и поскольку WinXP его не поддерживает возникают проблемы ? Или я брежу ?

Добавлено: 2007-06-10 21:24:51
Alex Keda
может быть.
отключи шестой тцп на фре

Код: Выделить всё

echo 'ipv6_enable="NO"' >> /etc/rc.conf

Добавлено: 2007-06-10 22:11:02
Garry
Андрей писал(а):А насчет консольного ftp по WinXP - я так и не нашел способа переключить его в пассивный режим (что поделать, тукан я).
Да не. Он действительно не в курсе, что такое пассивный режим - и переключить его не получится. Попробуй ncftpget/ncftpput...

Добавлено: 2007-06-10 22:25:25
schizoid
как вариант MTU?

Добавлено: 2007-06-10 22:40:16
Андрей
отключи шестой тцп на фре
отключил - не помогло.
Попробуй ncftpget/ncftpput...
это еще что за звери ?
как вариант MTU?
тоже вариант. Но вот что с ним делать - уменьшать ? Если да, то где и как.

Кстати, выяснилось, что не все винды одинаково полезны. Нашелся товарищ который смог из под них залить файлик в 3мега. Но он сидел на модеме, то есть опять таки приходим к реальному IP и NAT. То ли это НАТ так гадит в TCP пакеты что мою фрю они в ступор вводят, то ли совсем перестал что либо понимать.

Куда смотреть ? По чему мне man-ы читать ? [/quote]

Добавлено: 2007-06-10 22:44:56
Alex Keda
а чем реализован nat - не в курсе?
nat бывает очень разный...

Добавлено: 2007-06-10 22:51:55
Андрей
я пробовал с двух машин закачивать: из офиса: там НАТ построен на Win 2003 + Kerio Firewall 6.0, и из дома - там стоит железка ZyXEL Prestige 600 Series.

Добавлено: 2007-06-10 22:54:37
Garry
Андрей писал(а):
Попробуй ncftpget/ncftpput...
это еще что за звери ?
Это сторонние программы под винду. Для работы с ФТП. С кучей настроек. Из командной строки. Есть PASV и лог!
Берут тут: http://www.ncftp.com/download/

Или, конкретно: ftp://ftp.ncftp.com/ncftp/binaries/ncft ... -win32.exe

Добавлено: 2007-06-11 10:56:42
Андрей
Это сторонние программы под винду. Для работы с ФТП. С кучей настроек. Из командной строки. Есть PASV и лог!
Да, скачал, посмотрел - эффекта ноль. При закачке файла просто начинает показывать как падает скорость заказчки до 0 и все, висит. Никаких ошибок или еще чего то не выдает.

Пробовал играться с MTU. Выставил на виндовой машине MTU=1400, ошибки bad cksum 0 в tcpdump исчезли, но эффекта на закачку это никакого не оказало :(

Еще идеи ? :)

Добавлено: 2007-06-11 13:24:19
Гость
Ура! поборол. Регулировки MTU не помогли, пришлось зарезать длину пакета путем ограничения MSS, гугление привело к чудесной комбинации команд:
1. cd /usr/ports/net/tcpmssd | make | make install | make clean
2. /usr/local/bin/tcpmssd -p 1234 -b -m 1240
3. /sbin/ipfw add 1 divert 1234 all from any to any via re0

и я в шоколаде :)

Остался один маленький вопрос: сейчас я так понимаю tcpmssd висит демоном. Но запускал я его вручную, следовательно если будет перезагрузка сервера - он не стартанет (в rc.d я не нашел никаких скриптов для его запуска). Куда лучше всего запихать строчку 2, чтобы при загрузке системы он запустился ?

Добавлено: 2007-06-11 13:41:14
SeeDru
В rc.d и пихай.

Добавлено: 2007-06-11 13:48:19
vintovkin
всё проги стартуют из :

Код: Выделить всё

#/etc/rc.conf

Добавлено: 2007-06-11 14:38:00
schizoid
vintovkin писал(а):всё проги стартуют из :

Код: Выделить всё

#/etc/rc.conf
совсем даже не обязательно...