網絡基本功(十九):細說NAT原理與配置

網絡基本功(十九):細說NAT原理與配置

 

轉載請在文首保留原文出處:EMC中文支持論壇https://community.emc.com/go/chinese p_w_picpath001.gif

 

 

介紹

 

NAT技術讓少數公有IP地址被使用私有地址的大量主機所共享。這一機制允許遠多於IP地址空間所支持的主機共享網絡。同時,由於NAT屏蔽了內部網絡,也爲局域網內的機器提供了安全保障。


NAT的基本實施過程包括使用一個預留給本地IP網絡的私有地址成立組織的內部網絡,同時分配給組織一個或多個公網IP地址,並在本地網絡與公網之間安裝一個或多個具有NAT功能的路由器。NAT路由器實現的功能包括將數據報中私網地址轉換成公網地址,反向亦然。當有報文通過時,網絡地址轉換其不僅檢查報文信息,還將報文頭中的IP地址和端口信息進行修改,以使處於NAT之後的機器共享少數公網IP地址。


更多信息

 

何時使用NAT?

 

因爲NAT能夠減少在網絡環境中所需的公共IP地址需求,因此當兩家公司重複內部地址合併時,這一技術是很有幫助的。當組織改變其Internet服務供應商(ISP),但網絡管理員不想改變內部地址方案時,NAT也是一個很好用的工具。

以下是應用NAT的場景:

  • 用戶需要訪問Internet但主機沒有全球唯一的IP地址

  • 用戶更改ISP需要對網絡重新編號

  • 用戶需要合併地址重複的內網

 

通常NAT應用於邊界路由器。例如,下圖中NAT應用於企業連接到Internet的路由器上:

p_w_picpath002.png

 

 

NAT的優勢與不足:

 

         

優勢

不足

節約合法註冊地址

轉換導致交換路徑延時

解決地址重疊問題

導致端到端IP地址無法追溯

提高訪問Internet靈活性

某些應用程序無法使用

網絡變動無需地址重新編號

 

網絡地址轉換類型:

 

靜態NAT:此類NAT在本地和全局地址之間做一到一的永久映射。須注意靜態NAT要求用戶對每一臺主機都有一個真實的Internet IP地址。

動態NAT:允許用戶將一個未登記的IP地址映射到一個登記的IP地址池中的一個。採用動態分配的方法將外部合法地址映射到內部網絡,無需像靜態NAT那樣,通過對路由器進行靜態配置來將內部地址映射到外部地址,但是必須有足夠的真正的IP地址來進行收發包。

端口NAT(PAT):最爲流行的NAT配置類型。通過多個源端口,將多個未登記的IP地址映射到一個合法IP地址(多到一)。使用PAT能夠使上千個用戶僅使用一個全局IP地址連接到Internet。

 

NAT術語:

 

NAT術語還是比較直觀的。NAT地址轉換之後成爲全局地址。通常是Internet上使用的公網地址。如果不訪問Internet的話就不需要用到。

本地地址:NAT地址轉換之前用到的地址。內部本地地址實際上是嘗試訪問Internet的發送主機的私有地址。外部本地地址通常是連接到用戶ISP的路由器接口,也是報文開始傳輸的公有地址。

 

轉換之後,內部本地地址之後被稱爲內部全局地址,而外部全局地址成爲目標主機的地址。如下表所示:

         

名稱

含義

內部本地

轉換前的源主機內部地址

外部本地

Internet上識別到源主機的地址。通常是連接到ISP的路由器接口——真實的Internet地址。

內部全局

轉換後連接到Internet的源主機地址。也是真實的Internet地址

外部全局

外部目標主機地址,同樣是真實的Internet地址

p_w_picpath003.png

 

NAT實現細節:

 

下圖中,主機10.1.1.1將報文發送到有NAT功能的邊界路由器。路由器將源IP地址識別爲內部本地IP地址,在報文中轉換源IP地址,並在NAT表中記錄此次轉換。

 

配有新轉換源地址的報文發送到外部接口。外部主機將報文發送給目的主機並且NAT路由器通過NAT表將內部全局IP地址轉換回內部本地IP地址。

