Share via


The Cable Guy使用 ISATAP 將內部網路移轉到 IPv6

Joseph Davies

本文是根據 Windows Server 2008 的搶鮮版所撰寫。本文包含的所有資訊均有可能變更。

對於使用「網際網路通訊協定第 6 版」(IPv6) 有個常見的迷思,就是要使用它,您必須部署原生 IPv6 定址和路由,而這需要詳細分析 IPv6 定址配置、路由器更新和設定,以及首展排程。雖然 IPv6 連線最終必須滿足這些

條件,但您可以使用「內部網站自動通道定址通訊協定」(ISATAP) 來輕鬆部署通道 IPv6 連線。有了通道 IPv6 連線能力,支援 ISATAP 的主機就能使用以 IPv4 標頭封裝起來的 IPv6 流量進行通訊 ([IPv4 通訊協定] 欄位設為 41)。ISATAP 流量可以周遊僅 IPv4 的內部網路,因此您不必等待原生 IPv6 基礎結構,便可立即開始測試具備 IPv6 能力的應用程式。

ISATAP 是一項以 RFC 4214 定義的位址指派和自動通道技術,可在僅 IPv4 上的 IPv6/IPv4 主機之間提供單點傳送 IPv6 連線。ISATAP 主機使用指派了 ISATAP 位址的邏輯通道介面,並採用 UnicastPrefix:0:5EFE:w.x.y.z (其中的 w.x.y.z 是指派給 ISATAP 主機的私用 IPv4 位址) 或 UnicastPrefix:200:5EFE:w.x.y.z (其中的 w.x. y.z 是指派給 ISATAP 主機的公用 IPv4 位址) 這兩種形式。UnicastPrefix 是任何一種 64 位元單點傳送位址首碼,包括 Link-local、全域和唯一本機首碼。舉例來說,ISATAP 位址可以是 2001:DB8::98CA:200:131.107.28.9 及 2001:DB8::98CA:0:10.91.211.17。

使用 ISATAP 將內部網路移轉到 IPv6

ISATAP 部署包含一或多個邏輯 ISATAP 子網路,這些子網路是指派給 64 位元 IPv6 子網路首碼的僅 IPv4 網路。在邏輯 ISATAP 子網路上有 ISATAP 主機和 ISATAP 路由器。ISATAP 主機使用 ISATAP 通道介面來封裝 IPv6 流量。此流量可以直接傳送到位於相同邏輯 ISATAP 子網路上的其他 ISATAP 主機。為了到達位於其他 ISATAP 子網路或原生 IPv6 子網路上的目的地,此流量會傳送到 ISATAP 路由器。ISATAP 路由器是一種 IPv6 路由器,它會向 ISATAP 主機通告子網路首碼,並在 ISATAP 主機與其他 IPv6 子網路上的主機之間轉送 IPv6 流量。[圖 1] 顯示一個經過簡化的內部網路上的 ISATAP 元件。

[圖 1] 內部網路上僅 IPv4 的部份和具備 IPv6 能力的部分

[圖 1]** 內部網路上僅 IPv4 的部份和具備 IPv6 能力的部分 **(按影像可放大)

ISATAP 可讓您透過三階段在內部網路上部署原生 IPv6 定址和路由功能。

第 1 階段:僅 IPv4 的內部網路 在此階段中,您的整個內部網路可能是單一的邏輯 ISATAP 子網路。[圖 2] 中的範例顯示具有 ISATAP 路由器的僅 IPv4 內部網路,它只會向 ISATAP 主機通告全域或唯一本機位址首碼。

[圖 2] 僅 IPv4 的內部網路

[圖 2]** 僅 IPv4 的內部網路 **(按影像可放大)

第 2 階段:內部網路上僅 IPv4 的部份和具備 IPv6 能力的部分 在此中間階段中,內部網路包含僅 IPv4 的部份 (邏輯 ISATAP 子網路) 和具備 IPv6 能力的部份。內部網路上具備 IPv6 能力的部分可支援 IPv4,並且已更新為支援原生 IPv6 定址和路由功能。您已在 [圖 1] 中看過此設定。

