Linux下Iptables端口轉發功能的解決
Linux下Iptables端口轉發功能的解決:
先從一個實例說:有一企業就一個服務器軟件做測試?;趙in2k的,端口號為881,服務器直接連接外部網絡,客戶端通過服器ip來訪問。排除Windows,如果是使用Linux,那么該如何解決iptables端口轉發的問題。經過資料的查閱,iptables的端口轉發功能是可以解決的,以下是Linux下Iptables端口轉發功能的解決方法:
目標:利用端口轉發,當服務器接收到881端口請求以后,將其轉到 10.10.2.200:881上,10.10.2.200再將數據返回給請求連接。
Eth0:連接ADSL,即ppp0接口
Eth1:連接內部網絡,ip為10.10.1.1
10.10.2.200為win2k服務器,其端口881提供網絡服務。
iptbles腳本:
- iptables -t nat -A PREROUTING -p tcp -m tcp --dport 881 -j DNAT --to-destination 10.10.2.200:881
將881請求發至10.10.2.00:881端口
- iptables -t nat -A POSTROUTING -s 10.10.0.0/16 -d 10.10.2.200 -p tcp -m tcp --dport 881 -j SNAT --to-source
10.10.1.1 ;返回a.b.b.d時數據源來自同一子網,就將其源地址更改為10.10.1.1,從eth0發出,并在連接跟蹤表中查出a.b.c.d
從ppp0進來的,又由ppp0將此數據發出。
當然不要忘了加一條允許881端口訪問的語句。
- iptables –A INPUT –p tcp –dport 881 –i ppp0 –j ACCEPT
可不可把服務器放在局域內,用端口轉發來實現呢?答案當然是肯定的,既然能把881端口轉發,那么21,80這些個端口更不在話,并且很多服務器軟件都可以自定義端口,那就在得玩了,只要有合適的端口,即使給局域網每一個用戶開一個ftp服務器也是可的。你想要實現什么服務都可以,當然是基于端口轉發的。
局域網內10.10.2.101是win2k,提供www服務,端口為800。通過服務器http://serverip:800 進行訪問。
- iptables -t nat -A PREROUTING -p tcp -m tcp --dport 800 -j DNAT --to-destination 10.10.2.101:800
- iptables -t nat -A POSTROUTING -s 10.10.0.0/16 -d 10.10.2.101 -p tcp -m tcp --dport 800 -j SNAT --to-source
- 10.10.1.1
- iptables –A INPUT –p tcp –dport 800 –i ppp0 –j ACCEPT
由于是基于端口轉發實現的,所以服務器上只需裝個iptables來轉發數據就行了,一切服務由內部服務器完成,這樣的話,linux服務器才真正的算是個防火墻,Linux下Iptables端口轉發功能也就實現了。
【編輯推薦】