目前網際網路大致是以IPv4為基礎的網路架構,為了能持續利用IPv4上既有的豐富資源,IPv6及IPv4網路必須藉由一些互通機制使二個世界的成員互相通訊,以分階段逐步完成IPv4->IPv6的移轉工作。目前常見的互通機制分為三類:
「雙堆疊
(Dual-Stack)」、「通道建立
(Tunneling)」及「轉換
(Translation)」。其中雙堆疊是讓使用者同時可以使用IPv4與IPv6網路的技術;通道建立是讓兩台IPv6主機透過現有IPv4網路基礎建設的通訊機制。而目前使用的網際網路協定(諸如:WWW、FTP、Email等)大多存在於IPv4的網路中,轉換技術可以讓IPv6的使用者存取IPv4網路上的資料,因此這個機制是在目前過渡時期不可或缺的一個技術。但是使用轉換技術將喪失IPv6的進階功能,因此在完全採用IPv6協定之後轉換技術也將功成身退。本文將介紹PC主機如何利用雙堆疊及通道建立的機制,在現有IPv4網路架構下存取IPv6網路,並簡要說明其原理並輔以範例。由於篇幅限制,本期先以目前最流行的個人電腦作業系統Windows
2000及XP為例,於下一期介紹在Linux類型作業系統中的作法。
一般用戶若想成為IPv6網路的一部分,首要條件是網路服務供應商(ISP)必須具備「IPv6能力」。什麼叫做「IPv6能力」,對一個ISP來說,需具備以下三點:
1.
提供用戶接取端的IPv6服務
2.
於核心網路部份運行IPv6
3.
與其他ISP進行IPv6訊務交換
國內陸續已有許多ISP取得IPv6位址
(請見附錄一),也有ISP已開始提供ADSL及專線用戶IPv6的接取服務(如HiNet),並與其他國內外ISP進行訊務交換。但我們可以不必急著提出IPv6服務的申請,先利用雙堆疊及通道建立的技術,在目前的IPv4網路環境下體驗IPv6。這種技術讓您在ISP不提供任何協助的情形下穿隧IPv4的網際網路連接到遠端的IPv6主機或網路,無論您上網的方式為何(ADSL、CABLE、撥接、或是專線)都可以使用。
雙堆疊
(Dual-Stack)
雙堆疊是在原有網路層(Network
Layer)上,增加一個IPv6堆疊,讓主機同時具備IPv4及IPv6通訊能力。IPv4及IPv6堆疊可以同時使用,也可以單獨使用其中一個。這種技術可使主機保持彈性,等到網路完全升級到IPv6時,只需移除IPv4堆疊即可。IPv4及IPv6堆疊都必須具備一個IP位址,取得位址的方式可為手動設定或是自動設定(如IPv4的DHCP或IPv6的Auto-configuration)
圖一.
雙堆疊架構
建立通道
(Tunneling)
我們知道網際網路上的通訊是靠路由器(Router)不斷地接力轉送封包來達成。IPv4網路中的雙堆疊節點若送出IPv6封包,此封包將永遠無法到達遠端IPv6網路中的另一個節點(如Web伺服器),這是因為IPv4路由器並不認識IPv6標頭及內含的IPv6位址,故無法將封包的傳遞出去。如果我們將IPv6封包封裝在IPv4標頭中(IPv4-Encapsulated
IPv6 Packet,如圖二),使IPv4路由器可以藉由判讀取IPv4標頭,進行封包的轉送,待抵達位於IPv4及IPv6網路之間的邊緣路由器(Border
Router)時,將IPv4標頭移除,以IPv6位址將IPv6封包轉送至IPv6網路中的目的地,上述問題便可迎刃而解。
圖二.
IPv6封包封裝(Encapsulate)於IPv4標頭
同樣的道理,二個IPv6網路中的節點,也可以利用通道的方式,穿隧IPv4網路而進行通訊(如圖二)。「通道」的概念就像山洞貫穿二地一樣,使IPv6的世界得以透過現有的IPv4網路相連。
圖二.
IPv6通道的建立
有了雙堆疊及建立通道的觀念後,我們以實驗來證明上述方法確實可行。以下測試使用的環境是非常簡單,您只要具備一條上網際網路的線路(種類、頻寬不拘)、有公用IP位址(動態或固定皆可)以及Windows
NT4.0以後作業系統即可。微軟對IPv6的發展頗為重視,NT4.0以後的作業系統(Windows
2000/XP/2003), 都具備雙堆疊的IPv6支援。
6to4
首先介紹連接IPv6網路最快速且容易的方法-6to4。它是一種自動建立通道(Automatic
Tunneling, 相對於手動建立通道Configured
Tunneling)的機制,而使用者不需要預先設定通道的目的地。無論使用何種通道建立方法,第一步必須先知道IPv6位址。6to4的IPv6位址是由合法的IPv4位址所組成,其格式及組成方式如下:
2002:[以十六進位表示的IPv4位址]::/48
範例:
IPv4位址
–211.74.131.157 (轉換至16進位為
d3.4a.83.9d)
IPv6位址首碼(prefix)
– 2002:d34a:839d::/48 (剩下80位元可供內部網路定址之用,如果您將16位元分配給區域網路,則最多可定義2^16=65536個網路,每一個網路中可以定義2^64部主機。)
Tip:
IPv6位址總長度為128位元,相較於IPv4的小數點與十進位(Dot-Decimal),IPv6是以4個十六位元碼共8組的冒號與十六進位(Colon-Hexadecimal)方法表示之。雙冒號出現時表示全部為0的縮寫
6to4主機之間的通訊
6to4的運作包含三個元件:6to4主機、6to4路由器、以及6to4中繼路由器。6to4主機即雙堆疊的終端節點,而6to4路由器負責將進行IPv4的標頭的封裝工作,使IPv6封包在IPv4網路上繞行無礙。抵達目的端之6to4路由器後,再將IPv4標頭移除,留下IPv6封包進繼續繞送到遠端目的地6to4主機(運作過程如圖三)。
圖三.
6to4主機之間的通訊
透過6to4路由器的協助,6to4主機可以跟網際網路上其他的6to4主機通訊。但由於必須仰賴IPv4位址於網際網路上進行繞送,所以通訊二端的6to4路由器至少需具備一個公用的IPv4位址。
6to4主機與IPv6網路之間的通訊
以上的通訊僅限於6to4主機之間,也就是IPv6位址首碼為2002:的IPv6位址。要使6to4主機與「純」IPv6網路(首碼為3ffe:的6Bone或2001:的其他IPv6網路)進行通訊,則必需透過6to4中繼路由器
(relay router) 的協助。6to4中繼路由器連接IPv4與純IPv6網路,它可以協助將6to4路由器送來的封包轉送到IPv6網路中(當然還必須先移除IPv4標頭),如圖四所示。
圖四.
6to4主機與IPv6網路之間的通訊
IPv6暨6to4實作:
[Windows XP/2003]
STEP 1.
啟動IPv6
當您啟動Windows
XP的IPv6功能時(於命令提示字元下輸入ipv6
install),系統其實已自動進行下列三個步驟,為您做好6to4的準備作業:
1.
在您的主機上自動產生6to4位址,並將位址指定給一個名為6to4通道虛擬介面(6to4
Tunneling Pseudo-Interface)上,其介面識別碼為3。(如主機上有多張具有公用IPv4位址的介面卡,將分別產生多個6to4位址)。
2.
自動建立2002::/16路由於6to4通道虛擬介面。此舉將所有6to4的訊務交由6to4通道虛擬介面轉送,並在轉送前加上IPv4標頭。(當6to4主機具有合法IPv4位址的時候,它可以同時扮演6to4路由器。)
3.
自動進行6to4.ipv6.microsoft.com的DNS查詢以取得微軟提供之6to4中繼路由器的IPv4位址。
STEP 2. 6to4主機之間的通訊
大功告成後,我們以ping
(在XP/2003中您可以使用ping或ping6,但在Windows
2000則必須使用後者)來試試是否能連線到筆者位於辦公室的另外一部6to4主機。
筆者家中使用的ISP為Seednet,辦公室的ISP為HiNet,可見6to4主機可以穿越不同的IPv4網路互相通訊。
STEP 3. 6to4主機與IPv6網路之間的通訊
再來試試主機能否與IPv6網路連結。請開啟您的流覽器,進入這個Kame
Project網站www.kame.net。如果您看到的是一隻搖頭晃腦的烏龜(Kame),就表示您已成功的以IPv6連線到該網站。
STEP 4.
觀察路由
現在我們利用追蹤路由指令(在XP/2003中您可以使用tracert或tracert6,在Windows
2000則必須使用後者)觀察封包的傳送路徑。可以看到封包是先送到微軟的中繼路由器(2002:開頭),再轉送到6Bone網路(3ffe:開頭),最後轉到IPv6網路(2001:),抵達www.kame.net。
Tip:
6Bone是全球第一個國際性IPv6實驗網路,於1996年開始運作。詳細資料請參閱6Bone網站:
www.6bone.net。
STEP 5.
指定6to4中繼路由器
雖然XP貼心的為我們完成了6to4中繼路由器的設定,但並無法因此保證您能夠連接上全球所有IPv6網路,端看6to4.ipv6.microsoft.com這部預設中繼路由器所連接的IPv6網路及該網路與其他網路的路由交換設定。如果您想連接的某個IPv6位址不通,可以將XP預設的6to4中繼路由器更換掉,也許可以達到目的,附錄二提供了一些公用的6to4中繼路由器列表。例如我們選定日本KDDI提供的中繼路由器,則可利用netsh指令進行更改。(在Windows2000中請使用6to4cfg
-R kddilab.6to4.jp)
更改完成後再一次用tracert觀察到www.kame.net的傳送路徑,發現比原先少了四個跳躍點(Hop)。這是因為該主機所在的WIDE
Project網路與新的中繼路由器kddilab.6to4.jp非常接近的緣故。
[Windows 2000]
STEP 1.
啟動IPv6
Windows 2000系統的使用者必須先安裝IPv6套裝工具,才可以使用IPv6。IPv6套裝工具可於微軟網站取得,位置在http://msdn.microsoft.com/downloads/sdks/platform/tpipv6。
須注意您的Windows
2000版本需為Service
Pack 1以上。要確定目前電腦中的Service
Pack版本編號,請在「我的電腦」圖示上按滑鼠「右鍵」並選取「內容」。
下載後請執行該檔案,並依預設值在\ipv6kit下進行解壓縮。解壓縮完成後請進入命令提示列視窗,並於\ipv6kit下輸入setup
–x,以進一步解開我們想要編輯的檔案hotfix.inf。依據不同的Service
Pack版本,請修改檔案中[Version]區段的NTServicePackVersion參數。
Service Pack 1 |
NTServicePackVersion=256 |
Service Pack 2 |
NTServicePackVersion=256
改成
512 |
Service Pack 3 |
NTServicePackVersion=256
改成
768 |
修改完畢後請儲存檔案並執行hotfix.exe,系統將會要求重新開機。請在開機後開啟您的網路連線,並按滑鼠「右鍵」進入「內容」更改選單。選擇「安裝」新的「通訊協定」,按下「新增」選擇「由磁片安裝」,輸入「\ipv6kit」為檔案複製來源。按下確定,選擇「Microsoft
IPv6 Protocol」,完成新通訊協定的安裝。更詳細的安裝說明可參考HiNet
IPv6網站:
http://www.ipv6.hinet.net。
附錄一.
已取得IPv6位址之國內ISP及單位
(資料來源http://www.twnic.net.tw/ipstats/asiaipv6.php)
Domain Name/IP
位址 |
地點 |
備註 |
2002:c058:6301::
192.88.99.1 |
自動抓取最近的6to4中繼路由器 |
任一傳播(Anycast)
6to4中繼路由器位址
(請參考
RFC-3068) |
6to4.ipv6.microsoft.com |
美西 |
對外開放 |
6to4.kfu.com |
美西 |
對外開放 |
ipv6-lab-gw.cisco.com |
美西 |
需向Cisco申請 |
6to4.ipv6.aarnet.net.au |
澳洲 |
僅對澳洲及鄰近地區開放 |
kddilab.6to4.jp |
日本 |
對外開放 |
6to4.ipv6.ascc.net |
台灣 |
對外開放
/
實驗性 |
6to4.ipng.unix.za.net |
南非 |
對外開放 |
6to4.ipv6.bt.com |
英國 |
對外開放 |
skbys-00-00.6to4.xs26.net |
斯洛伐克 |
對外開放 |
6to4.ipv6.uni-leipzig.de |
德國 |
對外開放
/
實驗性 |
6to4.ipv6.fh-regensburg.de |
德國 |
對外開放
/
實驗性 |
6to4.ipng.nl |
荷蘭 |
對外開放 |
附錄二.
公開之6to4中繼路由器列表
(資料來源
http://www.kfu.com/~nsayer/6to4/,須以Netscape流覽)
TWNIC IP組 |