P2P技術(NAT基礎)

一.       NAT分類( 對稱 完美錐形  地址受限制錐形 端口受限制錐形)
根據Stun協議(RFC3489),NAT大致分爲下面四類
1、 Full Cone
這種NAT內部的機器A連接過外網機器C後,NAT會打開一個端口.然後外網的任何發到這個打開的端口的UDP數據報都可以到達A.不管是不是C發過來的.
例如 A:192.168.8.100 NAT:202.100.100.100 C:292.88.88.88
A(192.168.8.100:5000) -> NAT(202.100.100.100 : 8000) -> C(292.88.88.88:2000)
任何發送到 NAT(202.100.100.100:8000)的數據都可以到達A(192.168.8.100:5000)
2、 Restricted Cone
這種NAT內部的機器A連接過外網的機器C後,NAT打開一個端口.然後C可以用任何端口和A通信.其他的外網機器不行.
例如 A:192.168.8.100 NAT:202.100.100.100 C:292.88.88.88
A(192.168.8.100:5000) -> NAT(202.100.100.100 : 8000) -> C(292.88.88.88:2000)
任何從C發送到 NAT(202.100.100.100:8000)的數據都可以到達A(192.168.8.100:5000)
3、Port Restricted Cone
這種NAT內部的機器A連接過外網的機器C後,NAT打開一個端口.然後C可以用原來的端口和A通信.其他的外網機器不行.
例如 A:192.168.8.100 NAT:202.100.100.100 C:292.88.88.88
A(192.168.8.100:5000) -> NAT(202.100.100.100 : 8000) -> C(292.88.88.88:2000)
C(202.88.88.88:2000)發送到 NAT(202.100.100.100:8000)的數據都可以到達A(192.168.8.100:5000)

      以上三種NAT通稱Cone NAT.我們只能用這種NAT進行UDP打洞.

4、Symmetic對於這種NAT.連接不同的外部目標.原來NAT打開的端口會變化.而Cone NAT不會.雖然可以用端口猜測.但是成功的概率很小.因此放棄這種NAT的UDP打洞.
二、NAT實現方式 

  NAT的實現方式有三種,即靜態轉換Static Nat動態轉換Dynamic Nat 和 端口多路複用OverLoad

  靜態轉換是指將內部網絡的私有IP地址轉換爲公有IP地址,IP地址對是一對一的,是一成不變的,某個私有     IP地址只轉換爲某個公有IP地址。藉助於靜態轉換,可以實現外部網絡對內部網絡中某些特定設備(如服務     器)的訪問。

  動態轉換是指將內部網絡的私有IP地址轉換爲公用IP地址時,IP地址是不確定的,是隨機的,所有被授權訪問上Internet的私有IP地址可隨機轉換爲任何指定的合法IP地址。也就是說,只要指定哪些內部地址可以進行轉換,以及用哪些合法地址作爲外部地址時,就可以進行動態轉換。動態轉換可以使用多個合法外部地址集。當ISP提供的合法IP地址略少於網絡內部的計算機數量時。可以採用動態轉換的方式。
  端口多路複用(Port address Translation,PAT)是指改變外出數據包的源端口並進行端口轉換,即端口地址轉換(PAT,Port Address Translation).採用端口多路複用方式。內部網絡的所有主機均可共享一個合法外部IP地址實現對Internet的訪問,從而可以最大限度地節約IP地址資源。同時,又可隱藏網絡內部的所有主機,有效避免來自internet的攻擊。因此,目前網絡中應用最多的就是端口多路複用方式。
  3.網絡地址轉換(NAT)的實現
在配置網絡地址轉換的過程之前,首先必須搞清楚內部接口和外部接口,以及在哪個外部接口上啓用NAT。通常情況下,連接到用戶內部網絡的接口是NAT內部接口,而連接到外部網絡(如Internet)的接口是NAT外部接口。
  
  1).靜態地址轉換的實現 
