Android实现pppoe拨号上网(二)具体步骤
来源:互联网 发布:野岛伸司知乎 编辑:程序博客网 时间:2024/05/16 07:31
个人邮箱: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)/srcLOCAL_CFLAGS += '-DVERSION="3.10"' \ '-DPPPD_PATH="/system/bin/pppd"'include $(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
- Android实现pppoe拨号上网(二)具体步骤
- Android实现pppoe拨号上网(一)概述
- Android实现pppoe拨号上网实例
- android移植pppoe实现拨号上网全过程
- 在uClinux中实现 pppoe拨号上网功能
- Android4.4实现PPPOE拨号上网具体流程
- pppoe拨号上网 路由器(Router) 网关
- CentOS 7拨号上网(ADSL & PPPoE)
- CentOS 7拨号上网(ADSL & PPPoE)
- 移植rp-pppoe到s3c2440(QQ2440v3)实现ADSL拨号上网
- 移植rp-pppoe到mini2440实现ADSL拨号上网
- 移植rp-pppoe到s3c2440(QQ2440v3)实现ADSL拨号上网
- 移植rp-pppoe到s3c2440(QQ2440v3)实现ADSL拨号上网
- 移植rp-pppoe到mini2440实现ADSL拨号上网
- 移植rp-pppoe到s3c2440(mini2440)实现ADSL拨号上网
- Linux拨号上网pppoe
- 怎样通过pppoe拨号上网
- Ubuntu 使用pppoe拨号上网
- android开发四大网站
- 地图之对象图块
- imagebutton
- 一个偶然错误引起对gcc和g++的认识
- 128 - Software CRC//大数求余
- Android实现pppoe拨号上网(二)具体步骤
- WdatePicker时间改变事件(顺带解决有些浏览器下兼容性问题)
- 数据库建模
- linux清除tomcat缓存
- 常用的兼容性问题
- 计算机的启动过程(详细)
- 线段树(1)
- Linux 的cp命令
- 重读经典-《Effective C++》Item2:尽量以const,enum,inline替换#define