我是Docker的初学者,在Debian中有vsftpd,在vsftpd中configuration被动模式:
pasv_enable=YES pasv_min_port=65000 pasv_max_port=65000 pasv_address=192.168.1.31
我用wireshark显示服务器响应与被动端口65000,但与被动IP 0.0.0.0,我不明白为什么如果我configuration被动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
我build立并运行命令:
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_addressconfiguration。 我把passwd,shadow和group挂载到容器上,只能在vsftpd和本地用户的本地用户中使用chroot本地用户,它在主动模式下很好。 我试图在虚拟机桥模式,并在虚拟机我有一个Ubuntu的服务器与docker.io 1.2.0。
我现在可以修复它。 默认情况下,vsftpd使用默认configuration等在IPv4和IPv6中侦听; 我评论IPv6configuration,只configurationIPv4,然后全部工作。