第 3 階段:具備 IPv6 能力的內部網路 在這個最後階段中,整個內部網路同時支援 IPv4 和原生 IPv6 定址與路由功能。請注意,此時已不再需要 ISATAP。[圖 3] 顯示範例。

[圖 3] 具備 IPv6 能力的內部網路

[圖 3]** 具備 IPv6 能力的內部網路 **(按影像可放大)

藉由 ISATAP,從僅 IPv4 轉換到具備 IPv6 能力的內部網路的前兩個階段中,您可在主機與應用程式之間進行 IPv6 連線。

Windows Server 2008 與 Windows Vista

用於 Windows Server® 2008 和 Windows Vista® 的 IPv6 通訊協定,支援 ISATAP 同時做為 ISATAP 主機與 ISATAP 路由器。在具有不同 DNS 尾碼的電腦上所安裝的各個 LAN 介面都有個別的 ISATAP 通道介面。 例如,如果執行 Windows Vista 的電腦具有兩個 LAN 介面,而且都連接到相同的內部網路,並指派有相同的 DNS 尾碼,便只會有一個 ISATAP 通道介面。如果這兩個 LAN 介面連接到兩個不同的網路且具有不同的 DNS 尾碼,便會產生兩個 ISATAP 通道介面。針對執行 Windows Server 2008 或 Windows Vista SP1 的電腦,除非可解析名稱「ISATAP」,否則 ISATAP 通道介面會處於媒體中斷連線狀態。

在預設情況下,用於未安裝 Service Pack 的 Windows Vista 的 IPv6 會在 ISATAP 通道介面上,針對已指派給對應 LAN 介面的 IPv4 位址自動設定 Link-local ISATAP 位址 (FE80::5EFE:w.x.y.z 或 FE80::200:5EFE:w.x.y.z)。

用於 Windows Server 2008 和 Windows Vista SP1 的 IPv6 通訊協定只有在能夠解析名稱「ISATAP」時,才會在 ISATAP 通道介面上設定 Link-local ISATAP 位址。

為了接收 ISATAP 路由器的路由器通告訊息,ISATAP 主機必須向 ISATAP 路由器傳送路由器請求訊息。在 Ethernet 子網路上,原生 IPv6 主機會傳送多點傳送路由器請求訊息,接著子網路上的路由器會以路由器通告訊息進行回應。由於 ISATAP 不使用 IPv4 多點傳送流量,也不需要具備 IPv4 多點傳送能力的基礎結構,因此 ISATAP 主機必須單點傳送路由器請求訊息到 ISATAP 路由器。

為了單點傳送路由器請求訊息到 ISATAP 路由器,ISATAP 主機首先必須確認位於邏輯 ISATAP 子網路上的 ISATAP 路由器介面的單點傳送 IPv4 位址。如果是用於 Windows Server 2008 和 Windows Vista 的 IPv6 通訊協定,ISATAP 主機會將「ISATAP」主機名稱順利解析成 IPv4 位址,或藉由 netsh interface isatap set router 命令來取得 ISATAP 路由器的單點傳送 IPv4 位址。

移轉內部網路:第 1 階段

在移轉至 IPv6 的第 1 階段中,為了在內部網路上部署 ISATAP,您必須執行下列步驟。

確定 ISATAP 子網路首碼 您必須確定 64 位元子網路首碼,以便指派給對應至內部網路的邏輯 ISATAP 子網路。您可以從 ISP 或網際網路登錄取得 48 位元首碼,也可以衍生自己的 48 位元唯一本機首碼 (請至下列網址參閱 RFC 4193:tools.ietf.org/html/rfc4193)。

從 48 位元首碼中,為邏輯 ISATAP 子網路選擇 16 位元子網路識別碼。48 位元首碼與 16 位元子網路識別碼的組合便成為 64 位元 ISATAP 子網路首碼。舉例來說,48 位元唯一本機首碼 FD8A:219C:052A::/48 和子網路識別碼 1 會形成 64 位元子網路首碼 FD8A:219C:052A:1::/64。

