最近在做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,并且确定开机后注册了/dev/ppp设备,也就是设备支持ppp是大前提,而后在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接口。

Android实现pppoe拨号上网(一)概述_第1张图片

(client端iface)


(server端iface ppp0)


(4)Android终端配置默认route到pppX,还有dns,这样终端的数据包就会从pppX出去,而后,配置server的iptables,加规则,NAT通过pppoe上来的数据包,到有internet访问权限的ethX,通过抓包分析,确定数据链路是否达到预期。


经过以上步骤就能够实现Android通过pppoe拨号上网了,以上只是粗略的该书,具体的细节步骤,将会在后面的博客中详细讲解。

更多相关文章

  1. Android 移动终端camera 防偷*拍设置
  2. 获取Android设备基本信息
  3. Android获取OAID设备标识
  4. android 获取设备型号
  5. Android中查看网卡设备信息
  6. 【Android】Android 代码判断当前设备是否为模拟器
  7. 使用Javascript判断浏览器终端设备(PC、IOS(iphone)、Android)
  8. android上的i-jetty (2)用Servlet显示Android设备的app列表
  9. Android 设备指纹

随机推荐

  1. Android(安卓)M及以上版本系统 悬浮窗权
  2. android 中管理短信
  3. Android(安卓)之 Handler总结
  4. Android开发之数据存储之二:SQLite数据库
  5. Android(安卓)调试模式工具的Stetho
  6. 【Android】windows下使用android studio
  7. Android深入浅出之Zygote[1]
  8. Gradle in Android(安卓)Studio (1) - 构
  9. 【Android每周专题】触摸屏事件
  10. android sdk 各个版本的区别