網路位址轉換 NAT 與 PAT

當可用的真實IP越來越少,就必須使用網路位址轉換(NATPAT)來轉換虛擬、私有IP(Private IP)到公共IP

如果你沒聽過 NAT 我想你至少有聽過網路分享器(N台電腦共享一個對外連線),雖然各家廠商實做出來的功能不盡相同,但本質上那是一樣的東西。

私有(Private IP)的範圍為

   10.0.0.0 ~ 10.255.255.255 2^24 個 IP 1個 ClassA
172.16.0.0 ~ 172.31.255.255 2^20 個 IP 16個 ClassB
192.168.0.0 ~ 192.168.255.255 2^16 個 IP 255個  ClassC

 

◆私有位址的路由資訊不能對外散播

◆使用私有位址作為來源或目的位址的封包,不能透過 Internet 來轉送

◆關於私有位址的參考紀錄,只能限於內部網路使用

 

網路位址轉換器有三種類型:

靜態NATstatic NAT一對一的對應(一個虛擬ip對應一個真實ip)

NAT群(Pooled NAT:多對多的對應(多個虛擬ip對應多個真實ip,但同一時間,某真實ip只會對應一個虛擬ip)

連接埠 NAT(PAT, Port Address Translation)多對多的對應,但不是單一的對應,會透過使用連接埠的方式,使其同一時間,某真實ip可以對應多個虛擬ip。理論值 PAT 支持同時連接 64500個TCP/IP、UDP/IP connections。

舉例:當 192.168.1.2 要連結 140.113.1.1 的 WWW 時,封包的內容 SA=192.168.1.2、SP=1520 當穿過 PAT 之後,其來源的欄位會被換成 PAT 所對應(mapping)的 IP 與 Port ,也就是下圖中的 SA=101.1.1.1、SP=4621。反之,當 PAT 收到回應時,一樣到 mapping 表找出對應內部的主機與聯繫的服務。

基本動作原理說完了,現在就用例子來說明怎麼在 Cisco Router 裡設定 NAT 與 PAT。

先決條件,各設備 IP 與 Routing 機制都已完成,50.0.0.1 可以 ping 到 20.0.0.1。

圖中下半部分 10.0.0.0 的網段就是使用虛擬 IP。如今要對外通訊,就必須透過 Router R2 來做網路位置的轉換,你可以把 switch 0 以下想成公司內部的網路。

由於 NAT 的動作是由 Router R2 所處理,所以只需設定好 R2 就能讓內部的機器連上網路。(註:跟 Routing 跟 DHCP 都無關)

---設定 NAT / PAT 2 個步驟-----------

  1. 設定 IP 的對應方式
  2. 設定位址轉換的 inside / outside 介面為何

****** Static NAT ******

1.設定 10.0.0.1 對應 101.0.0.5、設定 10.0.0.2 對應 101.0.0.6,也可以利用指定對外 Interface 的方式

R2(config)#ip nat inside source static 10.0.0.1 101.0.0.5

R2(config)#ip nat inside source static 10.0.0.2 101.0.0.6

2.設定位址轉換的 inside / outside 介面

R2(config)#interface fastEthernet 0/1

R2(config-if)#ip nat inside

R2(config)#interface fastEthernet 0/0

R2(config-if)#ip nat outside

利用 指令觀察一下轉換的情形

R2#show ip nat translations

Pro  Inside global     Inside local       Outside local      Outside global

---  101.0.0.6          10.0.0.10          ---                    ---

---  101.0.0.7          10.0.0.11          ---                    ---

---  101.0.0.5          10.0.0.1            ---                    ---

****** Pooled NAT Dynamic NAT ******

1.設定內部允許轉換的虛擬IP範圍
R1(config)#access-list 1 permit 10.0.0.0 0.255.255.255
##後面用的網路遮罩為 wildcard bits 反向遮罩

2.設定外部合法IP的使用範圍
R1(config)#ip nat pool nat10 101.0.0.4 101.0.0.5 netmask 255.0.0.0
##這時的網路遮罩是正常的唷!
R1(config)#ip nat inside source list 1 pool nat10
## 所用的 pool name 請注意大小寫,免得造成無法正常動作。

-3.設定 ip nat 對內、對外的介面
R1(config)#interface fastEthernet 1/0
R1(config-if)#ip nat inside 
R1(config)#interface fastEthernet 0/0
R1(config-if)#ip nat outside 

這個例子好玩的是,我設定用來做IP轉換的只提供2個IP(101.0.0.4-5),而左邊的PC有3台

Q:那當第3台要上線時會有什麼問題?
A:會不通

必須等佔用 NAT connections 的逾期或被清掉,才能正常的連線。

****** PAT ******

PAT 的名聲雖不如 NAT 來的有名,可是現在大部分施行網路位址轉換的動作方式,其實都是 PAT (Port Address Translation),都是以連接埠來做為轉換的方法,而非一對一的 IP 位址對應。

這個 PAT 例子故意弄個跟之前 NAT 不一樣是因為,在較大的公司內部網路,其使用虛擬 IP 通常不只使用一個 Class-C的範圍,即使使用 10.x.x.x 也不會將網路遮罩設成 255.0.0.0 (誰要這麼大的廣播範圍阿)。

1.設定內部允許轉換的虛擬IP範圍

access-list 編號 允許/禁止 IP網段 反向掩碼
R1(config)#access-list 1 permit 10.20.0.0 0.0.255.255
R1(config)#access-list 1 permit 10.30.0.0 0.0.255.255

2.設定外部合法IP的使用範圍
上一個例子是在 101.0.0.x 的網段,宣告使用 101.0.0.4-5的 IP 來做為轉換,當然在 PAT 你一樣可以這麼做,但其實有另一種作法,就是直接「介面」做 IP 轉換,而不是指定 IP 的方式。

R1(config)#ip nat inside source list 1 interface FastEthernet0/0 overload

Pooled_NAT 跟 PAT 在設定上最大的不同,就是在命令最後有一個「overload」參數,意思為指定以 port 方式來分辨不同的內部主機的某通訊連線。

3.設定 ip nat 對內、對外的介面

!
interface FastEthernet0/0
 ip address 101.0.0.1 255.0.0.0
 ip nat outside
!
interface FastEthernet1/0
 ip address 10.20.0.254 255.255.0.0
 ip nat inside
!
interface FastEthernet1/1
 ip address 10.30.0.254 255.255.0.0
 ip nat inside
!

有多個對內使用虛擬 IP 的介面,都需要設定「ip nat inside

arrow
arrow

    那個先生 發表在 痞客邦 留言(0) 人氣()