国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

Android移動網(wǎng)絡(luò)終端的IPv6接入系統(tǒng)設(shè)計與實現(xiàn)

2016-01-12 11:49:37周浩趙欽馬嚴(yán)
軟件 2015年11期
關(guān)鍵詞:設(shè)計與實現(xiàn)軟件工程

周浩++趙欽++馬嚴(yán)

摘 要:針對目前國內(nèi)3G/4G用戶無法接入IPv6網(wǎng)絡(luò)的問題,本文設(shè)計并實現(xiàn)了一種面向Android平臺的IPv6接入系統(tǒng)。該系統(tǒng)使用隧道技術(shù),將移動端的IPv6流量封裝進(jìn)IPv4數(shù)據(jù)包中,并通過隧道傳輸至IPv6接入服務(wù)器,由IPv6接入服務(wù)器解封裝后轉(zhuǎn)發(fā)至IPv6網(wǎng)絡(luò),進(jìn)而實現(xiàn)移動終端的IPv6接入能力。該系統(tǒng)利用第三方互聯(lián)網(wǎng)帳號進(jìn)行接入認(rèn)證,具備一定的適用性和簡易性。通過部署測試發(fā)現(xiàn),該系統(tǒng)可以方便有效地解決移動互聯(lián)網(wǎng)用戶接入IPv6的問題。

關(guān)鍵詞:軟件工程;IPv6接入系統(tǒng);設(shè)計與實現(xiàn);Android;OpenVPN;

中圖分類號:TP311.1

文獻(xiàn)標(biāo)識碼:A

DOI: 10.3969/j.issn.1003-6970.2015.11.016

0 引言

如今,世界各地的高校、運營商以及部分商業(yè)公司已經(jīng)開始了IPv6的商業(yè)化進(jìn)程。諸如Google,YouTube,百度,阿里巴巴等互聯(lián)網(wǎng)企業(yè)均已經(jīng)提供了IPv6服務(wù)讓用戶訪問。此外,六維空間,晨光BT等一大批IPv6站點開始走向用戶生活,受到越來越多的用戶的關(guān)注和追捧。

然而,目前國內(nèi)的IPv6網(wǎng)絡(luò)建設(shè)仍處于一個初級階段,IPv6接入能力主要集中在面向教育網(wǎng)內(nèi)的高校。對于普通的移動網(wǎng)絡(luò)用戶而言,運營商僅僅向其提供IPv4網(wǎng)絡(luò)接入服務(wù),這對習(xí)慣了獲取IPv6資源的用戶,特別是對于長期使用教育網(wǎng)的用戶而言,是非常不便的。因此,為這些用戶提供一種簡單有效的從IPv4向IPv6的過渡技術(shù)就非常有價值。

在目前常用的幾種過渡技術(shù)中,隧道技術(shù)由于其對網(wǎng)絡(luò)設(shè)備依賴性低,具備適用性廣和簡單易用等特點,受到不少用戶和研究人員的青睞。本文基于OpenVPN隧道技術(shù),設(shè)計并實現(xiàn)了一套針對Android平臺移動終端的IPv6接入系統(tǒng)。

1 系統(tǒng)原理

OpenVPN是一個開放源碼的基于SSL的隧道系統(tǒng),具備良好的安全性和極佳的跨平臺性,是實現(xiàn)隧道技術(shù)的一個理想方案。通過對OpenVPN以及Android系統(tǒng)的研究,本文提出了在移動網(wǎng)絡(luò)環(huán)境下,面向Android設(shè)備的IPv6接入系統(tǒng)。其核心原理是借助OpenVPN創(chuàng)建Android終端與IPv6接入服務(wù)器之間的IPv4隧道連接,將Android終端產(chǎn)生的所有IPv6流量通過這條隧道引導(dǎo)到IPv6網(wǎng)絡(luò)。同時,將IPv6網(wǎng)絡(luò)中流向Android終端的返回數(shù)據(jù)從這條隧道傳回至Android終端。OpenVPN的核心是虛擬網(wǎng)卡,在Android客戶端創(chuàng)建隧道連接時,OpenVPN會在Android設(shè)備中創(chuàng)建名為tun的虛擬網(wǎng)卡,作為系統(tǒng)的默認(rèn)IPv6出口,并通過套接字編程接口讀寫該虛擬網(wǎng)卡,對流經(jīng)該網(wǎng)卡的數(shù)據(jù)包進(jìn)行封裝或解封裝操作。

其中,Android終端和IPv6接入服務(wù)器之間的數(shù)據(jù)交互流程如下所述,在本文,我們將Android客戶端程序稱為6in4程序:

圖1展示的是Android終端發(fā)送IPv6數(shù)據(jù)包的流程:

