SNAT+DNAT 政策簡介:
·SNAT(源位址轉換):是Linux防火牆的一種位址轉換操作,也是iptables指令中的一種資料包控制類型,其作用是根據指定調教修改資料包的源IP位址
内部位址要通路公網上的服務時(如web通路),内部位址會主動發起連接配接,由路由器或者防火牆上的網關對内部位址做個位址轉換,将内部位址的私有IP轉換為公網的公有IP,網關的這個位址轉換稱為SNAT,主要用于内部共享IP通路外部。
·SNAT政策隻能用在nat表的POSTROUTING鍊,使用iptables指令編寫SNAT政策時,需要結合‘--to-source IP’選項來指定修改後的源IP位址
·DNAT(目标位址址轉換):是Linux防火牆的另一種位址轉換操作,同樣也是iptables指令中的資料包控制類型,其作用是—根據指定條件修改資料包的目标IP位址和目标端口
當内部需要提供對外服務時(如對外釋出web網站),外部位址發起主動連接配接,由路由器或者防火牆上的網關接收這個連接配接,然後将連接配接轉換到内部,此過程是由帶有公網IP的網關替代内部服務來接收外部的連接配接,然後在内部做位址轉換,此轉換稱為DNAT,主要用于内部服務對外釋出。
·DNAT政策隻能用在nat表的PREROUTING鍊,使用使用iptables指令編寫DNAT政策時,需要結合‘--to-destination IP位址’選項來指定内部伺服器的IP位址
SNAT+DNAT注意事項:
·SNAT政策隻能用在nat表的POSTROUTING鍊;
·SNAT将内部位址的私有IP轉換為公網的公有IP;
·SNAT用于内部共享IP通路外部。
·DNAT政策隻能用在nat表的PREROUTING鍊;
·DNAT主要用于内部服務對外釋出;
SNAT+DNAT實作前準備:
![]() | IP 位址 | 用途 |
Win 7 | 192.168.100.40 | 充當内網web伺服器 |
Linux (CentOS7) | ens33:192.168.100.1 ens36:12.0.0.1 | 充當防火牆 ens33:當作内網網關 ens36:當作外網網關 |
Linux (RedHat6) | 12.0.0.12 | 充當外網伺服器(httpd) |
SNAT+DNAT政策開始
·因為Linux(CentOS7)作為防火牆網關,需要添加一塊網卡,并對其進行IP配置!以上表格已注明IP位址和作用
·win7作為内網伺服器,了為之後的驗證,為它建立一個網站服務,可以讓外網通路此網站:
·Linux(RedHat6)作為外網伺服器,同樣也安裝httpd服務。并且修改IP位址為:12.0.0.12 網關為:12.0.0.1
執行以下指令:
yum install httpd -y //安裝httpd服務
service httpd start //啟動httpd服務
service iptables stop //關閉防火牆
setenforce 0 //關閉selinux
·Linux(CentOS7)從當防火牆,把iptables的所有規則删除包括nat表裡的規則:
·對于Linux伺服器,IP轉發是實作路由功能的關鍵所在,若要Linux主機作為網關裝置,就必須開啟路由功能,修改配置檔案:vim /etc/sysctl.conf
在執行指令:sysctl -p //讀取修改後的配置
·内網win7需要通路外網RedHat6的httpd服務,那麼就需要做SNAT政策,由下圖說明指令所代表含義:
·現在外網RedHat6需要通路内網win7的web服務,那麼就需要做DNAT政策,由下圖說明指令所代表含義:
驗證:
内網通路外網:
檢視httpd的日志檔案,可以看到是哪個IP 通路httpd:
實驗成功。
總結:
·在配置防火牆或者路由acl政策時要注意這兩個NAT一定不能混淆。
·注意内網和外網的網卡名稱,在配置時不要混淆
·DNAT政策隻能用在nat表的PREROUTING鍊
·SNAT政策隻能用在nat表的POSTROUTING鍊