未分类, 运营维护

解决使用iptables转发FTP端口后提示无法读取目录列表(MLSD)

几天前把拉斯维加斯服务器的数据转移到了香港的服务器,想到有些人可能没那么快知道,就使用iptables进行端口转发,实现FTP连接到拉斯维加斯服务器的IP,最后是到达香港的FTP服务器。

这实现不难,首先修改配置,实现开机就打开内核转发:

vim /etc/sysctl.conf

把默认的:

net.ipv4.ip_forward = 0

改成:

net.ipv4.ip_forward = 1

如图:sysctl.conf

 

然后执行:

echo 1 > /proc/sys/net/ipv4/ip_forward

打开内核转发功能。

使用下面两条命令添加转发规则:

iptables -t nat -I PREROUTING -p tcp --dport 本机端口 -j DNAT --to 目标IP:目标端口

iptables -t nat -I POSTROUTING -p tcp --dport 本机端口(要和上面那句的端口一样) -j MASQUERADE

然后保存iptables规则,并且重新启动iptables:

service iptables save

service iptables restart

但是连接FTP时,却提示读取目录列表失败:

MLSD Failed

 

 

后来单手摘JJ也来搞FTP端口转发,我把这个问题告诉了他,他折腾了一下,告诉我,原来执行下面几句还要加载几个iptables的模块:

modprobe iptable_nat

modprobe ip_conntrack_ftp

modprobe ip_nat_ftp

使用过程中发现,iptables重启后就会自动卸载这个三个模块,因此最好把上面三句命令添加到iptables里面。

 

102 Posts

自信、努力、活出精彩;以前未所见的颜色,绘大千世界!
View all posts

1 thought on “解决使用iptables转发FTP端口后提示无法读取目录列表(MLSD)”

Leave a reply

Your email address will not be published. Required fields are marked *