Proxy
使用 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 伺服器可以正常工作,但嘗試連接到代理伺服器卻什麼也沒做(只是超時)。
關於我做錯了什麼的任何指示?
謝謝!
首先,我會放棄轉發規則。它只會增加混亂。您對正向鏈的預設策略是無論如何都接受,所以沒關係。其次,檢查是否設置了轉發標誌,其中:
迴聲/proc/sys/net/ipv4/ip_forward
如果沒有設置這個標誌,你可以用你的防火牆做你想做的事情,但它不會起作用。將其設置為 1:
迴聲 1>/proc/sys/net/ipv4/ip_forward
然後使用 tcpdump 檢查您的數據包實際去向(在代理伺服器上)。