vsftpd:从外部 IP 连接时出现 ECONNREFUSED

vsftpd:从外部 IP 连接时出现 ECONNREFUSED

当我开始设置 vsftpd 服务器时,我遇到了很多问题,但这次我无法弄清楚到底出了什么问题。

我在工作时有一台运行 vsftpd 的 ubuntu 14.04 服务器。该服务器位于 DMZ 中的防火墙后面,并已分配特定的内部和全局 IP 地址。从本地主机以及内部网络进行连接均可正常工作。

到目前为止一切顺利,但是当我尝试通过其全局 IP 地址访问 FTP 服务器时(无论是从内部网络还是其他任何地方),FileZilla 只会给我以下信息:

Status:         Connecting to <global.ip>:21...
Status:         Connection attempt failed with "ECONNREFUSED - Connection refused by server".
Error:          Could not connect to server

我可以排除错误的 IP 地址导致的原因,因为输入不存在的 IP 会导致超时错误,而对全局 IP 运行 whois 检查会给我提供我们公司的互联网服务提供商。

我在 vsftpd.conf 中设置了 50.000 范围内的被动端口,防火墙也会转发来自端口 20、21 和 50.000-50.050 的请求。然后我又在 iptables 配置中添加了一些规则,以允许所需的流量通过。

作为参考,这是我的 iptables 设置:

~$ sudo iptables -L

Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     tcp  --  anywhere             anywhere
tcp dpts:50000:50050
ACCEPT     tcp  --  anywhere             anywhere
tcp dpt:ssh
ACCEPT     tcp  --  anywhere             anywhere
tcp dpt:ftp

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     tcp  --  anywhere             anywhere
tcp spt:ftp-data

我的 vsftpd.conf:

listen=YES
local_enable=YES
local_umask=022
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
idle_session_timeout=600
ftpd_banner=Welcome
chroot_local_user=YES
ls_recurse_enable=YES
secure_chroot_dir=/var/run/vsftpd/empty

ssl_enable=YES
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
ssl_ciphers=HIGH

rsa_cert_file=/home/awacs/vsftp.crt
rsa_private_key_file=/home/awacs/vsftp_clear.key

#pasv_address=<global.ip>
pasv_min_port=50000
pasv_max_port=50050
listen_port=21
pasv_enable=YES
#listen_address=<global.ip>

如您所见,我尝试了配置中的pasv_addresslisten_address参数。listen_address 导致服务器仅接受来自全局 IP 的请求,这使其根本没有响应。设置 pasv_address 也不令人满意,因为外部请求仍然不起作用,来自内部网络的连接卡在目录 LIST 命令处。

如果有人能告诉我我做错了什么或忽略了什么,我会非常高兴。我再次强调,服务器在内部网络运行正常,但我无法让它通过全局 IP 进行连接。提前谢谢您。

相关内容