指定 ISATAP 路由器電腦 決定要當做 ISATAP 路由器的電腦。雖然許多商用路由器都支援 ISATAP 路由器功能,但我在此提供的內容是專指執行 Windows Server 2008 的電腦。

在第 1 階段中,ISATAP 路由器電腦不需要多個 LAN 介面,也無須連線到內部網路中具備 IPv6 能力的部份;不過,您必須先選定一台電腦,以便之後使用其他 LAN 介面進行更新,以連線到內部網路中具備 IPv6 能力的部分。

設定 ISATAP 路由器電腦 在 ISATAP 路由器電腦上,發出下列命令可讓 ISATAP 路由器電腦上的 ISATAP 通道介面處於媒體連線狀態:

netsh interface isatap set router IPv4Address 

IPv4Address 是一個 IPv4 位址,這個位址會指派給連接到邏輯 ISATAP 子網路的 ISATAP 路由器電腦的 LAN 介面。

接著根據以下命令的輸出,確定 ISATAP 通道介面的名稱或介面索引,此 ISATAP 通道介面會對應到 ISATAP 路由器電腦 (已連接到邏輯 ISATAP 子網路) 的 LAN 介面:

netsh interface ipv6 show interfaces

接下來,使用這個命令來啟用 ISATAP 介面上的通告:

netsh interface ipv6 set interface ISATAPInterfaceNameOrIndex advertise=enabled

ISATAPInterfaceNameOrIndex 是 ISATAP 通道介面的名稱或介面索引。

然後使用此命令來設定 ISATAP 路由器電腦,以便向 ISATAP 主機通告 ISATAP 子網路首碼:

netsh interface ipv6 add route ISATAPSubnetPrefix ISATAPInterfaceNameOrIndex publish=yes

ISATAPSubnetPrefix 是確定的 ISATAP 子網路首碼

設定 DNS 在您的 DNS 中,將名稱 ISATAP 的位址 (A) 記錄新增到適當的網域中,好讓內部網路上的 ISATAP 主機能夠成功解析名稱「ISATAP」。譬如說,如果內部網路主機使用 contoso.com DNS 尾碼,您現在必須針對含有 IPv4 位址 (在僅 IPv4 內部網路上指派給 ISATAP 路由器的 LAN 介面) 的名稱 isatap.contoso.com,將 A 記錄新增到 contoso.com 網域。

如果 DNS 伺服器執行的是 Windows Server 2008,則使用 DNS 伺服器上的登錄編輯器 (regedit.exe),從 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\DNS\Parameters\GlobalQueryBlockList 登錄值中移除 ISATAP 項目。

測試 ISATAP 主機 從內部網路的 ISATAP 主機中,使用 Ipconfig 工具來檢視指派的位址。ISATAP 主機應該具有符合以下格式的位址:ISATAPSubnetPrefix::5EFE:w.x.y.z 或 ISATAPSubnetPrefix::200:5EFE:w.x.y.z。例如,如果您的 ISATAP 子網路首碼是 FD8A:219C:052A:1::/64,而 ISATAP 主機具有 IPv4 位址 10.1.31.97,則 ISATAR 主機應該有一個指派給其 ISATAP 通道介面的位址 FD8A:219C:052A:1::5FE:10.1.31.97。

如果 ISATAP 沒有任何 ISATAP 位址是以 ISATAP 子網路首碼為基礎,請確認主機可以解析名稱「ISATAP」。若不能解析,請確認已經在適當的網域中建立 A 記錄,並請針對執行 Windows Server 2008 的 DNS 伺服器,檢查 GlobalQueryBlockList 登錄值已修改為移除 ISATAP 項目。如果可以解析名稱,請檢查 ISATAP 路由器電腦是否已正確設定。如果設定正確,請確認內部網路上的路由器允許轉送 IPv4 通訊協定 41 流量。