l.Android APP使用IPv6協(xié)議訪問IPv6資源,向協(xié)議棧提交一個IPv6數(shù)據(jù)包。

2.Android系統(tǒng)協(xié)議棧將應(yīng)用程序提交的IPv6數(shù)據(jù)包發(fā)送到虛擬的tun接口。

3.6in4程序接著可以從tun接口讀取該IPv6數(shù)據(jù)包,而后對其進(jìn)行IPv4封裝,再提交到系統(tǒng)協(xié)議棧。

4.協(xié)議棧根據(jù)路由表將IPv4數(shù)據(jù)包從IPv4接口發(fā)送出去。

圖2展示的是IPv6接入服務(wù)器接收到Android端發(fā)來的數(shù)據(jù)后的處理流程:

1.接入服務(wù)器的IPv4接口接收到封裝了IPv6數(shù)據(jù)的IPv4數(shù)據(jù)包,并提交到系統(tǒng)協(xié)議棧。

2.系統(tǒng)協(xié)議棧將數(shù)據(jù)包上傳給OpenVPN服務(wù)端程序。

3.OpenVPN服務(wù)端程序?qū)Pv6數(shù)據(jù)從IPv4包從提取出來,并再次提交到系統(tǒng)協(xié)議棧。

4.系統(tǒng)協(xié)議棧根據(jù)路由表規(guī)則將IPv6數(shù)據(jù)包從IPv6接口發(fā)送出去。

圖3展示的是IPv6接入服務(wù)器接收到外部設(shè)備發(fā)往Android終端的IPv6數(shù)據(jù)包時的處理流程:

1.接入服務(wù)器的IPv6接口收到IPv6數(shù)據(jù)包,并提交到協(xié)議棧。

2.協(xié)議棧根據(jù)路由規(guī)則將IPv6數(shù)據(jù)包轉(zhuǎn)發(fā)到tun接口。

3.OpenVPN服務(wù)端程序從tun接口讀取IPv6數(shù)據(jù)包,并將其打包到IPv4數(shù)據(jù)包內(nèi),提交到系統(tǒng)協(xié)議棧。

4.系統(tǒng)協(xié)議棧根據(jù)路由表規(guī)則將打包后的IPv4數(shù)據(jù)包從IPv4接口發(fā)出。

圖4是Android接收IPv6響應(yīng)的處理流程:

1.Android從網(wǎng)絡(luò)接口接收到IPv4數(shù)據(jù)包,根據(jù)數(shù)據(jù)包內(nèi)的IP地址信息,將該IPv4數(shù)據(jù)包轉(zhuǎn)發(fā)6in4程序。

2.6in4程序?qū)?shù)據(jù)包解封裝,恢復(fù)成IPv6數(shù)據(jù)包,再將IPv6報文提交到協(xié)議棧。

3.Android協(xié)議棧根據(jù)IPv6數(shù)據(jù)包的地址和端口信息,將數(shù)據(jù)包提交給應(yīng)用程序。

通過以上四個過程,實現(xiàn)了Android終端對IPv6資源的訪問。

2 系統(tǒng)設(shè)計

2.1 系統(tǒng)設(shè)計

通過對已有系統(tǒng)的研究和學(xué)習(xí),本文將接入系統(tǒng)分五個功能模塊,分別為IPv6接入模塊,認(rèn)證模塊,API接口模塊,數(shù)據(jù)庫,Android端程序6in4,除客戶端程序外,各個模塊可以部署在單臺或多臺服務(wù)器上。這五個部分的組織結(jié)構(gòu)關(guān)系如圖5所示:

其中,IPv6接入模塊與Android終端之間建立IPv4隧道連接,通過該隧道為其提供IPv6接入功能。在建立隧道連接時,IPv6接入模塊會對客戶端進(jìn)行身份驗證,而驗證過程則依賴認(rèn)證服務(wù)器為其提供的驗證接口。

認(rèn)證模塊基于FreeRadius搭建,對IPv6接人模塊提供身份驗證接口,對API接口模塊提供用戶注冊,查詢接口。

API接口模塊面向Android客戶端程序6in4,為其提供RESTful API支持,包括賬號注冊,接入服務(wù)器信息查詢,日志上報,IPv6資源下發(fā)等功能。

數(shù)據(jù)庫中存儲用戶的賬號信息,隧道連接信息,客戶端上報的日志信息等數(shù)據(jù),方便管理員了解整個系統(tǒng)的運行狀況。

2.2 客戶端設(shè)計

