一、 實驗說明
1、通過DNS伺服器實作内、外網IP智能解析
1)内網使用者通路Apache伺服器時,解析為其内網IP
2)外網使用者通路Apache伺服器時,解析為Fairwall的外網位址
3)Fairwall的外網IP:1.1.1.1/8
4)Apache伺服器的内網IP:172.16.251.93/16
2、網站域名
www.shuishui.com
内網IP:172.16.251.93
外網IP:1.1.1.1/8
3、網絡安全規劃
1)為了安全,伺服器使用内網IP,但允許外網使用者通過防火牆通路
2)外網使用者通路web伺服器時,解析為防火牆的外網IP
4、實驗平台環境
1)一台Apache伺服器
2)一台cgi伺服器
3)一台mysql伺服器
4)DNS伺服器部署到Apache伺服器上
5、作業系統使用
共使用3台CentOS6.4,一台CentOS6.5
内網中的伺服器全部采用CentOS6.4,外網中的使用者作用CentOS6.5
6、IP配置設定
将在下面的拓撲圖上直覺的标出
7、關于網卡模式
1)内網的網卡都在橋接模式
2)防火牆的外網網卡及外網主機的網卡在VMnet5中
8、本實驗關聯博文:
1)《LAMP之一:apache、mysql、php的安裝及互聯互通》
http://nmshuishui.blog.51cto.com/1850554/1381822
2)《DNS伺服器系列之一:DNS服務原理、安裝及主從配置》
http://nmshuishui.blog.51cto.com/1850554/1378368
3) 《DNS伺服器系列之二:進階配置之-DNS子域授權、區域轉發、acl清單及view》
http://nmshuishui.blog.51cto.com/1850554/1379440
4)《iptables原理及文法》
http://nmshuishui.blog.51cto.com/1850554/1384802
9、關于DNS
DNS伺服器的搭建及智能DNS解析的view功能,詳情請參考第6條中的博文,這裡将隻做簡單說明
10、關于網絡環境
這裡隻搭建了一個内部網絡環境,模拟一個公司的整個網絡架構,對于外部的網絡沒再搭建,原理和方法都是一樣的,在實驗的時候,為了友善,隻使用了一台電腦做為外網的使用者,使用公網IP
二、網絡拓撲
<a href="http://s3.51cto.com/wyfs02/M00/23/54/wKiom1M1ozSCb1iQAADwRGETKJU476.png" target="_blank"></a>
三、本次實驗所用簡單網絡拓撲
為了實驗友善,對于網際網路中的使用者,沒有再為其搭建一個網絡,而是直接使用一個公網IP來模拟一個網際網路使用者,原來是一樣的,是以這裡就不再搭建第二個網絡了。
<a href="http://s3.51cto.com/wyfs02/M01/23/54/wKioL1M1o2DgQEeNAAD0jvrHEcM458.png" target="_blank"></a>
四、DNS智能解析規劃
關于DNS的搭建、acl清單及view功能,這裡隻做使用,不再詳解,詳情情檢視第一部分中第七條的連結
1、為了讓不同的使用者通路Web伺服器時,能夠根據其IP解析到不同的Web位址上(内網使用者通路時使用内網IP,外網使用者通路時得到防火牆的外網IP),是以我們需要為DNS伺服器建立view功能,使其能夠實作智能DNS解析,域名為shuishui.com
1
<code>vim </code><code>/etc/named</code><code>.rfc1912.zones</code>
1)定義内網使用者的view
<a href="http://s3.51cto.com/wyfs02/M02/23/68/wKioL1M2IuXAr_hPAAA-ovFAP-E869.png" target="_blank"></a>
2)定義其它所有使用者的view
<a href="http://s3.51cto.com/wyfs02/M01/23/68/wKiom1M2Izigw98OAAApRAqyl6Q713.png" target="_blank"></a>
2、定義完區域後,接下來就是為區域建立區域檔案資料庫,在編輯完區域檔案資料庫後,為了保證DNS伺服器的正常運作,不要忘了執行DNS的六大步驟
1)建立區域資料庫檔案shuishui.com.zone
<a href="http://s3.51cto.com/wyfs02/M00/23/69/wKioL1M2JBHTe0AYAAAu2HsRFsE003.png" target="_blank"></a>
2)建立區域資料庫檔案shuishui.com.out
<a href="http://s3.51cto.com/wyfs02/M00/23/68/wKiom1M2JGLQ8g3TAAApW2c7SyI495.png" target="_blank"></a>
3、重新開機named服務,檢查端口是否監聽成功
<a href="http://s3.51cto.com/wyfs02/M01/23/6A/wKioL1M2JTGyhWpuAABcysJF5xU057.png" target="_blank"></a>
4、檢查DNS的view功能是否生效
<a href="http://s3.51cto.com/wyfs02/M02/23/6B/wKioL1M2JnvQ8sH6AAB7tYoCZaU784.png" target="_blank"></a>
五、防火牆配置
1、防火牆安裝兩塊網卡,一塊配到内網,一塊連接配接外網
<a href="http://s3.51cto.com/wyfs02/M00/23/6B/wKiom1M2J62zSUGDAAB6pdMEMdc132.png" target="_blank"></a>
2、開啟FORWARD轉發功能
防火牆配置有兩塊網卡,内網的所有使用者都要經過内網網卡(内網的網關),再經過轉發到外網的網卡上實作網絡通信;這兩塊網卡雖然安裝在一台主機上,但是由于并不在一個網絡中,是以預設并不可以通信,是以需要為其開啟轉發功能
<code>vim </code><code>/etc/sysctl</code><code>.conf</code>
<a href="http://s3.51cto.com/wyfs02/M02/23/6C/wKiom1M2LI2QXnE2AAAhg-Rle8A676.png" target="_blank"></a>
1、NAT簡單介紹
由于内網中的用戶端較多,而公網IP有限,是以我們隻能通過做NAT實作了
1)Basic NAT:靜态NAT,這種NAT需要有位址池,第個内網位址都應該在位址池中有一個與之對應的外網位址,是以不用
2)NAPT:(Network Address Port Translation),即網絡位址端口轉換,它是一種動态的NAT
①、SNAT:源位址轉換,用于讓内網主機通路網際網路,POSTROUTING鍊
②、DNAT:讓網際網路上主機通路本地内網中的某伺服器上的服務,用于伺服器釋出
iptables就是基于SNAT和DNAT這兩個目标實作位址轉換的,我們這裡這将内網的伺服器釋出到外面去,是以用的是DNAT
2、NAT使用格式:
1)-j SNAT --to-source SIP
規則添加:POSTROUTING鍊
-j MASQUERADE
位址僞裝,無固定源IP,如果是ADSL的話,就需要用這種機制來實作
2)-j DNAT --to-destination DIP
規則添加:PREROUTING鍊
3、資料包流向圖
<a href="http://s3.51cto.com/wyfs02/M02/23/6C/wKiom1M2NBaACgnjAAArCjINjiU214.png" target="_blank"></a>
是以,根據上圖,我們内網的伺服器要想經過防火牆釋出出去,實作目标位址轉換,把内網IP轉換成防火牆的外網IP,就需要把規則定義在PREROUTING這個鍊上,而且我們是實作NAT轉換的,是以應該針對的是nat這個表
4、配置規則
特别注意:在規則配置之前别忘了給内部主機配置網關,就是防火牆的内網IP!外部主機千萬别配網關到1.1.1.1,人家是外部網絡中的主機,我們不是營運商,是以我們的1.1.1.1它就不是一個網關
1)在PREROUTING上添加規則
預設我的Web主機在内網中,是以外網的使用者是不能通路的,是以現在就需要在防火牆上做一個目标位址轉換,凡是請求防火牆外網1.1.1.1這個位址的web和DNS請求都要給它轉換到Web伺服器的内網位址(172.16.251.93)中來。因為這個請求是先到POSTROUTING再經過FORWARD送到内網使用者的,是以如果你的FORWARD鍊上預設規則是ACCEPT的話,則僅需定義下面這兩條規則就可以了;如果你的FORWARD鍊上的預設規則是DROP,那你不得不再在FORWARD鍊上做tcp80,53和UDP53端口的轉發
2
<code>[root@stu7 ~]</code><code># iptables -t nat -A PREROUTING -d 1.1.1.1 -p tcp -m multiport --dports 80,53 -j DNAT --to-destination 172.16.251.93</code>
<code>[root@stu7 ~]</code><code># iptables -t nat -A PREROUTING -d 1.1.1.1 -p udp --dport 53 -j DNAT --to-destination 172.16.251.93</code>
為了直覺,貼兩個圖吧
nat表的規則
<a href="http://s3.51cto.com/wyfs02/M00/23/6F/wKiom1M2OvCxPr4sAAAyErLBI38654.png" target="_blank"></a>
filter表的規則
<a href="http://s3.51cto.com/wyfs02/M00/23/6F/wKiom1M2O_PD9UEjAABOimGbMmA545.png" target="_blank"></a>
六、外網用戶端測試
1、IP位址設為1.1.1.2/8,與防火牆的外網位址(1.1.1.1/8)處于一個網絡中,并且可以ping通
2、外網用戶端的DNS設定為1.1.1.1
3
<code>[root@stu7 ~]</code><code># vim /etc/resolv.conf</code>
<code>search dns.shuishui.com</code>
<code>nameserver 1.1.1.1</code>
3、使用curl指令測試用IP是否能夠請求到網站資訊
<a href="http://s3.51cto.com/wyfs02/M00/23/6F/wKioL1M2PzCD901fAAAYCnNUjWc515.png" target="_blank"></a>
4、使用curl指令測試用主機名是否能夠請求到網站資訊
<a href="http://s3.51cto.com/wyfs02/M02/23/6F/wKioL1M2P7CCXQeSAAAh_j3aqdY319.png" target="_blank"></a>
5、為了消除疑惑,再ping一下網站吧,看看解析的到底是不是防火牆的外網IP位址
<a href="http://s3.51cto.com/wyfs02/M01/23/6F/wKioL1M2QHyCwKOaAAAqfGDwS3U681.png" target="_blank"></a>

本文轉自 nmshuishui 51CTO部落格,原文連結:http://blog.51cto.com/nmshuishui/1386421,如需轉載請自行聯系原作者