最近在做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接口。

(client端iface)


(server端iface ppp0)


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


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

更多相关文章

  1. Android(安卓)Socket 发送广播包的那些坑
  2. Android内核和驱动篇-Android内核介绍
  3. android总结之android初识
  4. Android(安卓)Socket 发送广播包的那些坑
  5. 深入解读Linux与Android的相互关系
  6. android CTS测试
  7. 将要更新到android 4.0的手机列表
  8. Android(安卓)音频简介(转)
  9. Android(安卓)移动终端camera 防偷*拍设置

随机推荐

  1. 自己动手写一个简单的Android下拉刷新
  2. Android跨进程通信之小例子(一)
  3. android UI进阶之仿iphone的tab效果 (Andr
  4. Mono for Android(安卓)(1) 之布局
  5. android应用安全——签名机制
  6. Unity3D调用android方法(非插件方式)
  7. OProfile在Andorid上使用
  8. eclipse的graphical layout窗口工作不正
  9. vlc编译
  10. Android札记【2】——系统的认识心中的An