До осени 2001 года моим любимым протоколом был FTP. Полезные программы, музыка, иногда даже клипы! Бесплатный ночной dail-up и в перед! Тогда очень редко встречались HTTP серверы с докачкой. Закон подлости работал безукоризненно: стоило начать скачивать какой-нибудь большой файл - мегабайта на три, на середине звучал самый ненавистный звук "цк" и нужно все начинать сначала. В то же время большинство FTP серверов поддерживало докачку и это было прекрасно. Но время идет, audiogalaxy уже не та, и FTP с интересным контентом позакрывали.
Последнее время протокол FTP у меня исключительно негативные эмоции. Во время подглючения почему-то возникали таймауты. Например логин отправлялся, а запроса пароля не было. Причем на NetBSD все было существенно лучше чем на винде. На винде даже тельнетом не удавалось получить ответ от сервера. На NetBSD иногда пробивался клиент. Если оно законнектилось, скорее всего можно было работать. Коннектилось долго и редко. Что интересно, когда я сделал FTP сервак на 5521 порту, винда подключилась с первого раза.
Мне казалось, что винда не коннектится из-за вайфая, а лаги из-за провайдера. Очевидно, доверия такие теории у меня не вызывали. Я долго шерстил конфир сицки, но ни чего не получалось. В итоге я решил задать вопрос на server fault. Стал редактировать конфиг чтобы убрать из него приватные данные. И тут я ВНЕЗАПНО заметил в конфиге две строчки, которых вместе быть не должно:
ip route 0.0.0.0 0.0.0.0 interface FastEthernet4
ip route 0.0.0.0 0.0.0.0 dhcp
Первая значит, что по дефолту все идет в интерфейс FastEthernet4. Вторая, что все по дефолту идет туда, куда скажет dhcp от провайдера. Интерфейс FastEthernet4 подглючен к провайдеру, так что это типа одно и тоже. Непонятно как они вместе сосуществовали - дефолтный маршрут должен же быть один!
Я удалил запись с интерфейсом и опять же ВНЕЗАПНО все заработало. Причем пропали тормоза с DNS. Оказалось что разница между записями
есть. В первом случае запросы идут в ethernet интерфейс. Это значит, что для прокладки маршрута в каждую подсеть, посылается arp запрос, который в итоге должен найти маршрутизатор провайдера. Скорее всего некоторые запросы терялись. Во втором случае все идет в IP адрес, который маршрутизатор провайдера и есть. Поэтому нужно сделать только один arp запрос чтобы узнать его MAC-адрес.
Почему это так сильно влияло именно на FTP остается загадкой.