假設內部局域網使用的lP地址段爲192.168.0.1~192.168.0.254,路由器局域網端(即默認網關)的IP地址爲192.168.0.1,子網掩碼爲255.255.255.0。網絡分配的合法IP地址範圍爲61.159.62.128~61.159.62.135,路由器在廣域網中的IP地址爲61.159.62.129,子網掩碼爲255.255.255.248可用於轉換的IP地址範圍爲61.159.62.130~61.159.62.134。要求將內部網址192.168.0.2~192.168.0.6分別轉換爲合法IP地址61.159.62.130~61.159.62.134。
  
  第一步,設置外部端口。
  interface serial 0
  ip address 61.159.62.129 255.255.255.248
  ip nat outside
  第二步,設置內部端口。
  interface ethernet 0
  ip address 192.168.0.1 255.255.255.0
  ip nat inside
  第三步,在內部本地與內部合法地址之間建立靜態地址轉換。
  ip nat inside source static 內部本地地址內部合法地址。
  示例:
  ip nat inside source static 192.168.0.2 61.159.62.130 //將內部網絡地址192.168.0.2轉換爲合法IP地址61.159.62.130
  ip nat inside source static 192.168.0.3 61.159.62.131 //將內部網絡地址192.168.0.3轉換爲合法IP地址61.159.62.131
  ip nat inside source static 192.168.0.4 61.159.62.132 //將內部網絡地址192.168.0.4轉換爲合法IP地址61.159.62.132
  ip nat inside source static 192.168.0.5 61.159.62.133 //將內部網絡地址192.168.0.5轉換爲合法IP地址61.159.62.133
  ip nat inside source static 192.168.0.6 61.159.62.134 //將內部網絡地址192.168.0.6轉換爲合法IP地址61.159.62.134
  至此,靜態地址轉換配置完畢。
  2).動態地址轉換的實現
  假設內部網絡使用的IP地址段爲172.16.100.1~172.16.100.254,路由器局域網端口(即默認網關)的IP地址爲172.16.100.1,子網掩碼爲255.255.255.0。網絡分配的合法IP地址範圍爲61.159.62.128~61.159.62.191,路由器在廣域網中的IP地址爲61.159.62.129,子網掩碼爲255.255.255.248,可用於轉換的IP地址範圍爲61.159.62.130~61.159.62.190。要求將內部網址172.16.100.1~172.16.100.254動態轉換爲合法IP地址61.159.62.130~61.159.62.190。
  第一步,設置外部端口。
  設置外部端口命令的語法如下:
  ip nat outside
  示例:
  interface serial 0 //進入串行端口serial 0
  ip address 61.159.62.129 255.255.255.248//將其IP地址指定爲61.159.62.129,子網掩碼爲255.255.255.248
  ip nat outside //將串行口serial 0設置爲外網端口
  注意,可以定義多個外部端口。
  第二步,設置內部端口。
  設置內部接口命令的語法如下:
  ip nat inside
  示例:
  interface ethernet 0 //進入以太網端口Ethernet 0
  ip address 172.16.100.1 255.255.255.0 // 將其IP地址指定爲172.16.100.1,子網掩碼爲255.255.255.0
  ip nat inside //將Ethernet 0 設置爲內網端口。
  注意,可以定義多個內部端口。
  第三步,定義合法IP地址池。
  定義合法IP地址池命令的語法如下:
  ip nat pool 地址池名稱 起始IP地址 終止IP地址 子網掩碼
  其中,地址池名字可以任意設定。
  示例:
  ip nat pool chinanet 61.159.62.130 61.159.62.190 netmask 255.255.255.192 //指明地址緩衝池的名稱爲chinanet,IP地址範圍爲61.159.62.130~61.159.62.190,子網掩碼爲255.255.255.248。需要注意的是,即使掩碼爲255.255.255.0,也會由起始IP地址和終止IP地址對IP地址池進行限制。
  或ip nat pool test 61.159.62.130 61.159.62.190 prefix-length 30
  注意,如果有多個合法IP地址範圍,可以分別添加。例如,如果還有一段合法IP地址範圍爲"211.82.216.1~211.82.216.254",那麼,可以再通過下述命令將其添加至緩衝池中。
  ip nat pool cernet 211.82.216.1 211.82.216.254 netmask 255.255.255.0
  或
  ip nat pool test 211.82.216.1 211.82.216.254 prefix-length 24
  第四步,定義內部網絡中允許訪問Internet的訪問列表。
  定義內部訪問列表命令的語法如下:
  access-list 標號 permit 源地址 通配符(其中,標號爲1~99之間的整數)
  access-list 1 permit 172.16.100.0 0.0.0.255 //允許訪問Internet的網段爲172.16.100.0~172.16.100.255,反掩碼爲0.0.0.255。需要注意的是,在這裏採用的是反掩碼,而非子網掩碼。反掩碼與反掩碼的關係爲:反掩碼+子網掩碼=255.255.255.255。例如,子網掩碼爲255.255.0.0,則反掩碼爲0.0.255.255;子網掩碼爲255.0.0.0,則反掩碼爲0.255.255.255;子網掩碼爲255.252.0.0,則反掩碼爲0.3.255.255;子網掩碼爲255.255.255.192,則反掩碼爲 0.0.0.63。
  另外,如果想將多個IP地址段轉換爲合法IP地址,可以添加多個訪問列表。例如,當欲將172.16.98.0~172.16.98.255和172.16.99.0~172.16.99.255轉換爲合法IP地址時,應當添加下述命令:
  access-list2 permit 172.16.98.0~0.0.0.255
  access-list3 permit 172.16.99.0~0.0.0.255
  第五步,實現網絡地址轉換。
  在全局設置模式下,將由access-list指定的內部本地地址與指定的內部合法地址池進行地址轉換。命令語法如下:
  ip nat inside source list 訪問列表標號 pool 內部合法地址池名字
  示例:
  ip nat inside source list 1 pool chinanet
  如果有多個內部訪問列表,可以一一添加,以實現網絡地址轉換,如
  ip nat insde source list 2 pool chinanet
  ip nat insde source list 3 pool chinanet
  如果有多個地址池,也可以一一添加,以增加合法地址池範圍,如
  ip nat insde source list 1 pool cernet
  ip nat insde source list 2 pool cernet
  ip nat insde source list 3 pool cernet
  至此,動態地址轉換設置完畢。
  3).端口複用動態地址轉換(PAT) 
