Teredo隧道

Teredo是一個IPv6轉換機制，它可為執行在IPv4網際網路但沒有IPv6網路原生連線的支援IPv6的主機提供完全的連通性。與其他的類似協議不同，它可以在網路地址轉換後完成功能。Teredo使用跨平臺隧道協議提供IPv6連通性，將IPv6資料包封裝在IPv4使用者資料報協議接收資料包，解開它們的封裝，以及傳遞它們。Teredo是一種臨時措施。在長遠的未來，所有IPv6主機都應該使用原生的IPv6連線。Teredo應在原生IPv6連線可用時被停用。在微軟開發了Teredo，並且網際網路工程任務組將其標準化為RFC 4380。Teredo伺服器監聽UDP埠3544。目的.6to4，最常用的IPv6透過IPv4的隧道協議，但它需要隧道端點有一個公網IPv4地址。然而，許多主機目前透過一個或多個NAT裝置來連線IPv4網際網路，原因之一是IPv4位址枯竭。在這種情況下，只有NAT裝置有IPv4地址，6to4隧道端點必須在NAT裝置上被實現。出於技術或經濟原因，目前已被部署的許多NAT裝置無法升級為實現6to4。Teredo透過在UDP/IPv4資料包內封裝IPv6資料包來緩解這個問題，大多數NAT可以正確轉發此種流量。這樣一來，NAT後的IPv6感知主機可以作為Teredo隧道端點，即使它沒有專用的公網IPv4地址。實際上，一個實現Teredo的主機可以在沒有本地網路環境合作的條件下獲得IPv6連通性。從長遠來看，所有IPv6主機都應該使用原生IPv6連線。臨時性的Teredo協議包含“落幕程式”規定：Teredo實現應該提供一個方法在當IPv6成熟並且使用一個非脆弱的連通機制時停止Teredo連線的使用。根據IETF89，微軟計劃在2014年上半年停用他們為Windows準備的Teredo伺服器，並鼓勵停用公共執行的Teredo中繼。有關完整解釋見的Teredo概述。概述.Teredo協議執行幾種功能：節點型別.Teredo定義了幾種不同型別的節點：一個在NAT後具有IPv4網際網路連線的主機，並且使用Teredo隧道協議來訪問IPv6網際網路。Teredo客戶端被以Teredo字首 (codice_1) 為開頭分配一個IPv6地址。一個眾所周知的主機，用於初始化Teredo隧道的配置。Teredo伺服器從不轉發任何客戶端的流量#重定向Teredo隧道的遠端。Teredo中繼必須代表它服務的Teredo客戶端轉發所有資料，但Teredo客戶端直接到Teredo客戶端的交換除外。因此，一箇中繼需要大量的頻寬，並且只能同時支援有限數量的客戶端。每個Teredo中繼服務一定範圍內的IPv6主機；它在任何Teredo客戶端與任何所述範圍內的主機間轉發流量。此種Teredo中繼只服務於執行它的主機。因此，它沒有特別的頻寬或路由要求。具有特定主機中繼的計算機使用Teredo與其他Teredo客戶端通訊，但繼續用其主IPv6網路提供與其他IPv6網際網路的連線。IPv6地址.每個Teredo客戶端被分配一個公共IPv6地址，其構造如下："Teredo IPv6地址表"舉例來說，IPv6地址2001:0000:4136:e378:8000:63bf:3fff:fdd2就是透過一個Teredo中繼："Teredo IPv6示例表"有關現有Teredo伺服器的列表，見的列表。伺服器.Teredo客戶端使用Teredo伺服器透過簡化的類STUN“鑑別流程”檢測客戶端是否在任何型別的NAT後面。Teredo客戶端也透過定期傳送UDP資料包來維護其NAT上對其Teredo伺服器的繫結，這樣確保伺服器始終可以聯絡到其客戶端——正常工作的必要條件。如果一個Teredo中繼。然後伺服器轉發“氣泡”包到客戶端，使Teredo客戶端軟體瞭解它必須打孔到Teredo中繼。Teredo伺服器也可以將Teredo客戶端的ICMPv6包傳輸到IPv6網際網路。在實踐中，當一個Teredo客戶端想聯絡一個原生IPv6節點，它必須定位相應的Teredo中繼——即公網IPv4和UDP埠號，以傳送封裝的IPv6包。為做到此目的，客戶端製作一個傳往IPv6節點的ICMPv6 Echo請求，並經它配置的Teredo伺服器傳送。Teredo伺服器解開封裝並將ping傳往IPv6網際網路，使ping最終抵達IPv6節點。IPv6節點應該在收到ICMPv6 Echo回覆後按照RFC 2460應答。這個應答包首先被路由到最近的Teredo中繼，然後逐步抵達與其聯絡的Teredo客戶端。維護一個Teredo伺服器所需的頻寬很少，因為它們不參與IPv6資料包的實際傳送與接收。另外，它不涉及對網際網路路由協議的任何訪問。Teredo伺服器的必備條件僅有：公共Teredo伺服器：中繼.Teredo中繼可能需要大量的網路頻寬。另外，它必須輸出到其他IPv6主機。這樣之後，Teredo中繼就能收到其他定址到Teredo客戶端的IPv6主機的流量，然後透過UDP/IPv4轉發它們。與此對應，它會收到其他透過UDP/IPv4定址到IPv6主機的Teredo客戶端發來的資料包，將這些資料包注入到IPv6網路。在實踐中，網路管理員可以設定一個只服務於他們公司或校園的私有Teredo中繼。這可以為他們的IPv6網路與任何Teredo客戶端提供一個短途路徑。但是，在超過單個網路的規模上設定一個Teredo中繼需要輸出BGP IPv6路由到其他自治系統的能力。不同於6to4，連線中的兩個端點可以使用不同的中繼，在原生IPv6主機與一個Teredo客戶端之間的流量使用同一個Teredo中繼，即最靠近原生IPv6主機網路側的那個。Teredo客戶端不能自己定位一箇中繼，因為它不能自己傳送IPv6資料包。如果它需要啟動與一個原生IPv6主機的連線，它首先透過Teredo伺服器使用客戶端的Teredo IPv6地址傳送一個數據包到原生IPv6主機。原生IPv6主機之後照常響應客戶端的Teredo IPv6地址，這能使資料包最終找到Teredo中繼，從而啟動與客戶端的連線。Teredo客戶端和原生IPv6主角之後使用中繼進行通訊，只要它們需要。此設計意味著Teredo伺服器與客戶端都不需要知道任何Teredo中繼的IPv4地址。它們透過全域性IPv6路由表自動找到合適的路由，因為所有Teredo中繼都宣告網路2001::/32。有關Teredo和BGP上的近實時資訊見2006年3月30日，義大利ISP ITGate是第一個在其IPv6網際網路上宣告到2001::/32的路由的AS，這使RFC 4380相容的Teredo實現有望充分可用。但截至2007年2月16日，它已不再有效。2009年第一季度，IPv6骨幹Hurricane Electric使用任播技術啟用了14個Teredo中繼並全域性性宣告2001::/32。這些中繼分別位於西雅圖、弗裡蒙特、洛杉磯、芝加哥、達拉斯、多倫多、紐約、Ashburn、邁阿密、倫敦、巴黎、阿姆斯特丹、法蘭克福和香港。預計大型網路運營商將維護Teredo中繼。與6to4一樣，仍不清楚如果大部分網際網路主機透過基於IPv4的Teredo使用IPv6，Teredo將會如何擴充套件。雖然微軟自發布用於Windows XP的Teredo偽隧道以來執行有一組Teredo伺服器，但他們從未為IPv6網際網路整體提供Teredo中繼服務。限制.Teredo不相容所有NAT裝置。根據RFC 3489的術語，它支援全錐、受限和埠受限的NAT裝置，但不支援對稱NAT。最初的Shipworm規範製作的最終版Teredo協議也支援對稱NAT，但最終由於安全考慮而放棄。臺灣的國立交通大學之後提出了SymTeredo，這增強了原有的Teredo協議以支援對稱NAT，並且微軟和Miredo的實現實施了某些的未規定、非標準的擴充套件以改進對對稱NAT的支援。但是在對稱NAT後的Teredo客戶端與在對稱NAT或埠限制NAT後的Teredo客戶端的連通似乎仍然不可能。#重定向另外，Teredo假設兩個客戶端交換封裝的IPv6資料包時，他們使用的對映/外部的UDP埠號與他們聯絡Teredo伺服器#重定向Teredo只能為每個隧道端點提供一個IPv6地址。因此，不能使用一個Teredo隧道連線多個主機，這不同於6to4和某些點對點IPv6隧道。所有Teredo客戶端與IPv6網際網路的可用頻寬都受到Teredo中繼可用資源的限制，這與6to4等中繼沒什麼區別。備選方案.6to4需要一個公網IPv4地址，但為每個隧道端點提供一個較大的48位IPv6字首，並有較低的封裝頭。點對點隧道可能比Teredo更可靠和負責，並且提供永久IPv6地址通常不依賴於隧道端點的IPv4地址。部分點對點隧道中間人可以簡化使用點對點隧道的流程。安全事項.暴露.Teredo分配全域性可路由的IPv6地址使NAT裝置後的網路主機增加了攻擊面，因為如不這樣做則無法被網際網路訪問。因為這樣做，Teredo潛在地將任何啟用IPv6並開放埠到外部的應用程式暴露在外。Teredo隧道的封裝可以隱蔽IPv6資料流量的內容，防止資料包檢測乃至部分IPv4惡意軟體的傳播。US CERT已發表一篇論文，論述使用IPv6隧道的惡意軟體風險。Teredo也將IPv6棧和隧道軟體暴露給攻擊者，如果它們被發現存在任何遠端可利用的漏洞，這可能變得危險。微軟IPv6棧有一個“保護等級”套接字選項。這允許應用程式指定它們是否願意處理出自Teredo隧道的流量，任何非Teredo隧道的流量，或者只接收本地內部網的流量。Teredo協議也在資料包中封裝有關隧道端點的詳細資訊。防火牆、過濾和阻止.為使Teredo偽隧道正常工作，發出的UDP資料包不能被過濾。此外，對這些資料包的回覆也不能被過濾。這取決於NAT的典型設定及其有狀態防火牆的功能。如果外發的IPv4 UDP流量被攔截，Teredo隧道軟體會檢測到致命錯誤並停止。另外，如果攔截外發值3544埠的UDP流量可能會干擾Teredo的活動。透過路由環路DoS.在近期，一種新的使用Teredo隧道利用路由環路製造拒絕服務攻擊已被發現。這相對容易預防。預設啟用.微軟作業系統的當前版本已啟用IPv6過渡技術，包括預設啟用Teredo。如果IPv6未在公司網路上實現，可以透過命令列提示符、登錄檔編輯或使用組策略禁用這些過渡技術。由於微軟預設啟用，如果需要避免IPv6啟用狀態下的新安全威脅，管理員需要明確配置Windows作業系統中的和相關過渡技術。實現.Teredo目前有多種實現可用：名稱由來.Teredo隧道協議的最初暱稱為shipworm。該想法來自該協議將穿過NAT裝置，很像船蟲穿過木頭上的隧道。Shipworms是造成很多木殼船損壞的成因，但Christian Huitema在原始草案中指出：“該種動物只在相對乾淨且未受汙染的水中生存，它最近在幾個北美港口的復出也證明這與清潔相關。與此類似，透過穿透NAT，該服務將有助於達到新的網際網路透明度。”Christian Huitema後將名稱改為Teredo以避免將它與電腦蠕蟲混淆。Teredo navalis是一種著名的船蟲種類的拉丁名。