p_w_picpath004.png

 

PAT方式中,所有內部主機都轉換爲一個IP地址。如下圖所示,除了內部本地IP地址和內部全局IP地址以外,還多了一個端口號。端口號幫助路由器識別哪一臺主機應當收到返回數據。路由器使用來自各主機的源端口好來區別他們各自發出的數據。注意當報文離開路由器時有一個目標端口號80,而HTTP服務器將報文發回時目的端口號爲1026。從而允許NAT轉換路由器區別NAT表中的主機然後將目的IP地址轉換回內部本地地址。

 

本例中,端口號在傳輸層用戶識別本地主機。如果必須要使用真實全局IP地址來識別源主機,那就只能通過靜態NAT,並且會用光所有地址。PAT允許我們在傳輸層識別主機,從而理論上一個真實IP地址可被65,000臺主機共享。

p_w_picpath005.png

 

靜態NAT配置:

 

ip nat inside source static 10.1.1.1 170.46.2.2

!

interface Ethernet0

ip address 10.1.1.10 255.255.255.0

ip nat inside

!

interface Serial0

ip address 170.46.2.1 255.255.255.0

ip nat outside

!

 

在第一個路由器輸出中, ip nat inside source 命令指定需要轉換的IP地址。本例中,此命令配置了內部本地IP地址10.1.1.1到外部全局IP地址170.46.2.2的靜態配置。

在各接口下都有一條ip nat命令。ip nat inside命令將該接口識別爲內部接口,ip nat outside命令將該接口識別爲外部接口。回頭看 ip nat inside source 命令,該命令將內部接口作爲轉換的源或起點。也可以這樣使用:ip nat outside source。該選項表明指定的外部接口會成爲轉換的源或起點。

 

動態NAT配置:

 

動態NAT表示將一個地址池當作真實IP地址提供給內部一組用戶。由於不使用端口號,對於同時嘗試訪問外部網絡的用戶必須提供真實的IP地址。

 

以下是動態NAT配置的示例輸出:

ip nat pool todd 170.168.2.3 170.168.2.254

    netmask 255.255.255.0

ip nat inside source list 1 pool todd

!

interface Ethernet0

ip address 10.1.1.10 255.255.255.0

ip nat inside

!

interface Serial0

ip address 170.168.2.1 255.255.255.0

ip nat outside

!

access-list 1 permit 10.1.1.0 0.0.0.255

!

 

ip nat inside source list 1 pool todd 命令告知路由器將匹配access-list 1的IP地址轉換到名爲todd的IP NAT池中的一個地址。這裏ACL並不是出於安全因素通過允許或拒絕數據來過濾報文。本例中,它是用來選擇或指定我們感興趣的數據流。當數據流與接入列表相匹配,就被拉入NAT進程轉換。

 

命令 ip nat pool todd 170.168.2.3 192.168.2.254 netmask 255.255.255.0用來創建地址池,之後被分配給請求全局地址的主機。做Cisco NAT故障排查時,一定要檢查池中確保有足夠地址提供轉換給內部主機。最後,確保池名匹配,注意區分大小寫。

 

端口NAT配置:

 

以下是端口NAT配置的示例輸出:

ip nat pool globalnet 170.168.2.1 170.168.2.1 netmask 255.255.255.0

ip nat inside source list 1 pool globalnet overload

!

interface Ethernet0/0

ip address 10.1.1.10 255.255.255.0

ip nat inside

!

interface Serial0/0

ip address 170.168.2.1 255.255.255.0

ip nat outside

!

access-list 1 permit 10.1.1.0 0.0.0.255

端口NAT與動態NAT配置的不同之處在於:

地址池變爲只有一個IP地址

在ip nat inside source命令最後加入overload關鍵字。

 

本例中一個關鍵元素是使用了池中的一個IP地址作爲外部接口IP地址。如果有其他可用地址如170.168.2.2可作爲額外地址,這樣做在內部大量用戶同時爲活躍狀態,需要不止一個重載IP地址時很有幫助

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章