Vsftpd не работает в пассивном режиме в контейнере LXC

Я новичок в Docker, у меня есть vsftpd в Debian и для пассивного режима я настроил в vsftpd:

pasv_enable=YES
pasv_min_port=65000
pasv_max_port=65000
pasv_address=192.168.1.31

и я показываю с Wireshark, что ответ сервера с пассивным портом 65000, но с пассивным IP 0.0.0.0, и я не понимаю, почему, если я настроил пассивный IP. Когда я запускаю docker, я связываю порты 21 и 65000 (а в Dockerfile я выставляю 21 и 65000), и соединение в порту 21 и активный режим - это хорошо, но мне нужно использовать также пассивный режим. В Wireshark я показываю это:

227 Entering Passive Mode (0,0,0,0,253,232).
Passive IP address: 0.0.0.0 (0.0.0.0)
Passive port: 65000
Passive IP NAT: True

Dockerfile:

FROM debian:jessie

RUN apt-get update
RUN apt-get dist-upgrade -y
RUN apt-get install -y -q --no-install-recommends vsftpd
RUN apt-get clean

RUN echo "local_enable=YES" >> /etc/vsftpd.conf
RUN echo "chroot_local_user=YES" >> /etc/vsftpd.conf
RUN echo "allow_writeable_chroot=YES" >> /etc/vsftpd.conf
RUN echo "write_enable=YES" >> /etc/vsftpd.conf
RUN echo "pasv_enable=YES" >> /etc/vsftpd.conf
RUN echo "pasv_min_port=65000" >> /etc/vsftpd.conf
RUN echo "pasv_max_port=65000" >> /etc/vsftpd.conf
RUN echo "pasv_address=192.168.1.31" >> /etc/vsftpd.conf

RUN mkdir -p /var/run/vsftpd/empty

EXPOSE 21/tcp
EXPOSE 65000/tcp

CMD vsftpd

И я строю и запускаю с командами:

docker build -t vsftpd .
docker run -d -p 21:21 -p 65000:65000 -v /etc/passwd:/etc/passwd:ro -v /etc/shadow:/etc/shadow:ro -v /etc/group:/etc/group:ro -v /home:/home vsftpd

Я также пытаюсь запустить Docker с большим количеством параметров:

docker run -d -p 192.168.1.31:21:21 -p 192.168.1.31:65000:65000 -v /etc/passwd:/etc/passwd:ro -v /etc/shadow:/etc/shadow:ro -v /etc/group:/etc/group:ro -v /home:/home vsftpd

И в активном режиме все работает хорошо, только сбой пассивного режима, и я не понимаю, почему сервер говорит клиенту, который подключается к 0.0.0.0 с настроенным pasv_address. Я монтирую passwd, shadow и group в контейнер как доступный только для чтения для использования локальными пользователями в vsftpd и home для chroot локальных пользователей, что в активном режиме показалось хорошим. Я пытаюсь все в виртуальной машине в режиме моста, и в виртуальной машине у меня есть сервер Ubuntu с docker.io 1.2.0.

1 ответ

Решение

Теперь я могу это исправить. По умолчанию vsftpd прослушивал IPv4 и IPv6 со стандартной конфигурацией и т. Д.; и я комментирую конфиг IPv6 и только настраиваю IPv4, а потом все работает.

Другие вопросы по тегам