劉本倉,鄒家寧
(河南理工大學計算機科學與技術學院,河南焦作454003)
基于透傳的IPv6個人區域網無線網關設計
劉本倉,鄒家寧
(河南理工大學計算機科學與技術學院,河南焦作454003)
主干網絡設備和操作系統支持IPv6協議的請況下,大量的個人區域網網關僅使用IPv4地址轉換的方式連接互聯網,不能支持IPv6,提出一種數據鏈路層透傳的數據包處理方式,使IPv6數據直接通過網關,減少地址轉換或者中間代理的過程,實現內部網直接接入IPv6網絡。經分析和實驗,該設計方法在不影響IPv4使用的情況下使個人區域網內部設備順利接入IPv6網絡。
IPv6;數據鏈路層;個人區域網;無線網關
個人區域網[1]是用于小范圍的內部網絡,用來互連個人網絡設備,并使用網關連接互聯網。個人區域網通常使用私有IP地址,對外隱藏內部結構,主要原因是IPv4地址已經嚴重不足。IPv4地址已經在2011年分配完畢,同時大量的智能終端、智能家電和移動設備出現,這大大增加了對IPv6的需求。目前,主流網絡設備和操作系統已經支持IPv6協議,應用層軟件也逐漸兼容IPv6協議。在高校校園網中IPv6協議應用最為廣泛,數據流量已經接近IPv4的數量級別。由于IPv6和IPv4在數據包格式上并不兼容,兩種數據不能直接互操作,這嚴重限制了個人區域網對IPv6的訪問。
在IPv6應用的過渡階段[2],有多種解決互通問題的方案,主要有如下幾種方式:1)NAT-PT地址轉換; 2)隧道方式[3];3)雙協議棧。
在個人區域網邊界,通常使用無線網關來連接互聯網,無線網關運行網絡地址轉換協議,把內部私有IP地址轉換成互聯網地址。同時無線網關也屏蔽了網絡內部結構,隱藏內部主機IP地址,這就造成內部主機無法與外界對等通信。IPv6數據包也不能被網關識別,無法進入網絡內部,形成IPv6孤島。大量個人區域網的出現,阻礙了IPv6數據的聯通性,形成IPv6障礙的最后環節。本文主要討論個人區域網接入外部雙協議棧網絡的實現方式。
目前針對個人區域網網關接入IPv6的解決方案,主要分為地址轉換和代理。
1)地址轉換方式類似NAT-PT,在網關上分別運行兩個協議棧的地址轉換進程,IPv4地址繼續使用原有方式。網關對內作為一個IPv6路由器,為內部網絡分配地址,進行數據的收發;對外作為一個IPv6終端,發現外部IPv6網絡,自動配置外部IPv6地址,在內外網之間進行IP地址的一一對應替換。相比IPv6/IPv4地址轉換省去了端口復用和有狀態轉換,效率大大提升。依然沒有解決IP地址的對等問題和應用層數據轉換問題。
2)代理方式是在內部運行一個 IPv6協議,作為IPv6路由器,對內發布IPv6地址前綴,與第一種方式不同的是需要在路由器上配置與外部相同的前綴信息,網關無需做地址轉換,只需要轉發數據包即可。這種方式省去了地址轉換過程,但無法通過鄰居發現協議保證IPv6地址的唯一性。
2.1 原理分析
IPv6和IPv4都是網絡層協議,與其下層的數據鏈路層通信接口是完全相同的。在以太網中數據鏈路層數據幀格式如圖1所示。

