在多次的演講與簡報中,發現大家還不是很熟悉 IPv6 的私有位址概念。一些很早開始接觸 IPv6 的人只知道 IPv6 site-local 位址就是 IPv6 版本的 RFC1918。殊不知,site-local 位址因為有太多的缺點已經被捨棄了。新版本的私有位址我們稱為 Unique Local Address。
為什麼要叫做 “Unique Local Address”呢?因為:一、這些位址只在本地(local/isolated)網路才是唯一。二、不用 “private” 是因為 private 一詞用來描述 routing 的範圍。
那麼 Unique Local Address (ULA) 和 IPv4 RFC1918 有什麼相同或是不一樣的地方?
就如同 RFC 1918 規定了 10.0.0.0/8、172.16.0.0/12、192.168.0.0/16 三個 private 網路 prefix , IANA 也規定了 ULA 的 prefix 編號:FC00::/7。
其位址格式如下:
若再加上 L-bit,那麼 ULA 就分成兩部分:FC00::/8 與 FD00::/8。這兩個 prefix 有著不同的使用方式。
IPv4 RFC 1918 強調的是,既然是 private address,任何人都可以隨意使用不需註冊,但這些網段不能進入 global internet routing。
FC00::/8 的 ULA 網路,當然也不能參與 global routing,但是,仍然需要註冊(上圖 “Global ID” 欄位內的數值),以維持獨特性 (unique)。由於是需要註冊,所以這類的網路位址是可以放在 global DNS 裡面的。雖然有各種註冊管理的方法被提出,到目前為止還沒有得到共識,因此這個 prefix 目前並沒有使用的意義。
相反的,FD00::/8 的 ULA 網路,”Global ID” 欄位中的數字可以任意設定,不需註冊。但是 RFC 中仍然建議使用亂數隨機的方法產生,以避免與其他網路衝突。也許有人會問,既然都是設定給私有網路,為什麼還要怕衝突?在目前 IPv4 環境中,時常聽到公司合併後位址衝突,而產生極大的困擾。因此如果能夠依循 RFC 所建議的方法,盡量產生不會衝突的網路號碼,就可以避免如此的困擾。
建議的演算法:trunc( SHA-1( local time . local EUI-64 ), 40bits)
如果需要使用這樣的方法來產生 prefix 的話,可以不用自己寫程式算,直接到 SixXS 的網頁輸入相關資料,就會產生專屬的 prefix。產生之後,還可以在上面註冊(非正式)以避免與別人衝突。
另外,因為不需要註冊,無法完全避免衝突,所以 FD00::/8 的網路,不能放在 Global DNS 中,當然也不能放入 global routing 中了!