首页 >> IT知识库 >> Linux >>如何设置iptables解决ftp连接总是提示与远程主机断开连接的问题
详细内容

如何设置iptables解决ftp连接总是提示与远程主机断开连接的问题

问题:情况是这样的,本人日常用的fedora 13(实体机)开启了vsftpd和sshd服务,主要浏览网页。vsftpd为主动模式。今天对vsftpd进行了设置,见下:
[root@fedora13 ~]# iptables -L -n
Chain INPUT (policy DROP)
target     prot opt source               destination         
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0   这个地方是执行iptables -I INPUT 1  -i lo -p  all-j ACCEPT的结果,别以为是对所有访问放行           
LOG        all  --  0.0.0.0/0            0.0.0.0/0           state INVALID LOG flags 6 level 4 prefix `DROP INVALID' 
DROP       all  --  0.0.0.0/0            0.0.0.0/0           state INVALID 
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED 
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:22 state NEW
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:21 
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:20

Chain FORWARD (policy DROP)
target     prot opt source               destination        

Chain OUTPUT (policy DROP)
target     prot opt source               destination         
LOG        all  --  0.0.0.0/0            0.0.0.0/0           state INVALID LOG flags 6 level 4 prefix `DROP INVALID' 
DROP       all  --  0.0.0.0/0            0.0.0.0/0           state INVALID 
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED 
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:22 state NEW
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:80 state NEW
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:443 state NEW 
ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0           udp dpt:53 state NEW
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp spt:21 
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp spt:20

但问题是,我在同局域网内的另一台机器上用ftp 连接时,总是提示与远程主机断开连接。
回答:其实,出现这样的问题,并不是防火墙的配置出了什么问题。如果非要说防火墙有什么问题,也只能说,在OUTPUT链,因为有了“ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED”这行配置,所以“ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp spt:21”这行和ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp spt:20这行都是可以删掉的。当然这不能算是错,只能说不够严谨和完美。
这是防火墙配置上的问题。
客户端不能访问vsftpd服务问题到底出在哪里呢?下面揭晓——
客户端要顺利访问vsftpd服务,还应加载三个模块,指令如下:
  modprobe  ip _conntrack
 modprobe  ip_conntrack_ftp
 modprobe  ip_nat_ftp 
这三个模块的作用分别是:
ip_conntrack模块能够使防火墙具有连接跟踪能力。(通过输入 "cat /proc/net/ip_conntrack" 可以查看您的机器参与的活动网络连接。)加载这个模块后,基本上所有有状态的返回包都能识别,例:telnet,http,QQ,mail,ping,dns等。
  
  实际上,加载了ip_conntrack模块,ftp已经能够登陆,并能使用象pwd,cd等命令,但当使用ls命令显示文件内容时,就会timeout。原因在于显示文件列表的包防火墙无法识别,就会进入默认策略----禁止,此时就需要加载ip_conntrack_ftp模块。ip_conntrack_ftp模块使防火墙能够识别FTP某类特殊的返回包。
  
  如果防火墙上对所有出去的返回包作了伪装,就需要加载ip_nat_ftp模块。ip_nat_ftp模块在出去的包作了伪装以后,必须加载,否则防火墙无法知道返回的包该转发到哪里。

在线客服
- 客户经理
  • 点击这里给我发消息
  • 点击这里给我发消息
技术支持: 建站ABC | 管理登录