linux防火墻(四)—— SNET和DNET原理及應(yīng)用
圖(1)
一、SNAT策略
應(yīng)用環(huán)境:局域網(wǎng)主機(jī)共享單個公網(wǎng)IP地址接入Internet,簡單的說就是企業(yè)內(nèi)部局域網(wǎng)想訪問外部服務(wù)器時,網(wǎng)關(guān)型防火墻需要開啟的SNAT應(yīng)用策略。
SNAT策略原理:網(wǎng)關(guān)型防火墻把源地址轉(zhuǎn)換,修改數(shù)據(jù)包的源地址。
*未作SNAT轉(zhuǎn)換時內(nèi)網(wǎng)數(shù)據(jù)包通信的分析:
圖(2)中局域網(wǎng)以192.168.1.234的IP訪問Web服務(wù),發(fā)送數(shù)據(jù)包時,網(wǎng)絡(luò)層會封裝源地址和目標(biāo)地址,當(dāng)Web服務(wù)器進(jìn)行HTTP應(yīng)答時,找不到192.168.1.234的IP地址(私網(wǎng)地址不允許出現(xiàn)在公網(wǎng)),所以通訊中斷。
圖 (2)
*進(jìn)行SNAT轉(zhuǎn)換后的數(shù)據(jù)包通信分析:
圖(3)中網(wǎng)關(guān)服務(wù)器應(yīng)用了SNAT策略,當(dāng)局域網(wǎng)訪問外網(wǎng)的數(shù)據(jù)到達(dá)網(wǎng)關(guān),會先進(jìn)行路由選擇,若發(fā)現(xiàn)數(shù)據(jù)包需要從外網(wǎng)接口eht0向外轉(zhuǎn)發(fā),則將其源IP地址修改為網(wǎng)關(guān)的外網(wǎng)接口地址218.29.30.31,然后再發(fā)送給目標(biāo)Web服務(wù)器,相當(dāng)于從網(wǎng)關(guān)服務(wù)器的公網(wǎng)IP地址提交數(shù)據(jù)訪問請求,因?yàn)槭枪W(wǎng)IP,當(dāng)Web服務(wù)器進(jìn)行HTTP應(yīng)答時,也可以正確返回響應(yīng)數(shù)據(jù)包。
圖 (3)
*在上述地址轉(zhuǎn)換的過程中,網(wǎng)關(guān)服務(wù)器會根據(jù)之前建立的SNAT映射,將響應(yīng)數(shù)據(jù)包正確返回局域網(wǎng)中的源主機(jī),因此,只要連接的第一個包被SNAT處理了,那么這個連接及對應(yīng)數(shù)據(jù)流的其他包也會自動地進(jìn)行SNAT處理,另一方面,Internet中的服務(wù)器并不知道局域網(wǎng)PC的實(shí)際IP地址,中間的轉(zhuǎn)換完全由網(wǎng)關(guān)主機(jī)完成,一定程度上也起到了保護(hù)內(nèi)部網(wǎng)絡(luò)的作用。
二、設(shè)置SNAT規(guī)則
前提條件:
局域網(wǎng)各主機(jī)正確設(shè)置IP地址和子網(wǎng)掩碼
局域網(wǎng)各主機(jī)正確設(shè)置默認(rèn)網(wǎng)關(guān)地址
Linux網(wǎng)關(guān)支持IP路由轉(zhuǎn)發(fā),即/etc/sysctl.conf文件中的net.ipv4.ip_forword = 1
(1)SNAT轉(zhuǎn)換規(guī)則1:固定的外網(wǎng)IP地址
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to-source 218.29.30.31
(2)SNAT轉(zhuǎn)換規(guī)則2:非固定外網(wǎng)IP地址或ADSL