Docker 容器中的 FTP 问题

Docker 容器中的 FTP 问题

首先,我对 docker 引擎还很陌生。我有一个由两台服务器组成的小型集群,其中装有 docker 引擎。

在 node1 上,我有: 一个带有 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

在 node2 上我只有一个容器来测试连接 ftp(ftpclient)。

我可以从(ftpclient)连接到 ftp,但是当我尝试使用被动模式时,出现错误:

227 进入被动模式 (public,ip,from,node1,82,110)。(我隐藏了 ip ^^)

ftp:连接:连接被拒绝

当我检查防火墙时:我发现我的端口是打开的。

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

但是如果我直接从主机尝试从我的 node2 进行 ftp,则没有任何问题。一切正常。

有人知道吗?我尝试了很多方法,但就是搞不定……

问候

答案1

根据维基百科

在被动模式下,客户端使用控制连接向服务器发送 PASV 命令,然后从服务器接收服务器 IP 地址和服务器端口号,客户端随后使用该命令从任意客户端端口打开到接收到的服务器 IP 地址和服务器端口号的数据连接。

因此基本上客户端可以连接到 FTP 服务器上的任何随机端口。

一些 FTP 服务器(proftpd带有PassivePorts指示例如)可以被告知将用于被动模式的端口限制在某个范围内,你可以映射到同一范围在主机上。

相关内容