李超
摘要:隨著IPv6網絡在各個校園網中的普及,越來越多的用戶通過隧道方式接入了IPv6網絡,但是傳統的GRE隧道需要具有公網IPv4地址才能使用,使得使用NAT設備后的用戶無法訪問IPv6網絡資源,本文介紹了Teredo草案,并進行了通過Teredo實現校園網私有地址用戶實現IPv6訪問的網絡部署研究。
關鍵詞:IPv6 over IPv4 NAT Teredo
1 Teredo概述
Teredo作為一項分配地址和自動隧道技術,能跨越 IPv4 Internet完成IPv6的單播連接。通過UDP數據包實現在傳統的IPv4網絡上傳遞IPv6數據包,是一種IPv4到IPv6的過渡技術。
Teredo通過在站點內的主機之間通過UDP數據包實現IPv6數據包隧道來解決現在NAT設備缺乏IPv6 over IPv4功能以及隧道穿越的配置問題。因為傳統的6to4 使用的是邊緣設備之間的隧道。這個時候主機之間隧道IPv4壓縮的IPv6數據包發送時,協議域的IPv4包頭設定為41。大多數的NAT只解析TCP或者UDP數據流,對其它協議的解析需要通過手動設置來實現或者是安裝專門負責處理解析的NAT編輯器。對包頭為41的協議的解析并不是所有NAT具備的通用功能,所以IPv4壓縮的IPv6通信傳輸不能通過一般的NAT。為了使IPv6數據傳輸能夠通過單個或多層NAT,IPv6數據包必須壓縮成IPv4下UDP格式的數據并且包含IPv4地址和UDP標頭。由于UDP數據普遍能夠被NAT解析所以能夠通過多層NAT設備。
Teredo作為一種IPv6/IPv4轉換技術,IPv6自動隧道能夠在處于單個或者多個IPv4 NAT設備后的主機之間實現。因為,借助IPv4 UDP數據格式Teredo進行發送。對于NAT來說,如果支持UDP端口解析,那么就能支持Teredo。來自Teredo主機的IPv6數據流就能夠通過NAT。
2 Teredo的組成
構成Teredo隧道需要由Teredo服務器、Teredo中繼器和Teredo客戶端三部分組成。
2.1 Teredo客戶端
所謂Teredo客戶端是指IPv6/IPv4節點,該節點支持Teredo隧道接口,通過隧道界面數據包可以傳送給其它的Teredo客戶端和IPv6 Internet上的其它節點。基于Teredo的IPv6地址用的地址前綴的基礎上,Teredo客戶端與Teredo服務器建立通信獲得配置,同時幫助與IPv6 Internet上其它Teredo客戶端和服務器之間建立通信。
2.2 Teredo服務器
所謂Teredo服務器通常是指IPv6/IPv4節點,該節點連接IPv4 Internet與IPv6 Internet,并且支持Teredo隧道接口。對于Teredo服務器來說,就是幫助Teredo客戶端的地址配置以及協助在Teredo客戶端之間或者客戶端與純IPv6主機之間與其他Teredo客戶端建立通信連接。
2.3 Teredo中繼
在IPv4網絡上,Teredo客戶端之間以及與純IPv6主機之間傳送數據包的IPv6/IPv4路由器構成所謂Teredo中繼。Teredo中繼和Teredo服務器協同工作,在Teredo客戶端之間以及與純IPv6主機之間幫助建立連接。在Teredo中繼中,借助UDP 3544端口對Teredo通信進行偵聽。
配置了公網地址的Teredo客戶端與IPv6主機之間的通信必須經過Teredo中繼。但是,當IPv6主機同時支持IPv6和IPv4,并且同時與IPv4 Internet和IPv6 Internet進行連接,那么,通過IPv4 Internet實現Teredo 客戶端與IPv6主機之間的通信,而不必經過IPv6 Internet和Teredo中繼。
3 Teredo支持的NAT類型
NAT(網絡地址轉換)作為一個IETF(Internet工程任務組)標準,在Internet上允許一個整體機構出現一個公用IP地址。
NAT有以下三種類型:
3.1 Cone(Cone)NAT
在NAT轉換表中,完全NAT是指存儲了內、外部地址和端口號,以及相互之間映射關系的NAT。如果NAT 轉換表開始工作,任何源地址和端口通往外部地址和端口的入站數據包都將被轉換。
3.2 受限NAT
在NAT轉換表中,受限NAT是指存儲了內部地址和端口號與外部地址和端口號之間的映射,無論是特定的源地址,還是特定源地址與端口號。如果從未知外部地址或端口到外部目標地址和端口的入站數據包與NAT轉換表相互吻合,那么就自動放棄此數據流。
3.3 對稱NAT
根據外部目標地址,將相同的內部地址和端口號映射到不同的外部地址和端口號的NAT就是對稱NAT。
由于Teredo中繼使用UDP 3544端口偵聽Teredo 通信,所以Teredo只能工作于Cone和受限NAT,不能工作于對稱NAT。
4 Teredo部署
在校園網與IPv6試驗床之間分別建立Teredo服務器與Teredo中繼,IPv6試驗床通過GRE隧道連入CERNET2國家網絡中心(如圖1)。
當私網IP用戶要訪問IPv6網絡上的一個IPv6主機時,通過Teredo 客戶端會發送一個通信初始化數據包, Teredo 客戶端會首先對Teredo中繼的IPv4地址和UDP端口號進行驗證。這時經由Teredo服務器,Teredo客戶端發送一個IPv6回應請求消息。收到IPv6回應請求消息后,Teredo服務器在IPv6網上把它發送給IPv6主機,若IPv6主機不在IPv6試驗床上,則通過GRE隧道封裝后訪問到外網CERNET2上。IPv6主機發送給Teredo客戶端的一個Teredo地址予以響應。根據IPv6的網絡路由結構,Teredo中繼接收到含有Teredo地址的數據包。Teredo中繼將IPv6回應請求進行重新封裝后,并直接發送給Teredo客戶端(也就是私網IP用戶)。
從IPv6主機發送初始化數據包至私網IP用戶時,也就是IPv6主機發送一個數據包至Teredo客戶端。結合IPv6網絡的結構,以Teredo地址打包的數據包被發送到Teredo中繼。在NAT之后,Teredo中繼對Teredo客戶端進行驗證。數據包與IPv4和UDP的標志通過Teredo中繼壓縮在一起,從IPv6主機發送到Teredo客戶端。Teredo客戶端根據這個數據包的接收回執,儲存對應于Teredo中繼的IPv4地址和UDP端口號,這樣,響應數據包被發送給Teredo中繼。Teredo中繼接收到它們,除去IPv4和UDP標志后,發送該IPv6數據包到IPv6主機。
5 結束語
綜上所述,由于UDP數據包對現有的NAT設備有較好的兼容性,通過Teredo草案可以較好的解決私網IPv4用戶通過UDP封裝后能較好的通過NAT設備,實行對IPv6資源的訪問問題。通過此方案也為校園網私網IP用戶能夠訪問IPv6網絡提供了一種較好的解決方法。
參考文獻:
[1]田鵬.IPv4網絡向IPv6網絡過渡中的隧道應用研究[J].吉林建筑工程學院學報,2010(10).
[2]W.Richard Stevens.TCP/IP詳解[M].機械工業出版社,2007(4).
[3]傅光軒,高鴻峰,盧朝暉.下一代互聯網核心通信協議——IPv6原理及應用[M].貴州教育出版社,2004.