Настройка FTP-сервера на домашнем сервере или как провайдеры вмешиваются в трафик по 21-му порту

Выкладываю затерявшуюся статью о тонкостях настройки 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-транзакции с сервером, искажает ответы Сервера с тем, чтобы соединение не удавалось установить. Думается, сделано это было еще в давнишние времена (когда это был еще не Билайн, а Корбина), когда трафик стоил существенно больших денег и провайдер его экономил.

Выход из положения: использовать нестандартный порт для "сигнального" подключения, либо написать письмо в техподдержку. Попробую начать со второго варианта.

Leon — 2012-05-17, 15:25

Ждем продолжения)

Блог

Tilda Module: интеграция NetCat с Tilda.cc

Представляем нашу новую разработку, модуль интеграции CMS NetCat с платформой Tilda.cc. Модуль дает возможностью полуавтоматически размещать классные лендинги прямо в структуре вашего сайта!

далее

Как оптимально заархивировать файлы, чтобы распаковать их средствами ISPmanager?

В определенных случаях файлы выгоднее заливать на веб-сервер в виде архива. Во-первых, если данные хорошо сжимаются, или же просто файлов очень много, это сократит время заливки. Во-вторых, в любом случае это обезопасит данные от случайного повреждения, так как при распаковке архива происходит проверка его целостности с помощью контрольной суммы (CRC). Однако, не вполне понятно, какой формат архива и тип сжатия выбирать? Мы провели небольшое экспериментальное исследование на эту тему.

далее

Как расшифровать бэкапы, зашифрованные ISPmanager?

В ISPmanager версии 5.52.0 и старше, реализована новая система резервного копирования, построенная на основе некоей ISPtar. И работает она... своеобразно. Попробуем разобраться, как именно.

далее

Типовой сайт по раскрытию информации по Приказу ФСФР 22.06.2005 № 05-23/пз-н

Представляемый программный комплекс предназначен для российских УК ПИФ (управляющих компаний паевого инвестиционного фонда). В соответствии с требованиями законодательства, такие УК обязаны иметь сайт по раскрытию информации, на котором будет регулярно публиковаться определенный набор документов, касающихся их деятельности. И не только публиковаться, но и своевременно отправляться в Архив, а кроме всего прочего должно вестись журналирование всех этих действий. Иначе -- плохо, иначе -- нарушение действующего законодательства, наказания, штрафы, отзыв лицензии и так далее.

далее

Весь блог тут