首先介紹一下實驗環境,一共打開三台虛拟機,win7客戶機作為内部區域網路的終端裝置;中間的Linux-2作為内部區域網路的網關以及連接配接外網的裝置;Linux-1作為外網的web伺服器裝置。
(其實這個實驗是接着上次的實驗繼續做的)

檢視Linux-2的網卡屬性需要配置兩塊網卡(不知怎麼添加的看上一篇部落格),一塊作為外網連接配接,一塊作為内部的網卡。IP位址配置如下。
兩塊網卡配置完成,測試一下跟另外兩台PC機是否能夠互聯互通。
此時開啟Linux-1的web服務,關閉SELinux政策,清空防火牆條目。
開啟Linux-2臨時的或直接開啟路由功能,同時也清空防火牆規則。
此時的win7用戶端應該可以通路Linux-1搭建的web服務。Win7客戶機自身的防火牆需要關閉。
打開IE浏覽器,輸入IP位址進行通路。
此時到Linux-1伺服器上面看一下web日志檔案,在/etc/httpd/logs目錄下的access_log裡面有成功通路的日志資訊,這裡可以看到192.168.100.120的網絡的位址通路了自己的httpd服務。
現在在Linux-2上設定iptables表格的SNAT位址轉換條目。如下其中:iptables是指令關鍵字;-t指定表格為nat;-A指定規則鍊并添加至末行,POSTROUTING表示轉發後規則鍊;-s指定源位址此處指定了一個網段;-o表示指定出站口的網卡(是對于内部區域網路來說的);-j後面是規則語句,大寫SNAT表示對源位址進行轉換;--to-source 12.0.0.1源位址轉換為12.0.0.1的位址。
現在再次重新打開win7客戶機的來通路Linux搭建的web網站(最好是關閉浏覽器再重新打開)。
回到Linux-1再次檢視httpd服務的日志檔案,可以看到此時的後面有兩條通路記錄是12.0.0.1的位址,也就是經過SNAT轉換之後通路的位址。
下面進行DNAT目标位址轉換實驗。
首先需要在win7客戶機上搭建IIS服務,也就相當于web服務,用于後面的測試驗證。如圖:在控制台→程式→程式和功能→打開和關閉Windows功能中進行安裝,直接确定等安裝完成就行了。
此時使用win7通路自己搭建的web服務進行測試,應該是沒問題的。
下面還是在Linux-2上面做DNAT的規則條目,此處的-A指定的是nat表格中PREROUTING規則鍊也就是轉發前規則鍊;-d指定的是目标位址,也就是本機的外網卡IP位址;-i表示input進站口(是對于内部區域網路來說的);-p指定通路到本機的tcp協定和80端口号;-j後面的是DNAT目标轉換,--to-destination跟目标IP位址。
規則條目建立完成之後,可以使用指令iptables -L -t nat檢視。
此時用Linux來通路win7搭建的web服務,能夠正常通路表示做對了。
經驗總結:在做DNAT之前,SNAT是必須要做的(因為要有來有回)。
SNAT是将源位址進行轉換,也就是在經過本Linux時會将原來的IP位址轉換為之前設定好的iptables規則條目中的IP位址。是先進行路由轉發再進行使用iptables規則鍊(說白了就是先變再發)。