最近在做Android上實現pppoe撥接的功能。一般情況下不大可能會用到,但在大陸某些地區,可能會有AP並不支援DHCP功能,或者在某些平台上面裝載Android系統的時候,可能會需要移植拓展該功能。什麼是pppoe就不再介紹了,下面對於我的實驗環境搭建和操作進行簡述:
個人郵箱:xiaokeweng@gmail.com
(一)實驗環境搭建
描述:本例是在支援wifi的Android手持功能上面,通過wifi接入到區域網路LAN,pppoe-server也連結在本地區域網路內,於是建立起來Client到Server的網路通路。一條可達通路是基礎的必要條件。
(1)硬體裝置
Client :HTC手持終端
Router :TP-LINK 無線路由器
Server :ubuntu系統PC
LAN :本地區域網路
(硬體裝置環境)
(2)軟體條件
首先Client上面要支援ppp,這個在我的終端上面路徑是/system/bin/pppd,而後在PC上面安裝rp-pppoe(RoaringPenguin-pppoe),然後將PC作為pppoe-server,現實中配置的pppoe-server一般都是雙網卡,一個網卡負責代理區域網路內資料轉寄,一個負責將資料包丟到internet上面,而我方條件艱苦,只是為了實驗而已,所以本身的LAN就可以上網,在PC上最終通過iptables將pppoe通過pppX介面發送來的資料包NAT(網路位址轉譯)到可以訪問internet的ethX上面。而Android上面沒有pppoe可執行檔,於是通過移植,將rp-pppoe編譯出的可執行檔移植過來,命名為pppoe放在/system/bin下。即:
Android:pppoe,pppd
PC : rp-pppoe
資料包通路:Client -> AP(TP-LINK) -> LAN -> PC -> NAT ->LAN
(二)運行驗證方法
(1)在終端中adb shell後運行命令pppoe -d這樣就會令pppoe在本地區域網路內發起Discovery過程廣播包PADI,在PC上面抓包網卡ethX,如果受到廣播PADI,說明鏈路已經通過。
(pppoe-service抓到PADI廣播包)
(2)按照期望需求配置pppoe-server,後面會詳細講解。
(3)按照期望在Android終端中執行命令,於是會建立起來ppp連結,通過終端執行netcfg,PC執行ifconfig可以查看連結pppx介面。
(client端iface)
(server端iface ppp0)
(4)Android終端配置預設route到pppX,還有dns,這樣終端的資料包就會從pppX出去,而後,配置server的iptables,加規則,NAT通過pppoe上來的資料包,到有internet存取權限的ethX,通過抓包分析,確定資料鏈路是否達到預期。
經過以上步驟就能夠實現Android通過pppoe撥接了,以上只是粗略的該書,具體的細節步驟,將會在後面的部落格中詳細講解。