1. 程式人生 > >理解鏈路本地址與站點本地地址

理解鏈路本地址與站點本地地址

學習IPV6的時候涉及到一個概念,link-local address, 中文叫“鏈路本地地址”,它的字首是
FE80::/64
一個link-local address的範例:
FE80::713e:a426:d167:37ab

實際上,這個概念類似於ipv4中,當DHCP分配失敗時自動生成的169.254.XXX.XXX這樣的地址,凡是源地址或目的地址中含有link-local address的報文,路由器都不應當轉發它。這樣的報文只能在一個LAN中互通。

<IPV6的地址型別>
可分為三大類:
1、單播地址
2、組播地址
3、任意播地址
單播--Unicast : one to one
·單播地址用於一對一的連線
·IPv6單播地址有以下六種型別:

 1-Aggregate Global Unicast Address   2xxx:xxxxx/3 - 3FFF: :FFFF
                                       2001::/16 IPV6因特網地址
                                       2002::/16 6to4過渡地址
   2-Link Local Address              FE80::/10   (前10位以FE80開頭)
   3-Site Local Address (Private)       FEC0::/10
   4-Unspecified Address              0:0:0:0:0:0:0:0/128 => ::/128


   5-Loopback Address                0:0:0:0:0:0:0:1/128 => ::1/128
   6-IPv4 Compatible Address            ::192.168.30.1 => ::C0A8:1E01
以下是一些單播地址的具體說明:

1、可聚合全球單播地址Aggregate global unicast address
由IANA分配的可在全球路由的公網IP地址
目前已分配的字首:2000::/3     佔用了12.5%的IPV6地址空間
2000:0000:0000:0000:0000:0000:0000:0000--3FFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF
這個字首中總共包含8192個/16的字首


目前實際用於IPV6因特網運作的字首:2001::/16
2002::/16 為使用6-TO-4過渡機制的節點保留
3ffe::/16 用於6bone測試目的的字首

2、本地鏈路地址:link-local address
當在一個節點啟用IPV6,啟動時節點的每個介面自動生成一個link-local address
其字首64位為標準指定的,其後64位按EUI-64格式來構造
注意:在本鏈路上,路由表中看到的下一跳都是對端的Link Local地址,不是公網IP地址
字首:FE80::/10
範圍:只能在本地鏈路使用,不能在子網間路由
為何需要link-local--在一個介面可以配置很多IPv6地址,所以學習路由就有可能出現很多下一跳。
所以出現Link Local地址唯一標識一個節點。在本地鏈路看到下一跳都是對端的Link Local地址。
在網路重新編址過程中,節點和路由器的Link Local地址不會發生變化,可以很容易地做一個修改,不用擔心網路不可達。
R1(config-if)#ipv6 address FE80:0:0:0:0123:0456:0789:0abc link-local   手工指定link-local地址

3、本地站點地址:site-local address
IPV6的私網地址,就像IPV4中的私網保留地址一樣
只佔用到整個IPV6地址空間的0.1%
字首:FEC0::/10 其後的54位元用於子網ID 最後64位用於主機ID
範圍:只能在本站點內使用,不能在公網上使用
例如:在本地分配十個子網
1、FEC0:0:0:0001::/64
2、FEC0:0:0:0002::/64
3、FEC0:0:0:0003::/64
10、FEC0:0:0:000A::/64
本地站點地址被設計用於永遠不會與全球IPV6因特網進行通訊的裝置,比如:印表機、內部網伺服器、網路交換機等

4、未指定地址Unspecified address
形式:0:0:0:0:0:0:0:0 
表示地址未指定,或者在寫預設路由時代表所有路由

5、迴環地址Loopack address
形式:0:0:0:0:0:0:0:1
同IPV4中127.0.0.1地址的含義一樣,表示節點自已

6、內嵌IPV4地址的IPV6地址 IPv4 Compatible Address
1、IPV4相容的IPV6地址--用於在IPV4網路上建立自動隧道,以傳輸IPV6資料包。
   其中高96bit設為0,後面跟32bit的IPV4地址
   0000:0000:0000:0000:0000:0000:206.123.31.2
   0000:0000:0000:0000:0000:0000:ce7b:1f01
   由於這種機制不太好,現在已經不再使用,轉而採用更好的過渡機制
2、對映IPV4的IPV6地址--僅用於擁有IPV4和IPV6雙協議棧節點的本地範圍
   其中高80bit設為0,後16bit設為1,再跟IPV4地址
   0000:0000:0000:0000:0000:ffff:206.123.31.2
   0000:0000:0000:0000:0000:ffff:ce7b:1f01
EUI-64格式:擴充套件惟一識別符號
在IPV6中,無狀態自動配置機制使用EUI-64格式來自動配置IPV6地址
所謂無狀態自動配置是指在網路中沒有DHCP伺服器的情況下,允許節點自行配置IPV6地址的機制。
EUI-64的構造規則--根據介面的MAC地址再加上固定的字首來生成一個IPV6的地址
工作原理:自動將48bit的乙太網MAC地址擴充套件成64bit,再掛在一個64bit的字首後面,組成一個IPV6地址

一、將48位的MAC地址從中間分開,插入一個固定數值FFFE
    0050:3EE4:4C00-->0050:3EFF:FEE4:4C00
二、將第7個位元位反轉,如果原來是0,就變為1,如果原來是1,就變為0
    0050:3EFF:FEE4:4C00-->0250:3EFF:FEE4:4C00