內部網絡使用的IP地址段爲10.100.100.1~10.100.100.254,路由器局域網端口(即默認網關)的IP地址爲10.100.100.1,子網掩碼爲255.255.255.0。網絡分配的合法IP地址範圍爲202.99.160.0~202.99.160.3,路由器廣域網中的IP地址爲202.99.160.1,子網掩碼爲255.255.255.252,可用於轉換的IP地址爲202.99.160.2。要求將內部網址10.100.100.1~10.100.100.254 轉換爲合法IP地址202.99.160.2。
  
  第一步,設置外部端口。
  interface serial 0
  ip address 202.99.160.1 255.255.255.252
  in nat outside
  第二步,設置內部端口。
  interface ethernet 0
  ip address 10.100.100.1 255.255.255.0
  ip nat inside
  第三步,定義合法IP地址池。
  in nat pool onlyone 202.99.160.2 202.99.160.2 netmask 255.255.255.252
  // 指明地址緩衝池的名稱爲onlyone,IP地址範圍爲202.99.160.2,子網掩碼爲255.255.255.252。由於本例只有一個IP地址可用,所以,起始IP地址與終止IP地址均爲202.99.160.2。如果有多個IP地址,則應當分別鍵入起止的IP直址。
  第四步,定義內部訪問列。
  access-list 1 permit 10.100.100.0 0.0.0.255
  允許訪問Internetr的網段爲10.100.100.0~10.100.100.255,子網掩碼爲255.255.255.0。需要注意的是,在這裏子網掩碼的順序跟平常所寫的順序相反,即0.0.0.255。 
,設置複用動態地址轉換。
  第五步
  在全局設置模式下,設置在內部的本地地址與內部合法IP地址間建立複用動態地址轉換。命令語法如下:
  ip nat inside source list訪問列表號pool內部合法地址池名字overload
  示例:
  ip nat inside source list1 pool onlyone overload //以端口複用方式,將訪問列表1中的私有IP地址轉換爲onlyone IP地址池中定義的合法IP地址。
  注意:overload是複用動態地址轉換的關鍵詞


  至此,端口複用動態地址轉換完成。

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