當 ISATAP 主機能夠順利地使用以 ISATAP 子網路首碼為基礎的位址自我設定時,這些主機會在 DNS 中將這些 ISATAP 位址登錄為 AAAA 記錄,並開始使用這些位址進行以 IPv6 為主的連線。

移轉內部網路:第 2 階段

在移轉至 IPv6 的第 2 階段中,您必須修改 ISATAP 路由器設定,以便在內部網路的僅 IPv4 與具備 IPv6 能力部分之間執行轉送作業。

請在 ISATAP 路由器電腦上,發出下列命令:

netsh interface ipv6 show interfaces

從以上的命令輸出中,判定已連接到內部網路中具備 IPv6 能力的部分與 ISATAP 通道介面的 LAN 介面的名稱或介面索引。

使用此命令來啟用 ISATAP 介面上的轉送功能:

netsh interface ipv6 set interface ISATAPInterfaceNameOrIndex forwarding=enabled

使用此命令來啟用 LAN 介面上的轉送功能:

netsh interface ipv6 set interface LANInterfaceNameOrIndex forwarding=enabled

LAN 介面的 LANInterfaceNameOrIndexisthe 名稱或介面索引。

使用下列命令將預設路由新增到 ISATAP 路由器:

netsh interface ipv6 add route ::/0 LANInterfaceNameOrIndex NextHopAddress publish=yes

NextHopAddress 是相鄰原生 IPv6 路由器的 IPv6 位址,此路由器位於內部網路上具備 IPv6 能力的部分。

重要的是,為了能夠從內部網路上具備 IPv6 能力的部份連接邏輯 ISATAP 子網路,您必須為原生 IPv6 路由器設定 ISATAP 子網路首碼的路由,以指回 ISATAP 路由器電腦。

若要針對內部網路上具備 IPv6 能力部分的電腦選擇性地停用 ISATAP,請操控 DNS 中名稱 ISATAP 的 A 記錄,如此一來,內部網路上具備 IPv6 能力部分的電腦就無法解析名稱 ISATAP。

另一種方法是建立 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\tcpip6\Parameters\DisabledComponents 登錄值,並將之設為 0x4 (DWORD 類型)。

移轉內部網路:第 3 階段

在第 3 階段中,整個內部網路都已具備 IPv6 能力,您需要移除 DNS 中的 ISATAP 部署,並重新設定 ISATAP 路由器電腦。針對 DNS,移除名稱 ISATAP 的所有 A 記錄。這樣可防止任何主機確知 ISATAP 路由器的 IPv4 位址。

針對 ISATAP 路由器電腦,執行下列命令:

netsh interface isatap set router default 

此命令會將 ISATAP 元件重設為預設狀態。

從這個命令的輸出中確定 ISATAP 通道介面的名稱或介面索引:

netsh interface ipv6 show interfaces

使用此命令來停用 ISATAP 介面上的轉送和通告:

netsh interface ipv6 set interface ISATAPInterfaceNameOrIndex forwarding=disabled advertise=disabled

使用此命令從 ISATAP 路由器電腦中移除 ISATAP 子網路首碼路由:

netsh interface ipv6 delete route ISATAPSubnetPrefix ISATAPInterfaceNameOrIndex

ISATAPSubnetPrefix 是 ISATAP 子網路首碼。

如需 ISATAP 部署的詳細資訊,包括有關備援 ISATAP 路由器與防火牆考量等詳細資訊,請參閱《內部網站自動通道定址通訊協定部署指南》(英文),網址是 go.microsoft.com/fwlink/?LinkId=106926

Joseph Davies 是 Microsoft 的技術文件作家,從 1992 年開始教導和編寫 Windows 網路方面的主題。他出過八本 Microsoft Press 的書,同時也是每個月線上 TechNet Cable Guy 專欄的作家。若想閱讀更多《The Cable Guy》專欄,請參閱 microsoft.com/technet/community/columns/cableguy/about.mspx

© 2008 Microsoft Corporation and CMP Media, LLC. 保留所有權利;未經允許,嚴禁部分或全部複製.