使用 iptables 将 FTP 转发到另一台服务器

使用 iptables 将 FTP 转发到另一台服务器

我的设置是:

FTP client -> proxy server (eth0: external, eth1: internal) -> FTP server (eth1:internal)

我正在尝试将所有 FTP 流量从 eth0 上的代理服务器转发到 eth1 上的 FTP 服务器。

经过大约 2 小时的 google 和 serverfault 搜索,iptables-save 目前输出:

# Generated by iptables-save v1.4.4 on Wed Sep  1 11:00:51 2010
*mangle
:PREROUTING ACCEPT [16444:5734756]
:INPUT ACCEPT [16271:5724316]
:FORWARD ACCEPT [169:10240]
:OUTPUT ACCEPT [10273:6431264]
:POSTROUTING ACCEPT [10475:6447560]
COMMIT
# Completed on Wed Sep  1 11:00:51 2010
# Generated by iptables-save v1.4.4 on Wed Sep  1 11:00:51 2010
*filter
:INPUT ACCEPT [1310:105993]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [713:80204]
-A FORWARD -i eth0 -o eth1 -p tcp -m tcp --dport 21 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT 
COMMIT
# Completed on Wed Sep  1 11:00:51 2010
# Generated by iptables-save v1.4.4 on Wed Sep  1 11:00:51 2010
*nat
:PREROUTING ACCEPT [271:15644]
:POSTROUTING ACCEPT [1410:86453]
:OUTPUT ACCEPT [1391:85237]
-A PREROUTING -d xxx.xxx.xxx.xxx/32 -p tcp -m tcp --dport 21 -m state --state NEW,RELATED,ESTABLISHED -j DNAT --to-destination xxx.xxx.xxx.xxx:21 
COMMIT
# Completed on Wed Sep  1 11:00:51 2010

prerouting中的第一个ip是代理服务器的外部ip,第二个ip是ftp服务器的内部ip。

尝试直接连接到 FTP 服务器工作正常,但尝试连接到代理服务器却没有任何反应(只是超时)。

有什么指出我做错了什么吗?

谢谢!

答案1

首先,我会放弃转发规则。这只会增加混乱。你的转发链的默认策略无论如何都是接受,所以这无关紧要。其次,检查转发标志是否已设置,方法是:

回显 /proc/sys/net/ipv4/ip_forward

如果未设置此标志,您可以对防火墙进行任何操作,但无法正常工作。使用以下命令将其设置为 1:

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

然后使用 tcpdump 检查数据包的实际去向(在代理服务器上)。

相关内容