圖1 以太網幀格式
其中2 byte的類型字段標志上一層的協議,還表示幀的長度,含義只能根據數值取其一。在使用中,當字段值大于等于0x0600時表示協議類型,小于0x0600表示長度。其中值為0x0800表示上層協議為IPv4,0x0806表示上層協議為ARP,值為0x86DD時表示上層協議為IPv6。根據以太網幀類型的值可以區分開兩個協議,可以在網關上做不同的處理。按照Linux內核處理數據包的方式,設計了圖2所示的數據包轉發流程,實現IPv4和IPv6的差別轉發。
只聽“三、二、一,奔跑吧,小主人”,我們的“戰斗”便開始了。大家你追我趕,我們邊防守,邊組織進攻,玩得不亦樂乎。很多人都是在撕別人名牌的時候被另一個人偷襲,真是“螳螂捕蟬,黃雀在后”啊!最無奈的是我的好友楊宜凡,因為體力不支,實在是跑不動了,只能主動放棄,一個男生便過去把她的名牌撕了。我雖然也很累,但我不斷地告訴自己,一定要為集體榮譽“戰斗”到底。有個男生一直圍著我轉,我見情況不妙,“啪”的一聲躺在了地上,那個男生見無機可乘,只好灰溜溜地走了……

圖2 數據轉發流程圖
主要思想是在數據包進入到網關時,在數據鏈路層判斷幀類型,如果是IPv6數據則進行橋接轉發,數據包直接進入到網絡內部,如果幀類型是IPv4或ARP,則數據包照常送到網絡層,進行IPv4協議的處理。其中ARP類型是IPv4網絡的底層基礎,需要與IPv4同等處理;但是在IPv6協議中使用鄰居發現協議來代替ARP,可以不用特殊考慮。
2.2 實現方法
Openwrt是支持多數無線路由器等網關設備的操作系統,它以Linux為基礎,支持嵌入式平臺,開放源代碼,可以根據需要自行開發特殊功能。本文以Openwrt為基礎實現IPv6的鏈路層透傳,解決IPv6的互通問題。
Linux內核中已經集成netfilter、ebtables等數據包過濾處理機制[4-5],這些內核模塊提供在不同層次對數據包檢查的hook(鉤子)。數據包從進入系統到從網絡層面消失,要經過PreRoute,Input,Forward,Output和PostRoute共5個階段,每階段包括了一些hook節點,每個節點都是一個過濾時機。當數據包行進到某節點時,使用ebtables檢測對應節點的過濾規則并進行過濾,或者調用hook來改變數據包內容和轉發流向。
其中主要工作在數據鏈路層的ebtables適合于橋接處理,其配置分為表、鏈和規則三級。
在外網(Wide Area Network,WAN)口啟用橋接,在接口上啟用ebtables過濾,當WAN口接收數據時,在Broute階段根據幀類型做出橋接判斷,如果為IPv6類型則繼續Forward鏈處理,直接把數據轉發到Local Area Network(LAN)口,完成數據傳輸,否則將數據包轉入上層,進入IPv4網絡層做NAT處理。
在內網接口上也啟用ebtables過濾,當內網口接收到收據時,同樣在Broute階段根據幀類型做出橋接判斷,如果為IPv6類型則繼續Forward鏈處理,直接把數據轉發到外網口,完成數據傳輸,否則繼續傳輸過程,進入IPv4網絡層做NAT處理。
具體步驟如下:更改內核,加入IPv6、ebtables和iptables支持功能,IPv6支持用于對幀類型的判斷,iptables用于對IPv4網的過濾,避免橋接后出現安全漏洞。設WAN口為 eth0,LAN口為 eth1、eth2,創建橋 br0,將eth0、eth1、eth2加入橋,在橋br0上配置IPv4地址,用來實現IPv4網絡正常的地址轉換。
ebtables-t broute-A BROUTING-i eth0–o!eth0-p!ipv6-j DROP //禁止外網IPv4直接進入內網
ebtables-t broute-A BROUTING-i!eth0–o eth0-p!ipv6-j DROP //禁止內網IPv4直接發到外網
ebtables-t broute-A BROUTING--logical-out br0–p!ipv6–j ACCEPT //非IPv6數據發往網關網絡層
iptables-A FORWARD-m state–state NEW-m physdev!–physdev-in eth0-j DROP //外網防火墻
該方法設計的基于鏈路層轉發的網關可以實現IPv6數據的透明傳輸,IPv4數據必須經過網絡層處理后互通,防火墻規則屏蔽來自外網的攻擊,保證了網關本身的安全。
1)網絡內外鄰居發現。IPv6中鄰居發現協議用來實現路由器的前綴發現、地址解析、下一跳地址確定、重定向、鄰居不可達檢測、重復地址檢測等功能[6],使用ICMPv6協議的5種報文。這些報文都封裝在IPv6數據包中,在數據鏈路層只對應一種幀格式,不會受到任何影響。
2)IPv6組播。IPv6組播使用組播地址用來標識一組接口,發往組播地址的報文被組播地址標識的所有接口接收。在數據包格式中使用ICMPv6作為發現協議,數據包與單播相同,在數據鏈路層沒有區別,所以不會影響組播協議。
傳統的地址轉換和代理方式是基于源地址和目的地址的轉換,僅適用于單播點到點傳輸,對于多播和廣播則無法轉發。本文研究的透傳是在數據鏈路層實現,IP協議相關的特性完整的包含在數據包中,不存在互通障礙。
在TP-Link740無線路由上刷入修改后的操作系統,在大學校園網雙棧環境下測試,無需復雜配置,可以實現IPv6的透傳,訪問外部IPv6網站和IPv4網站均正常,內外網之間IPv6數據相互收發正常,能保證IPv6網的對等性。
使用基于數據鏈路層的IPv6數據透傳,可以實現雙協議棧下個人區域網的IPv6無縫接入,省去了地址轉換或中間代理等過程,完整保持IP地址的對等關系,同時對組播、任意播等數據沒有影響。省略了網關在網絡層對數據包的處理,無需個人用戶做額外配置,適用于性能較低的嵌入式設備。該方法解決了家庭、辦公室等大量移動網絡設備對IPv6的需求,有利于IPv6網絡的普及和發展。
[1]張鳳山,周正.聚焦IEEE802.15與無線個人區域網標準[J].無線電工程,2004,34(9):1-2.
[2]王曉峰,吳建平,崔勇.互聯網IPv6過渡技術綜述[J].小型微型計算機系統,2006,27(3):385-395.
[3]郭政慧,婁媛媛.校園IPv6網過渡方案研究與應用[J].河南理工大學學報:自然科學版,2011,30(4):459-461.
[4]王帥,劉雷,柴喬林.應用Netfilter框架基于NAT-PT的IPv4/IPv6轉換網關的實現[J].計算機工程,2006,32(13):147-149.
[5]王德勁,杜仲.一種基于APESSID的智能流量控制方法[J].電視技術,2012,36(7):71-73.
[6]田軍,張玉軍,于東,等.鄰居發現協議的形式化測試[J].計算機研究與發展,2001,38(12):1409-1417.
Design on Personal Area Network IPv6 Gateway Based on Link Layer Passthrough
LIU Bencang,ZOU Jianing
(College of Computer Science and Technology,Henan Polytechnic University,Henan Jiaozuo454003,China)
The rapid development of IPv6 protocol,prompting the backbone network devices and operating systems support IPv6 protocol.But a lot of personal area network gateway only usesmethod of IPv4 address translation to connect to the Internet,does not support IPv6,IPv6 popularity to become an obstacle.In this paper,amethod of data link layer packet pass-through is presented,itmake IPv6 data directly pass through the gateway,reducing or intermediate address translation or proxy process,directly connect to the IPv6 network.
IPv6;data link layer;personal area network;wireless gateway
TN915
B
劉本倉(1979—),工程師,研究方向為計算機網絡技術;
?? 盈
2014-06-13考慮到系統整體總線狀態控制和數據傳輸過程中的錯誤監測,USB接口不能達到理論上的12 Mbit/s數據傳輸速度。在實際應用測試中,數據采集部分連續采集數據并將數據暫存于Flash存儲器中。讀取數據時,采取“數據塊”傳輸模式,其平均傳輸速率能達到9.6 Mbit/s。
【本文獻信息】劉本倉,鄒家寧.基于透傳的IPv6個人區域網無線網關設計[J].電視技術,2014,38(23).
河南省科技攻關計劃項目(122102210117)
鄒家寧(1974—),講師,研究方向為計算機網絡技術。