Android實現pppoe撥接(二)具體步驟

來源:互聯網
上載者:User

個人郵箱:xiaokeweng@gmail.com   

實驗環境搭建,滿足pppoe連結的基礎服務,就是保證ppp協議能夠封裝在乙太網路架構中的一種網路隧道協議,因為整合了ppp協議,所以實現了創痛乙太網路不能提供身分識別驗證,加密和壓縮的功能。本質上,它是一個允許在乙太網路廣播域中的兩個乙太網路介面間建立ppp協議隧道。它使用傳統的基於PPP的軟體來管理一個不是使用串列線路而是使用類似於乙太網路的有向分組網路的串連。這種有登陸和口令的標準串連,方便了接入供應商的記費。並且,串連的另一端僅當PPPoE串連接通時才分配IP地址,所以允許IP地址的動態複用。

---wiki :

http://zh.wikipedia.org/zh-cn/PPPoE

(PPPoE及TCP/IP協議棧)

(一)pppoe-server

也就是PC機器,我這邊只說linux系統下面的情況,我的是Ubuntu系統,下載rp-pppoe: 

http://www.roaringpenguin.com/products/pppoe

按照裡面的README來要求來安裝rp-pppoe。最簡單的就是default直接運行go指令碼。然後PC機器就可以運行pppoe-server命令了。不要急,還要對server進行配置,設定檔在/etc/pppoe-server-options,開啟進行改寫。我的配置如下:

# PPP options for the PPPoE server# LIC: GPLauth                   #連結時候驗證require-chap           #CHAP認證# login                #連結後驗證lcp-echo-interval 10   #每10秒發送心跳信令requestlcp-echo-failure 2     #連續兩條心跳信令reply沒有回複取消連結

儲存退出,這樣配置完成,這樣在建立ppp連結的Discovery階段就會進行驗證,server儲存的驗證使用者名稱,密碼就在/etc/ppp/chap-secrets裡面:

# Secrets for authentication using CHAP# client               server      secret             IP addresses  "user_xiaokeweng"    *           "my_password"      *

其中各個欄位的含義,顧名思義,*指代all。

最後在PC端啟動pppoe-server,輸入命令:

sudo pppoe-server -I eth0

(二)pppoe-client

在android上面移植pppoe模組,同樣使用rp-pppoe,我們可以build成模組移植到android終端上面,需要自己寫make file,我這邊是用Android.mk:

LOCAL_PATH:= $(call my-dir)include $(CLEAR_VARS)LOCAL_SRC_FILES:=\    src/pppoe.c \    src/if.c \    src/debug.c \    src/common.c \    src/ppp.c \    src/discovery.cLOCAL_MODULE_PATH := $(LOCAL_PATH)LOCAL_MODULE_TAGS := optionalLOCAL_MODULE := pppoeLOCAL_C_INCLUDES += $(LOCAL_PATH)/srcinclude $(BUILD_EXECUTABLE)include $(call all-makefiles-under,$(LOCAL_PATH))


於是build出來pppoe可執行模組,push到/system/bin下面,當然可以直接改寫rp-pppoe的makefile。於是在終端就可以發起pppoe連結請求了。

(三)運行測試

(1)首先要保證Client,Server都在一個廣播域中,按照前文中的思路,手持終端是通過wifi,連結到接入LAN中的無線路由器中,而PC是直接接入到LAN中的。

(2)adb進入裝置終端後,輸入

/system/bin/pppoe -d

就會發起Discorvery,在廣播域內廣播PADI報文,成功的話會返回傳現的pppoe-server的MAC地址,並且在PC端抓包eth0的話,使用ppp||pppoed進行過濾,能夠收到終端的廣播報文。這樣就能說明已經實現pppoe通路。接著:

/system/bin/pppd pty "/system/bin/pppoe -I wlan0" user user_xiaokeweng password my_password 

這樣就會發起pppoe連結,經過Discovery,認證,LCP,最終建立其ppp連結。在PC端會看到建立立起來的ppp0,Client端也會看到。

(四)後續配置

(1)PC端配置iptable使終端的資料包能夠請求訪問internets

echo 1 > /proc/sys/net/ipv4/ip_forward   //開啟iptable,該命令切換到root運行iptables  -t nat -F            //清空表項iptables  -t nat -L            //現實表項iptables  -t nat -A POSTROUTING -s 192.168.1.1 -j SNAT --to 192.168.163.254//-s 為終端獲得的ip,--to 為ethx 的ip

(2)在終端增加路由表項目

ip -d route                     //查看路由表項ip route del default            //刪除掉全部default,需要操作多遍   ip route add default dev ppp0   //將預設路由設為ppp0ip -d route                     //再次查看

(3)配置dns

這樣操作的話是不需要設定dns的,因為連結wlan的時候,使用的dns-server與現在的是完全一樣的,如果經過上述操作,能夠ping通internet但是不能夠正常上網的話,一定就是dns的問題了。

getprop net.dns1                  //查看預設路由1getprop net.dns2                  //查看預設路由2setprop net.dns1 110.112.120.115  //設定預設路由1 setprop net.dns2 110.112.120.114  //設定預設路由2

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.