Выкладываю затерявшуюся статью о тонкостях настройки FTP-серверов на домашних интернет-каналах. Замечу, что за год, прошедший с момента написания статьи, Билайн убрал фильтрацию трафика на моем канале, и сейчас сервер нормально работает по 21-му порту. Между тем, статья все равно будет полезна многим, кто столкнется с проблемами при создании FTP-сервера.
Я потратил почти три часа в попытках поднять FTP-сервер на Beeline. Не могу не поделиться сделанным открытием. Вообще говоря, настройка FTP-сервера лишь чуть сложнее, чем torrent-клиента. Под Windows сервис можно поднять на бесплатной программе FileZilla Server, которая распространяется, в частности, в комплекте XAMPP для веб-разработчиков. Выбор и настройку пользователей и их прав оставлю за рамками рассказа - это тривиально и очевидно. После того, как сервер настроен и протестирован на локальной машине (или в локальной сети), начинается самое интересное: его нужно "открыть миру", пробросив порты сквозь NAT роутера. Операция, опять же штатная, и не отличается от "проброса" портов для других приложений (torrent-клиента, RDP-подключения и т.д.), за исключением одного небольшого нюанса.
FTP-протокол работает по двум портам сразу - по, скажем, "сигнальному", передаются только команды Клиента и ответы Сервера. По "дата" порту происходит собственно передача данных. Контакт начинается с того, что Клиент подключается к Серверу по "Сигнальному" порту (обычно это 21-й порт), и потом по дефолту переходит в "пассивный" режим - предлагает Серверу выбрать порты для осуществления прямого "дата" соединения. FTP-cервер при этом берет какой-нибудь порт из заранее выбранного диапазона (диапазон портов, как я понимаю, резервируется на случай нескольких одновременных подключений). По "сигнальному" порту Сервер пересылает Клиенту свой текущий IP-адрес (его, впрочем, клиент и так уже знает, ведь он уже подконнектился, но все же) и номер порта для соединения, после чего происходит успешная передача данных.
Таким образом, для правильной работы FTP-сервера необходимо "пробросить" через роутер один "сигнальный" порт и диапазон возможных "дата" портов. В настройках сервера необходимо выставить те же значения.
Итак, в теории все ясно и просто, но у меня в упор не получалось настроить FTP на Beeline на новом сервере. В локальной сети все работало, но извне получить доступ к Серверу не получалось ни при каких обстоятельствах примерно вот с такими симптомами:
Команда: PASV Ответ: 227 Entering Passive Mode (95,24,139,182,195,202) Команда: MLSD Ответ: 425 Can't open data connection. Ошибка: Не могу получить список каталогов! Статус: Отключен от сервера
Что я только не делал: отключал файерволлы компьютеров, файерволл провайдера в личном кабинете, отключал Stateful Packet Inspection в роутере, отключал вообще все возможные фильтрации в роутере и, наконец, настроил его просто как прямой шлюз к Серверу - все впустую, клиент успешно подключался к серверу, но соединения никак не хотел устанавливать.
До тех пор, пока я не ограничил диапазон "дата" портов одним портом за номером 50000 и не обратил внимание на логи FTP-сервера и Клиента, открытые на соседних мониторах. Вот что я увидел:
Сервер:
(000001) 12/13/2010 16:26:12 PM - anonymous (109.252.213.XX)> PASV (000001) 12/13/2010 16:26:12 PM - anonymous (109.252.213.XX)> 227 Entering Passive Mode (89,178,150,XX,195,80) (000001) 12/13/2010 16:26:12 PM - anonymous (109.252.213.XX)> MLSD
Клиент:
Команда: PASV Ответ: 227 Entering Passive Mode (89,178,150,XX,195,200) Команда: MLSD
Ничего не заметили? Сервер передал свой IP-адрес и назначил порт (последние два числа) 195*256+80 = 50000 , как я и просил. А что же при этом получил клиент? 195*256+... 200 = 50120 ! В процессе передачи данных по "сигнальному" порту информация оказалась искажена. Кто же ее исказил? Билайн!
Сухой остаток: на моем канале Билайн сканирует весь трафик по 21-му порту, и, если обнаруживает FTP-транзакции с сервером, искажает ответы Сервера с тем, чтобы соединение не удавалось установить. Думается, сделано это было еще в давнишние времена (когда это был еще не Билайн, а Корбина), когда трафик стоил существенно больших денег и провайдер его экономил.
Выход из положения: использовать нестандартный порт для "сигнального" подключения, либо написать письмо в техподдержку. Попробую начать со второго варианта.
Свой первый Сервер (AKKATONE?) я собрал еще в 2005 году, как только получил безлимитный доступ к Корбине со скоростью 160 kbit/s . Это был уже на тот момент устаревший, Pentium 200 MMX, к которому на термоклей был посажен радиатор от Pentium III и со временем подключен HDD на 120 ГБ. Получилась очень тихая и симпатичная машина, честно проработавшая вплоть до аномальной жары лета 2010 г. Жару не перенес блок питания, после чего я занялся сборкой нового Сервера под именем CHRONOS.
Оставить комментарий