# 部署了PureFTP，iptables该怎么放行被动模式？

- Link: https://www.xuepaijie.com/html/skill/devops/970.html
- Published: 2017-09-06T15:11:51+08:00
- Author: Admin

PureFTP是目前很多Linux平台流行的FTP服务端之一，最近配置服务器使用到了PureFTP，中间
也出现了各种连接问题，总之就是无法正常传输数据，防火墙也开放了21端口，但最要命的是
客户端使用被动模式怎么也连不上。

我们都知道，FTP有两种传输模式：

主动模式(PORT)：服务器的20端口连接客户端的一个随机端口(服务器和客户端协商的)，主动
模式要求客户端没有防火墙，或者客户端的防火墙(路由器)具有ALG(应用层网关)功能，防火
墙会自动打开服务器请求的端口，一般CISCO和H3C的路由器都有ALG功能。主动模式需要我们
手工在ftp客户端里面手工设置，默认都是被动模式。

被动模式(PSAV)：服务器打开21端口，客户端连接服务器的21端口进行连接控制，然后要求
服务器打开一个特定端口，客户端与服务器进行连接。

如果我们服务器开启了防火墙，或者服务器外部有防火墙，客户端将无法与服务器进行数据
连接，那么我们如何既使用被动模式，又开启防火墙呢？

首先，我们修改Pureftp的配置文件/etc/pure-ftpd.conf(默认在安装目录下，也可能在其他
地方，查找一下即可)

    ```html;
    #把下面的
    #   PassivePortRange 20000 30000
    #修改为，即去掉注释
    PassivePortRange 20000 30000
    ```

重启pureftpd服务， 另外我们要修改防火墙，开放20000-30000端口，以iptables为例：

    ```html;
    iptabels -A INPUT -p tcp --dport 20000:30000 -j ACCEPT
    service iptables save
    ```

这样就成功搞定被动模式了，用ftp客户端连接试试吧。
