在Linux系统中,使用vsftpd作为FTP服务器时,需要正确配置防火墙以允许FTP流量
首先,确保已经安装了vsftpd。如果没有,请使用以下命令安装:
对于基于Debian的系统(如Ubuntu):
sudo apt-get update
sudo apt-get install vsftpd
对于基于RPM的系统(如CentOS):
sudo yum install vsftpd
配置vsftpd。使用文本编辑器打开/etc/vsftpd/vsftpd.conf文件。例如,使用nano编辑器:
sudo nano /etc/vsftpd/vsftpd.conf
确保以下设置已启用(删除或注释掉前面的#):
local_enable=YES
write_enable=YES
chroot_local_user=YES
allow_writeable_chroot=YES
保存并关闭文件。
重启vsftpd服务以应用更改:
sudo systemctl restart vsftpd
配置防火墙。这里以iptables为例,允许FTP流量。首先,允许FTP标准端口21的TCP流量:
sudo iptables -A INPUT -p tcp --dport 21 -j ACCEPT
其次,允许FTP数据传输端口范围(通常是20和动态分配的端口)。编辑/etc/sysctl.conf文件,添加或修改以下行:
net.ipv4.ip_local_port_range = 1024 65535
然后,应用更改:
sudo sysctl -p
最后,允许FTP数据传输端口的TCP流量:
sudo iptables -A INPUT -p tcp --dport 1024:65535 -j ACCEPT
如果您使用的是firewalld作为防火墙,可以使用以下命令允许FTP流量:
首先,允许FTP标准端口21的TCP流量:
sudo firewall-cmd --permanent --add-port=21/tcp
其次,允许FTP数据传输端口范围(通常是20和动态分配的端口)。由于firewalld不支持直接添加端口范围,我们需要添加一个自定义的服务。创建一个名为ftp.xml的新文件,包含以下内容:
<?xml version="1.0" encoding="utf-8"?>
<service>
<short>FTP</short>
<description>FTP service</description>
<port protocol="tcp" port="21"/>
<port protocol="tcp" port="1024-65535"/>
</service>
将此文件保存到/etc/firewalld/services/目录下。
然后,重新加载firewalld配置并启用自定义FTP服务:
sudo firewall-cmd --reload
sudo firewall-cmd --permanent --add-service=ftp
sudo firewall-cmd --reload
现在,您的Linux系统应该已经允许FTP流量通过防火墙了。请确保客户端使用正确的IP地址、用户名和密码连接到FTP服务器。