Proxy

使用 iptables 將 FTP 轉發到另一台伺服器

  • September 1, 2010

我的設置是:

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 伺服器可以正常工作,但嘗試連接到代理伺服器卻什麼也沒做(只是超時)。

關於我做錯了什麼的任何指示?

謝謝!

首先,我會放棄轉發規則。它只會增加混亂。您對正向鏈的預設策略是無論如何都接受,所以沒關係。其次,檢查是否設置了轉發標誌,其中:

迴聲/proc/sys/net/ipv4/ip_forward

如果沒有設置這個標誌,你可以用你的防火牆做你想做的事情,但它不會起作用。將其設置為 1:

迴聲 1>/proc/sys/net/ipv4/ip_forward

然後使用 tcpdump 檢查您的數據包實際去向(在代理伺服器上)。

引用自:https://serverfault.com/questions/176871