三、加上字首--FE80::0250:3EFF:FEE4:4C00 這就是一個完整的IPV6地址
反轉的原因
  
在MAC地址中,第7位元為1表示本地管理,為0表示全球管理
  在EUI-64格式中,第7位為1表示全球惟一,為0表示本地惟一

組播地址Multicast
在IPV6中沒有廣播,用組播來代替
字首:FF00::/8   佔用了0.38%的IPV6地址空間

      1111    1111    4bit       4bit
     |→固定值←||→標誌←| |→範圍←|
標誌位為0000表示是永久保留的組播地址,分配給各種技術使用
標誌位為0001表示是使用者可使用的臨時組播地址
範圍段定義了組播地址的範圍,其定義如下:
二進位制    十六進位制    範圍型別
0001          1       本地介面範圍
0010          2       本地鏈路範圍
0011          3       本地子網範圍
0100          4       本地管理範圍
0101          5       本地站點範圍    類似組播的私網地址
1000          8       組織機構範圍
1110          E       全球範圍        類似組播的公網地址
下面是一些組播指定地址:
FF02::1    all nodes   在本地鏈路範圍的所有節點
FF02::2    all routers 在本地鏈路範圍的所有路由器
FF02::5    all ospf routers
FF02::9    all rip routers 所有執行RIP的路由器
FF02::A    all eigrp routers 所有執行eigrp的路由器
FF05::2                在一個站點範圍內的所有路由器

被請求節點的組播地址solicited-node multicast address--重要的東東
一種特殊的組播地址,對於節點或路由器的介面上配置的每個單播和任意播地址,都會自動生成一個對應的被請求節點組播地址。注意link-local address也會生成一個被請求節點的組播地址。
工作範圍:只在本地鏈路上有效
特點:1、在本地鏈路上,被請求節點的組播地址組中通常只包含一個使用者
           2、只要知道一個節點的IPV6地址,就能計算出它的被請求節點的組播地址
作用:1、在IPV6中,沒有ARP。ICMP代替了ARP的功能,被請求節點的組播地址被節點用來獲得相同本地鏈路上鄰居節點的鏈路層地址
           2、用於重複地址檢測DAD,在使用無狀態自動配置將某個地址配置為自已的IPV6地址之前,節點利用DAD
         驗證在其本地鏈路上該地址是否已經被使用。
字首:FF02:0000:0000:0000:0000:0001:FFxx:xxxx/104
      FF02::1:FFxx:xxxx/104
如何產生:被請求節點組播地址的前104位固定,將IP地址的後24位移下來填充到後面就可以了
   例如:IPv6---2001::1234:5678/64
   被請求節點組播地址---FF02::1:FF34:5678/104
   其中FF02::1:FF為固定部分,共104位
組播IP地址到MAC地址的對映:
對映規則:組播MAC地址的前16位固定為0x3333,將組播IPV6地址的後32位直接對映到組播MAC地址的後32位就可以了。
例:IPV6地址為--FF12::1234:5678/64
    對應的組播MAC地址為--3333:1234:5678
    0x3333為固定字首
例:所有節點的組播地址:FF02::0001
    對應的組播MAC地址:3333:0000:0001


任意播地址Anycast address
應用在one-to-nearest(一到近)模式
任意播是多個裝置共享一個地址.分配IPv6單播(unicast)地址給擁有相同功用的一些裝置.傳送方傳送一個以任意播為目標地址的包,當路由器接受到這個包以後,就轉發給具有這個地址的離它最近的裝置.單播地址用來分配任意播地址.對於那些沒有配備任意播的的地址就是單播地址;但是當一個單播地址分配給不止一個介面的時候,單播地址就成了任意播地址。
例如:Mobile方面的特性,移動裝置漫遊到其他區域,不必接入原始的接入點,只需要找到最近的即可。
必須的IPV6地址:
一旦節點啟用IPV6,那麼介面就會自動生成下列地址
1、本地鏈路地址
2、迴環地址
3、所有節點多播地址FF02::1
4、如果是路由器,還會有FF02::2
5、被請求節點的組播地址
如果介面配了一個IPV6的單播地址,還會產生被請求節點的組播地址


《如何在幀中繼中寫MAP》
注意:必須寫兩條MAP,一條是所配IPV6地址的MAP,一條是link-local地址的MAP
否則會由於沒有MAP對映導致無法PING通。
<IPV6的基本命令>
R1(config)#ipv6 unicast-routing    在路由器上開啟IPV6路由功能
R1(config-if)#ipv6 enable        在介面下啟用IPV6,會自動生成一個link-local地址
R1(config-if)#ipv6 address 2001::1/64   指定一個IP地址,配置後會自動生成一個link-local地址
R1(config-if)#ipv6 address FE80:0:0:0:0123:0456:0789:0abc link-local   手工指定link-local地址
R1(config-if)#ipv6 address 2001:0410:0:1::/64 eui-64 使用eui-64格式自動生成IPV6地址的低64位
R1(config-if)#ipv6 unnumbered   讓本介面使用另一個介面的MAC地址生成源地址
R1(config-if)#ipv6 mtu 1500    配置介面的MTU值
R1(config-if)#ipv6 nd suppress-ra    關閉自動下發字首
R2(config-rtr)#no split-horizon 關閉水平分割 注意IPV6的水平分割是在程序下關閉,不是在介面下
show ipv6 interface e0    顯示IPV6介面的資訊,包括IPV6地址