Для начала я довольно новичок в докер движке. У меня есть небольшой кластер из двух серверов с механизмом докера.

На узле 1 у меня есть: один контейнер с openvpn контейнер с ftp настроен в пассивном режиме

контейнер ftp:

docker run -d -v /var/lib/docker/volumes/ftpuserdb/_data:/home/vsftpd -p 20:20 -p 21:21 -p 21100-21110:21100-21110 -e FTP_USER=bob -e FTP_PASS=12345 -e PASV_ADDRESS=<PUBLIC IP>  -e PASV_MIN_PORT=21100 -e PASV_MAX_PORT=21110 -e PASV_ADDRESS_ENABLE=YES -e PASV_ENABLE=YES --name ftp-server fauria/vsftpd

На узле 2 у меня просто есть контейнер для проверки соединения ftp (ftpclient).

я могу подключиться к ftp из (ftpclient), но когда я пытаюсь использовать пассивный режим, у меня появляется ошибка:

227 Вход в пассивный режим (public, ip, from, node1,82,110). (я прячу ip ^^)

ftp: connect: соединение отказано

Когда я проверил брандмауэр: я могу найти открытый порт.

Chain DOCKER (2 references)
target     prot opt source               destination
ACCEPT     udp  --  anywhere             IP          udp dpt:openvpn
ACCEPT     tcp  --  anywhere             IP           tcp dpt:3000
ACCEPT     tcp  --  anywhere             IP           tcp dpt:21110
ACCEPT     tcp  --  anywhere             IP           tcp dpt:21109
ACCEPT     tcp  --  anywhere             IP           tcp dpt:21108
ACCEPT     tcp  --  anywhere             IP           tcp dpt:21107
ACCEPT     tcp  --  anywhere             IP           tcp dpt:21106
ACCEPT     tcp  --  anywhere             IP           tcp dpt:21105
ACCEPT     tcp  --  anywhere             IP           tcp dpt:21104
ACCEPT     tcp  --  anywhere             IP           tcp dpt:21103
ACCEPT     tcp  --  anywhere             IP           tcp dpt:21102
ACCEPT     tcp  --  anywhere             IP           tcp dpt:21101
ACCEPT     tcp  --  anywhere             IP           tcp dpt:21100

Но если я попробую свой ftp с моего узла 2 непосредственно с хоста, у меня нет проблем. все работает.

У кого-нибудь есть идея? Я много чего пробовал и не могу понять ...

С уважением

1 ответ1

0

Согласно Википедии:

В пассивном режиме клиент использует управляющее соединение для отправки команды PASV на сервер, а затем получает с сервера IP-адрес сервера и номер порта сервера, которые клиент затем использует для открытия соединения для передачи данных от произвольного клиентского порта к серверу. IP-адрес сервера и номер порта сервера получены.

Таким образом, в основном клиент может подключиться к любому случайному порту на FTP-сервере.

Некоторым FTP-серверам (например, proftpd с директивой PassivePorts ) можно ограничить порты, которые они используют для пассивного режима, до некоторого диапазона, который можно сопоставить с тем же диапазоном на хосте.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .