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