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