客戶端程序適配Android 4.0及以上版本。這是因為Android在4.0版本提供了VPN的相關(guān)編程接口,使得第三方應(yīng)用可以在未獲取Root權(quán)限的情況下,也能實現(xiàn)VPN相關(guān)的功能。此外,客戶端程序引入QQ和新浪微博賬號,方便用戶使用已有賬號進(jìn)行使用??蛻舳顺绦蚺c服務(wù)端的交互流程如圖6所示:

3 系統(tǒng)實現(xiàn)與部署

3.1 認(rèn)證服務(wù)器的安裝配置

本系統(tǒng)中所有服務(wù)端程序都運行于CentOS 6.5版本系統(tǒng)。

認(rèn)證服務(wù)器基于FreeRadius搭建??梢酝ㄟ^包管理軟件yum進(jìn)行radius的安裝,安裝前需確認(rèn)MySQL數(shù)據(jù)庫已安裝。FreeRadius的安裝命令如下:

$yum install -yfreeradius freeradius-mysql freeradius-utils

安裝完畢后,需要修改Radius的配置,使其使用MySQL數(shù)據(jù)庫進(jìn)行用戶數(shù)據(jù)的存儲。修改配置文件/etc/raddb/radius.conf,找到modules配置塊,刪除$INCLUDE sql.conf以及$INCLUDE sql/mysql/counter.conf前的“#”號,如下:

修改/etc/raddb/sql.conf,配置成MySQL數(shù)據(jù)庫的地址和賬號和表名。

3.2 OpenVPN安裝以及Radius插件配置

OpenVPN可以使用yum命令進(jìn)行安裝。

$yum install openvpn -y

OpenVPN的配置步驟中,比較重要的是CA證書的生成,可以借助easy-rsa工具,進(jìn)入easy-rsa目錄下后執(zhí)行命令:

$./clean-all #清除原有不需要的證書文件

$./build-ca #生成證書

創(chuàng)建服務(wù)端證書

$./build-key-server server #這里指定服務(wù)端的證書名為server

創(chuàng)建客戶端證書

$./build-key client #這里指定客戶端的證書名為client

$./build-dh #證書加密,dh指Diffie Hellman

將以上步驟創(chuàng)建的證書都復(fù)制到/etc/openvpn/keys目錄下

之后編譯Radius認(rèn)證插件??梢詮墓倬W(wǎng)下載插件源代碼,根據(jù)文檔完成編譯,生成radiusplugin.so二進(jìn)制文件,并將此二進(jìn)制文件以及配置文件復(fù)制到OpenVPN安裝目錄下

編輯radiusplugin.cnf配置文件,修改其中的端口,IP等參數(shù)。

修改OpenVPN的配置文件server.cnf,如下:

在配置文件中指定OpenVPN程序以server的形態(tài)運行,使用的端口號為1194,以及IPv4和IPv6地址。push參數(shù)用于向客戶端推送路由規(guī)則和DNS信息。plugin參數(shù)用于加載radiusplugin.so插件。log和status參數(shù)指定日志文件路徑。keepalive參數(shù)指定隧道的?;顣r間。

完成以上配置后,重啟OpenVPN程序

$ /etc/init.d/openvpn restart

3.3 API接口服務(wù)器搭建

API接口服務(wù)器使用Yii框架進(jìn)行搭建,使用JSON格式數(shù)據(jù)與客戶端進(jìn)行數(shù)據(jù)通訊,并對用戶名、密碼等敏感數(shù)據(jù)進(jìn)行RSA加密。

3.4 Android客戶端實現(xiàn)

Android客戶端基于開源項目ics-openvpn進(jìn)行深度定制與開發(fā),加入了QQ和新浪微博的賬號登錄,網(wǎng)絡(luò)環(huán)境診斷功能,IPv6資源推薦,用戶意見反饋,應(yīng)用分享等功能,內(nèi)置隧道鏈接配置文件,刪除了對配置文件的修改功能。

其中,QQ和新浪微博賬號接入使用了ShareSDK進(jìn)行整合,申請賬號授權(quán)代碼如下:

此外,還需要在客戶端提供OpenVPN客戶端的配置文件,如下:

Client

dev tun

remote<服務(wù)端IP地址><端口號>

proto udp

topology subnet

resolv-retrv infinite

nobind

persist-key

persist-tun

auth-user-pass

#此處填充具體的證書內(nèi)容

ns-cert-type server

cipher AES-128-CBC

comp-lzo

route-method exe

route-delay 2

verb 3

tun-ipv6

以上配置文件指定了VPN服務(wù)端的IP地址,端口,認(rèn)證方式,連接協(xié)議等信息。Android端程序?qū)⒁罁?jù)此配置與服務(wù)端建立隧道連接。

4 系統(tǒng)測試

