Debian
iptables - 轉發電子郵件埠?
我試圖打開一些本地埠(LAN),然後使用 iptables 將它們重定向到另一台伺服器(WAN)。
這是我的配置:
#WAN allow-hotplug eth1 auto eth1 iface eth1 inet static #Tarjeta red WAN address 192.168.2.2 gateway 192.168.2.1 netmask 255.255.255.0 #LAN allow-hotplug eth0 auto eth0 iface eth0 inet static address 192.168.16.6 netmask 255.255.255.0 network 192.168.16.0 broadcast 192.168.16.255
我試試這個:
iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 110 -j DNAT --to 200.40.30.218:110 iptables -A FORWARD -p tcp -i eth0 -o eth1 -d 200.40.30.218 --dport 110 -j ACCEPT iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 25 -j DNAT --to 200.40.30.218:25 iptables -A FORWARD -p tcp -i eth0 -o ethq -d 200.40.30.218 --dport 25 -j ACCEPT
但是,它沒有用。我也嘗試將 eth0 更改為 eth1(並將 eth1 更改為 eth0),但什麼也沒發生。
Starting Nmap 5.00 ( http://nmap.org ) at 2011-10-03 14:44 UYST Interesting ports on 192.168.16.6: Not shown: 997 closed ports PORT STATE SERVICE 22/tcp open ssh 111/tcp open rpcbind 8080/tcp open http-proxy
我正在執行 debian。你們能幫我檢查一下發生了什麼嗎?
編輯:IPTABLES-保存
# Generated by iptables-save v1.4.8 on Mon Oct 3 15:43:14 2011 *mangle :PREROUTING ACCEPT [139993:77867651] :INPUT ACCEPT [139385:77761761] :FORWARD ACCEPT [186:12071] :OUTPUT ACCEPT [173556:74341650] :POSTROUTING ACCEPT [173734:74352988] COMMIT # Completed on Mon Oct 3 15:43:14 2011 # Generated by iptables-save v1.4.8 on Mon Oct 3 15:43:14 2011 *nat :PREROUTING ACCEPT [1649:190626] :POSTROUTING ACCEPT [6729:339646] :OUTPUT ACCEPT [6697:337660] -A PREROUTING -i eth0 -p tcp -m tcp --dport 110 -j DNAT --to-destination 200.40.30.218:110 -A PREROUTING -i eth0 -p tcp -m tcp --dport 25 -j DNAT --to-destination 200.40.30.218:25 COMMIT # Completed on Mon Oct 3 15:43:14 2011 # Generated by iptables-save v1.4.8 on Mon Oct 3 15:43:14 2011 *filter :INPUT ACCEPT [138307:77066136] :FORWARD ACCEPT [168:11207] :OUTPUT ACCEPT [172288:73655708] -A FORWARD -d 200.40.30.218/32 -i eth0 -o eth1 -p tcp -m tcp --dport 110 -j ACCEPT -A FORWARD -d 200.40.30.218/32 -i eth0 -o ethq -p tcp -m tcp --dport 25 -j ACCEPT COMMIT # Completed on Mon Oct 3 15:43:14 2011
問候
看起來 MASQUERADING 沒有設置。在第一個 PREROUTING 語句之前添加以下內容
-A POSTROUTING -o eth0 -j MASQUERADE
所以它會是這樣的:
-A POSTROUTING -o eth0 -j MASQUERADE -A PREROUTING -i eth0 -p tcp -m tcp --dport 110 -j DNAT --to-destination 200.40.30.218:110 -A PREROUTING -i eth0 -p tcp -m tcp --dport 25 -j DNAT --to-destination 200.40.30.218:25
另外,請確保啟用了 IP 轉發。您可以使用以下任一方式動態設置它:
sysctl -w net.ipv4.conf.all.forwarding =1
或者:
echo “1” > /proc/sys/net/ipv4/ip_forward
要永久更改它(這是您想要的),請將 /etc/sysctl.conf 中的 net.ipv4.conf.all.forwarding 值添加或更改為:
net.ipv4.ip_forward = 1
最後一個是我認為您將如何在 Red Hat 上執行此操作,因此如果您沒有該文件,您可以在 /etc/rc.local 中添加第一個命令或查找 Ubuntu 進行更改的方式。
此外,您最後的 FORWARD 語句似乎是錯誤的。它看起來應該是:
-A FORWARD -d 200.40.30.218/32 -i eth1 -o eth0 -p tcp -m tcp --dport 110 -j ACCEPT -A FORWARD -d 200.40.30.218/32 -i eth1 -o eth0 -p tcp -m tcp --dport 25 -j ACCEPT
我認為這就是你讓它工作的方式。我重新閱讀了這篇文章,並且您想將入站流量轉發到 WAN 上的伺服器,所以我進行了上述更改以解決這個問題(這有點令人困惑,因為您通常從 WAN -> LAN 與 NAT,而不是另一個方式)。
但重要的是,您需要確保啟用 IP 轉發以及 MASQUERADING。