zoukankan      html  css  js  c++  java
  • Ubuntu下iptables开放ftp端口的一个坑:227 Entering Passive Mode

    事情是这样的,我搭的VSFTP服务器在一次重启后竟然外界连不上了,进去系统查看发现服务在正常运行着;内部也可登上排查发现是防火墙iptables的坑。

    原来这个iptables规则是临时的,需要写入并save,不然重启后规则就清空了,造成外界无法登陆。

     

    先说解决办法:

    iptables -A INPUT  -p tcp --dport 21 -j ACCEPT
    iptables -A OUTPUT -p tcp --dport 20 -j ACCEPT
    iptables -A OUTPUT -p tcp --dport 21 -j ACCEPT
    iptables -A INPUT -p tcp --dport 20 -j ACCEPT

    再重启vsftp:

    systemctl restart vsftpd.service

    按理说这样就可以解决了。为了防止下次重启被清空,我们可以保存一下子。

    iptables防火墙规则的保存与恢复

    iptables-save把规则保存到文件中,再由目录rc.d下的脚本(/etc/rc.d/init.d/iptables)自动装载

    使用命令 iptables-save 来保存规则。一般用

    iptables-save > /etc/sysconfig/iptables

    生成保存规则的文件 /etc/sysconfig/iptables,

    也可以用

    service iptables save

    它能把规则自动保存在/etc/sysconfig/iptables中。

    当计算机启动时,rc.d下的脚本将用命令iptables-restore调用这个文件,从而就自动恢复了规则。

     当然系统版本不同稍有出入,我用:

    iptables-save > /etc/iptables.up.rules

    插一段小序曲:

    当在网上搜索解决方案时,有关于FTP服务的两种工作模式的说法,但我遇到的不是这个问题,但也记录一下,避免遇到

    •port方式(主动模式), 连接过程:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据时, 客户端在命令链路上用PORT命令告诉服务器:“我打开了***X端口,你过来连接我”。于是服务器从20端口向客户端的***X端口发送连接请求,建立一条数据链路来传送数据。
    •pasv方式 ( 被动模式 ), 连接过程:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据时, 服务器在命令链路上用PASV命令告诉客户端:“我打开了***X端口,你过来连接我”。于是客户端向服务器的***X端口发送连接请求,建立一条数据链 路来传送数据。
    由于服务器上的FTP进行TCP/IP筛选,仅允许特定的端口可以被客户端连接,所以无法使用PASV方式。找到了原因,解决办法也很简单,只需要关闭客户端的PASV方式,强制其用PORT方式访问服务器即可。
    客户端登录FTP服务器后,用passive命令关闭客户端的PASV方式,如下:
    
    代码如下
    ftp> passive
    Passive mode off.
    #再次执行该命令就可以启用PASV模式。

    所以说要是你不小心开启了passive模式,除了关还有一个办法将就是再开端口给iptables

    在iptables里设置允许访问ftp(建立连接,数据传输)

    修改ftp配置文件,指定用于数据传输的端口范围为40001-41000,在配置文件最后添加如下两行:

    pasv_min_port=40001
    pasv_max_port=41000
    -A INPUT -p tcp --dport 40001:41000 -j ACCEPT
    -A OUTPUT -p tcp --dport 40001:41000 -j ACCEPT

    参考1、参考二参考三

    为美好的生活奋斗!
  • 相关阅读:
    zoj 3135 Party of 8g 最大点权独立集
    hdu 5352 MZL's City 最小费用最大流
    hdu 5351 MZL's Border 打表+高精度
    poj 3155 Hard Life 最大密度子图
    希尔排序的温习
    折半查找法的温习
    几所可能去的院校之对比与抉择
    重温排序算法
    5-17 汉诺塔的非递归实现 (25分)
    c语言从文件中读取数据作为输入
  • 原文地址:https://www.cnblogs.com/ethtool/p/12397536.html
Copyright © 2011-2022 走看看