測試使用的設(shè)備為Nexus 5,系統(tǒng)版本為Android5.1.1,關(guān)閉手機(jī)的WIFI網(wǎng)絡(luò),僅接入北京聯(lián)通3G網(wǎng)絡(luò)。

初始的IPv4路由表如下:

IPv6路由表為空如下:

訪問IPv4地址情況如下:

訪問IPv6地址情況如下:

顯示網(wǎng)絡(luò)不可達(dá),因為北京地區(qū)的聯(lián)通3G網(wǎng)絡(luò)未提供IPv6接入能力。

打開Android客戶端程序并建立隧道連接后,IP地址分配情況:

可見OpenVPN在Android終端內(nèi)創(chuàng)建了名為tun的虛擬端口,其IP地址被設(shè)置為服務(wù)端指派的IP地址。

再看IPv6路由表

已將tun接口設(shè)置成默認(rèn)的IPv6出口。

訪問IPv6站點情況:

同時也不影響IPv4的訪問

在進(jìn)過幾輪的測試后,測試設(shè)備與IPv6站點間的Ping延時如下:

從測試結(jié)果看,本系統(tǒng)可以為移動網(wǎng)絡(luò)下的Android終端提供IPv6接入能力,但由于受限與隧道加解密處理,以及IPv6接入服務(wù)器的出口帶寬等物理因素,使得Android終端對IPv6資源的訪問速度有所下降。但從手機(jī)瀏覽器訪問IPv6網(wǎng)站的用戶體驗而言,依然處于一個可用的水平。

目前,客戶端軟件已經(jīng)在百度應(yīng)用市場和騰訊應(yīng)用寶上架,截止2015年10月底,已經(jīng)有近1000次裝機(jī)量和500名左右注冊用戶,隧道連接的創(chuàng)建次數(shù)已經(jīng)超過了12000次。

5 總結(jié)

本文針對目前移動設(shè)備在3G/4G等移動網(wǎng)絡(luò)下無法接入IPv6網(wǎng)絡(luò)的問題,提出并實現(xiàn)了一種簡單、有效的IPv6接入系統(tǒng)。通過隧道的方式將用戶的IPv6流量封裝進(jìn)IPv4數(shù)據(jù)包中,實現(xiàn)IPv6 over IPv4網(wǎng)絡(luò)的設(shè)計思路,并采用手機(jī)APP的形式,為用戶屏蔽了復(fù)雜的隧道配置過程和參數(shù)管理。同時,采用QQ,新浪微博等國內(nèi)用戶常用的互聯(lián)網(wǎng)賬號進(jìn)行接入認(rèn)證,更是降低了用戶的使用門檻。目前,Android4.0版本已經(jīng)占據(jù)了95%以上的份額,因此該方案也具備較廣泛的適用性,對iOS平臺下的實現(xiàn)方案也有很大的借鑒意義。

然而,受限于IPv4帶寬,終端的IPv6接入速度和接入質(zhì)量相對于雙棧接入的用戶而言,有一定的下降,這個問題可以通過改善終端與IPv6接入服務(wù)器之間的線路質(zhì)量,降低隧道的數(shù)據(jù)處理開銷,引入IPv6接入服務(wù)器集群,增加接入服務(wù)器的IPv4帶寬資源等方法進(jìn)行解決。

猜你喜歡
設(shè)計與實現(xiàn)軟件工程
校園電商平臺的設(shè)計與實現(xiàn)
中國市場(2016年41期)2016-11-28 06:09:30
高校文化建設(shè)中視覺識別系統(tǒng)的設(shè)計和實現(xiàn)
軟件開發(fā)信息管理系統(tǒng)的設(shè)計與實現(xiàn)
依托工作室的軟件工程實踐教學(xué)研究
科研院所科研信息化管理系統(tǒng)的設(shè)計與應(yīng)用
基于工程教育認(rèn)證的《軟件工程》課程教學(xué)質(zhì)量建設(shè)研究 
關(guān)于提高軟件工程實踐教學(xué)質(zhì)量的幾點思考
關(guān)于如何創(chuàng)新和完善計算機(jī)軟件工程管理的探討
临颍县| 邻水| 遂溪县| 渑池县| 鄂托克前旗| 肇东市| 留坝县| 琼结县| 中牟县| 酉阳| 孟津县| 重庆市| 乌拉特中旗| 南充市| 西丰县| 清丰县| 乐昌市| 康马县| 麟游县| 和平区| 英吉沙县| 融水| 花莲市| 沽源县| 临沧市| 永修县| 印江| 甘洛县| 滨海县| 灵武市| 临海市| 西吉县| 宣城市| 宜川县| 龙游县| 广汉市| 镇巴县| 阿勒泰市| 泽州县| 扎鲁特旗| 古交市|