Я только что настроил FTP-сервер, используя последнюю версию сервера FileZilla. Я создал пользователя и дал ему домашний каталог. Если я подключаюсь к серверу через 127.0.0.1:21 или 192.168.1.42:21 (мой локальный IP-адрес), файлы можно выгружать и скачивать, и все работает как надо. Однако когда я подключаюсь через свое внешнее доменное имя www.suchipi.com:21, сервер подключается, но список каталогов не выполняется. Я подумал, что это может быть ошибка в том, как я настроил свою запись A, но подключение к моему внешнему IP-адресу через 75.70.128.37:21 приводит к той же проблеме. Порт 21 - единственный переадресованный порт. Нужны ли мне дополнительные порты?
Если в вашем брандмауэре есть отслеживание соединений по протоколу FTP, например ip_conntrack_ftp
и ip_nat_ftp
из netfilter, вам просто нужно загрузить соответствующий модуль и / или указать, что вы разрешаете протокол FTP (а не только порт 21).
Если брандмауэр не поддерживает протокол FTP, то единственный вариант - настроить FTP-сервер на разрешение клиентов в пассивном режиме. Для этого вам необходимо разрешить TCP-порт 21 для управляющего соединения и TCP-порт 20 для передачи данных. Подключение к данным используется для вывода списка папок и передачи файлов.
Вам также необходимо открыть порт 20 / TCP, чтобы разрешить трафик для передачи данных. Этот порт будет использоваться FTP-клиентом при настройке на использование пассивного режима.
Нужны ли мне дополнительные порты?
Да, надо - и статического списка нет. У FTP есть ОЧЕНЬ плохая проблема: в активном режиме сервер будет подключаться к (!) Клиенту через СЛУЧАЙНЫЙ (!) Порт. Вам нужно получить номер порта из потока команд. Обычно вы говорите «Список», и сервер пытается открыть TCP-соединение с клиентом на СЛУЧАЙНОМ порту, чтобы отправить список. ОЙ.
Вот почему вы можете перевести клиента в ПАССИВНЫЙ режим, что означает, что все соединения открываются от клиента, но даже в этом случае вам нужно будет перенаправить другие номера портов.
Как правило, FTP появился в те времена, когда никто даже не думал о брандмауэрах - и кто-то принял плохое решение, чтобы сервер установил активное соединение с клиентом.
Это работает намного лучше, если вы не используете PORT FORWARD, а используете правильный маршрутизатор / брандмауэр, который знает, как пересылать FTP (т.е. не только сеанс TCP, но и обрабатывать содержимое сеанса TCP, переводить номера портов и т. Д.). Практически любой разумный брандмауэр должен иметь такую возможность - даже Linux, вам просто нужно держаться подальше от «глупой» пересылки TCP.
есть некоторые объяснения, в том числе по возможным проблемам - как вы видите, это головная боль, чтобы начать работу.
В общем, лучше не использовать FTP в таком сценарии, к сожалению.
Включите пассивный режим. Установите для них заданный диапазон портов (несколько случайных портов с высоким значением, 20000-22000 fe). Не забудьте открыть эти порты на брандмауэре и перенаправить их на маршрутизатор вместе с портом 20.