Я новичок в Docker, у меня есть vsftpd в Debian, а для пассивного режима я настроил в vsftpd:
pasv_enable=YES
pasv_min_port=65000
pasv_max_port=65000
pasv_address=192.168.1.31
и я показываю с помощью wirehark этот ответ сервера с пассивным портом 65000, но с пассивным IP 0.0.0.0, и я не понимаю, почему, если я настроил пассивный IP. Когда я запускаю докер, я привязываю порты 21 и 65000 (а в Dockerfile я выставляю 21 и 65000), и соединение через порт 21 и активный режим - это хорошо, но мне нужно использовать также пассивный режим. В wirehark показываю:
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 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.
Теперь я могу это исправить. По умолчанию vsftpd прослушивал IPv4 и IPv6 с конфигурацией по умолчанию и т. Д .; и я комментирую конфигурацию IPv6 и настраиваю только IPv4, а потом все работает.