讀古今文學網 > OpenStack系統架構設計實戰 > 4.1.10 NAT地址轉換 >

4.1.10 NAT地址轉換

NAT(Network Address Translation)是指在數據包傳遞過程中,修改IP報頭中的源或者目的IP地址的過程。通常情況下,應用的發送者或者接收者不知道IP包是否被修改。

NAT功能經常通過路由器來實現,因此可以將執行NAT轉換的主機看成NAT路由器。但是在OpenStack部署中,典型案例是通過Linux服務器執行NAT功能而不是硬件路由器,該服務器使用iptables軟件來實現NAT功能。

在OpenStack環境中,有以下3種類型的NAT轉換。

1.SNAT

SNAT即源網絡地址轉換(Source Network Address Translation),這個NAT路由器修正IP包報頭中的源IP地址。SNAT功能通常用於讓只具有私有IP地址的主機能夠訪問外網。比如,多個PC使用路由器共享上網,每個PC都配置了內網IP,PC訪問外部網絡時,路由器將數據包報頭中的源地址替換成路由器的IP,當外部網絡的服務器,比如網站Web服務器接到訪問請求的時候,它的日誌記錄下來的是路由器的IP,而不是PC的內網IP,這是因為,這個服務器收到的數據包報頭裡面的「源地址」已經被替換了。因此叫作SNAT,基於源地址的地址轉換。

2.DNAT

DNAT即目的網絡地址轉換(Destination Network Address Translation),這個NAT路由器修正IP包報頭中的目的IP地址。典型的應用是,有個Web服務器放在內網以配置內網IP,前端有個防火牆配置公網IP,互聯網上的訪問者使用公網IP來訪問這個網站,當訪問的時候,客戶端發出一個數據包,這個數據包的報頭裡邊,目標地址寫的是防火牆的公網IP,防火牆會把這個數據包的報頭改寫一次,用目標地址改寫Web服務器的內網IP,然後再把這個數據包發送到內網的Web服務器上。這樣,數據包就穿透了防火牆,並從公網IP變成了一個對內網地址的訪問了。

3.一對一NAT

在一對一NAT地址轉換中,NAT路由器維護私有IP地址和外網IP地址的一對一映射關係。OpenStack使用一對一NAT功能實現浮動IP地址功能。