我的设置是:
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 检查数据包的实际去向(在代理服务器上)。