iptalbes配置ftp的主\被动模式
FTP协议有两种工作方式:PORT方式和PASV方式,中文意思为主动式和被动式。
Port模式:ftp server:tcp 21 <------client:dynamic ftp server:tcp 20 ------>client:dynamic
Pasv模式:ftp server:tcp 21 <----client:dynamic ftp server:tcp dynamic <----client:dynamic
PORT(主动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据时,客户 端在命令链路上用PORT命令告诉服务器:“我打开了XXXX端口,你过来连接我”。于是服务器从20端口向客户端的XXXX端口发送连接请求,建立一条 数据链路来传送数据。
PASV(被动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据时,服务 器在命令链路上用PASV命令告诉客户端:“我打开了XXXX端口,你过来连接我”。于是客户端向服务器的XXXX端口发送连接请求,建立一条数据链路来 传送数据。
我的linux服务器工作在透明模式,ftp服务器操作系统为win 2003,使用ServerU软件。
所以我需要在forward链里增加两条规则(第一条规则是用来建立ftp连接的,第二条规则是使用动态端口的)
# Enable passive ftp transfers
iptables -A FORWARD -p tcp --sport 21 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A FORWARD -p tcp --sport 1024:65535 --dport 1024:65535 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT