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, а потом все работает.