barbitoff programmer`s blog

Здесь я публикую заметки из программерской жизни: грабли, на которые мне случилось наступить, проблемы, для которых было найдено элегантное (или не очень) решение, а также все, с чем мне пришлось столкнуться и чем хотелось бы поделиться =)
PS Если хотите меня поблагодарить - на странице есть 3 места, чтобы это сделать =)

среда, 30 мая 2012 г.

FTP сервер на Amazon EC2 (Ubuntu 12.04)

Развертывание ftp-сервера (в моем случае - pure-ftpd, хотя описанное здесь справедливо даже для виндового сервера) на Amazon EC2 имеет несколько особенностей. Если просто установить сервер и открыть в амазоновском файрволе порты 20 и 21, клиент, обращающийся к серверу через WAN, выдаст ошибку (текст приведен для клиента FileZilla):
Сервер отправил пассивный ответ с неопределяемым адресом. Использую существующий адрес сервера.
После чего вывалится ошибка, что невозможно соединиться с сервером. Причина следующая: во-первых, при инициализации пассивного соединения сервер кидает клиенту, по-видимому, свой IP-адрес внутри амазоновской локалки, когда надо бы кидать внешний IP. Эта проблема лечится созданием файла /etc/pure-ftpd/conf/ForcePassiveIP и записью в него внешнего IP-адреса сервера. Но ошибку подключения вызывает вовсе не это (т.к. эту проблему обходит сама FileZilla, используя для пассивного соединение тотже адрес, который был использован для инициализации соединения с сервером). Проблема тут в амазоновском файрволе, в котором не открыты порты для пассивных соединений. Какие порты используется pure-ftpd для пассивных соединений по-умолчанию, я искать не стал, а задал их явно, создав файл /etc/pure-ftpd/conf/PassivePortRange и записав в него:
40000 41000
Это укажет ftp-серверу на использование портов с 40000 по 41000 для пассивных соединений. Я задал такой узкий диапазон сознательно, по той причине, что мой сервер отнюдь не для массового использования ;) Теперь этот диапазон портов нужно открыть в амазоновском файрволе, и будет счастье =)

Комментариев нет:

Отправить комментарий