关于Android实现PPPoE拨号上网的问题。

系统必须安装有ppp和rp-pppoe程序。一般ROM自带有ppp程序的、rp-pppoe就未必有了,需要交叉rp-pppoe到目标机。我的开发环境已带有rp-pppoe的二进制程序pppoe和一个shell程序pppoe-connect了。

先来看看pppoe-connect里面是什么。。。

[php]  view plain copy
  1. #!/system/bin/sh
  2. PPPD_EXIT=""
  3. IFACE=$1
  4. USERNAME=$2
  5. /system/bin/setprop "net.pppoe.ppp-exit" ""
  6. /system/bin/setprop "net.pppoe.reason" ""
  7. /system/bin/setprop "net.pppoe.interface" ""
  8. /system/bin/log -t aw-pppoe "Starting pppd"
  9. /system/bin/pppd pty "/system/bin/pppoe -p /etc/ppp/pppoe.pid -I $IFACE -T 80 -U -m 1412" \
  10. noipdefault noauth default-asyncmap nodefaultroute hide-password nodetach \
  11. usepeerdns mtu 1492 mru 1492 noaccomp nodeflate nopcomp novj novjccomp user \
  12. $USERNAME lcp-echo-interval 10 lcp-echo-failure 2 linkname pppoe
  13. PPPD_EXIT=$?
  14. #/system/bin/log -t aw-pppoe "pppd exited with $PPPD_EXIT"
  15. /system/bin/setprop "net.pppoe.ppp-exit" "$PPPD_EXIT"
  16. /system/bin/setprop "net.pppoe.reason" "gone"
  17. /system/bin/setprop "net.pppoe.interface" ""

重点关注这句

[php]  view plain copy
  1. /system/bin/pppd pty "system/bin/pppoe -p /etc/ppp/pppoe.pid -I $IFACE -T 80 -U -m 1412" \
  2. noipdefault noauth default-asyncmap nodefaultroute hide-password nodetach \
  3. usepeerdns mtu 1492 mru 1492 noaccomp nodeflate nopcomp novj novjccomp user \
  4. $USERNAME lcp-echo-interval 10 lcp-echo-failure 2 linkname pppoe

目前我对这句命令还不能完全看明白。了解几个关键点就行。

首先,pppoe-connect会运行pppd和pppoe。所以着眼这个就行了。

$IFACE是填网卡名,Android网卡一般以太网卡是eth0、无线网卡是wlan0。

$USERNAME是填pppoe的账号。

看着是不是感觉少了什么?没错!是密码!有账号那就必须有密码的!这个pppoe-connect脚本没带有关于密码的东西。

一般密码是用另外的pppoe-setup去设置的!既然没有pppoe-setup那我就自己将密码在这上面补上去!在前头加入PSW=$3,把传入的第三个参数存为变量PSW,然后再在命令user $USERNAME后面加上password $PSW。

保存好文件。然后在shell 执行命令

[php]  view plain copy
  1. pppoe-connect wlan0 账号 密码

这命令是阻塞的!如果几秒后都没返回些什么,那么pppoe程序已经执行成功,在工作了!然后再开一个虚拟终端输入下面命令:

[php]  view plain copy
  1. netcfg

如果没错会多出个ppp0网络接口,并且这接口已有ip地址了。到这里就是拨号成功了!

不过不能上网!

我们还要将默认路由映射绑定到这个ppp0接口。

[php]  view plain copy
  1. ip route del default

多调用几次也无妨,确保删除所有原有的default路由映射。

然后

[php]  view plain copy
  1. ip route add default dev ppp0

把default路由映射绑到ppp0上

这时候试试ping下外网的ip,如无意外应该能ping通了!

OK!能上网了!

少侠!且慢!保险起见在ping域名试试?

如果悲剧了!再修炼下面章节吧!

ping通外网ip但ping不通域名的话。肯定是dns问题了!!

[php]  view plain copy
  1. getprop net.dns1

果然没有返回dns地址吧?!

其实在pppoe-connect里面的命令已经用了usepeerdns选项的,ppp0已经拿到dns,我们需要做的就是把net.ppp0.dns1的dns复制到net.dns1

[php]  view plain copy
  1. setprop net.dns1 $(getprop net.ppp0.dns1)

执行此命令将net.dns1设置为跟net.ppp0.dns1一样即可!一般你还会顺手把dns2也设置一下的!你懂得!

ping一下域名呗!能ping通么?

不管你信不信!反正我行了!各种网页、ftp、qq无压力!

再复制下我修改后的shell pppoe-connect程序吧,方便伸手党

[php]  view plain copy
  1. #!/system/bin/sh
  2. PPPD_EXIT=""
  3. IFACE=$1
  4. USERNAME=$2
  5. PSW=$3
  6. /system/bin/setprop "net.pppoe.ppp-exit" ""
  7. /system/bin/setprop "net.pppoe.reason" ""
  8. /system/bin/setprop "net.pppoe.interface" ""
  9. /system/bin/log -t aw-pppoe "Starting pppd"
  10. /system/bin/pppd pty "system/bin/pppoe -p /etc/ppp/pppoe.pid -I $IFACE -T 80 -U -m 1412" \
  11. noipdefault noauth default-asyncmap nodefaultroute hide-password nodetach \
  12. usepeerdns mtu 1492 mru 1492 noaccomp nodeflate nopcomp novj novjccomp user \
  13. $USERNAME password $PSW lcp-echo-interval 10 lcp-echo-failure 2 linkname pppoe
  14. PPPD_EXIT=$?
  15. #/system/bin/log -t aw-pppoe "pppd exited with $PPPD_EXIT"
  16. /system/bin/setprop "net.pppoe.ppp-exit" "$PPPD_EXIT"
  17. /system/bin/setprop "net.pppoe.reason" "gone"
  18. /system/bin/setprop "net.pppoe.interface" ""
转自:http://blog.csdn.net/captain_black/article/details/8554032

Android 实现PPPoE拨号相关推荐

  1. Android实现pppoe拨号上网(一)概述

    最近在做Android上实现pppoe拨号上网的功能.一般情况下不大可能会用到,但在大陆某些地区,可能会有AP并不支持DHCP功能,或者在某些平台上面装载Android系统的时候,可能会需要移植拓展该 ...

  2. android pppoe 源码,android移植pppoe拨号上网的全过程

    硬件环境:Tiny6410开发板 软件环境:fedora14 + Android 2.3.4 + linux-2.6.36 1.编译内核支持ppp android自带pppd,所以仅仅须要移植pppo ...

  3. Android实现pppoe拨号上网实例

    * 平台:RK3399 * 系统:安卓7.1 >在电脑搭建服务端这里就不赘述了,可看下面的参考文章. 编译生成pppoe可执行文件. 下载rp-pppoe源吗. 在安卓源码下创建external ...

  4. android PPPoE拨号调试记录

    ttyAT = ttyUSB2 //发送AT命令口 ttyPPP = ttyUSB3 //ppp口 ttyDM = ttyUSB0 ttyGPS = ttyUSB1 1.查看tty设备 # ls /d ...

  5. andorid pppoe拨号上网

    简单介绍一下PPPOE拨号 首先,我们通过介质(网线)连接到ISP的主机,这时候我们的机器只能和ISP通讯,除此之外就不能干其他的事情了. 然后我们需要和ISP协商我想访问外网输入用户名密码,通过他的 ...

  6. ADSL的PPPOE拨号客户端上的ppp authentication pap “callin”的正确理解

    ADSL的PPPOE拨号客户端上的ppp authentication pap "callin"的正确理解 对callin参数的理解一定要注意,很容易单让初学者通过"中国 ...

  7. 调试H3C MSR 20-20 PPPOE拨号

    在实际工作中一般很少用PPPOE来拨号,企业的网络都会采用静态的IP地址,因为企业都会有自己的门户网站.OA.邮箱,都会去申请静态的IP地址,出口都会安装防火墙,下面主要讲一下PPPOE具体的配置思路 ...

  8. linux中的pppoe拨号上网

    实例:(linux中的pppoe拨号上网) ① 安装软件:把下载的pppoe传到linux下的/root目录下,在终端对软件进行拆包: ll:查看目录,能看见软件包的名字 tar -zxvf rp-p ...

  9. pfSense修改PPPoE拨号总数

    pfsense的PPPPoE默认拨号总数是255,对一些使用者来说不能满足要求,可通过修改PHP文件的方式修改拨号总数. 防火墙开启SHELL ,用WinSCP登陆进系统,找到/usr/local/w ...

最新文章

  1. OpenCV——膨胀与腐蚀
  2. 区块链开发公司能做什么?对企业未来市场有何帮助?
  3. Shell--shell中的判断
  4. php mysql 白屏_apache+php+mysql的白屏问题
  5. java 内存模型 ——学习笔记
  6. 单机、集群与分布式的概念(转)
  7. 保存的图数据丢失_锡柴自主刷写和备份共享数据文件使用介绍
  8. Kaggle 数据清洗挑战 Day 4 - 字符编码(Character Encoding)处理
  9. 若依mybatis返回map将下划线命名转为驼峰式命名
  10. 移动站点生成便捷之路:百度SiteApp
  11. CentOS6.x安装zabbix
  12. 静态路由的简单案例(华为),一看就会
  13. 会员管理系统适用于哪些行业
  14. 为什么亚洲四小龙只有韩国出了三星和现代这样的品牌巨擘?
  15. div布局三栏-左中右
  16. 题解 luoguP2928 【[USACO09HOL]牛的打手Cattle Bruisers】
  17. 直截了当地解释 ERC-3525 与 ERC-1155 的差别
  18. 抖音创作规范_抖音创作内容调整提示怎么办
  19. linux操作系统安装自定义分区,CentOS linux操作系统安装图文教程
  20. 个人日记:XML追加和覆盖内容,将XML某位置的子标签或者属性,文本删除

热门文章

  1. 如何写开题报告的内容
  2. 云鹤平台与Force.com比较
  3. Java-基于URL与IO流的网络资源访问和下载
  4. uniapp 定位问题
  5. 遭遇Viking新变种、传奇、魔兽盗号木马等(第3版)
  6. 算盘和计算机联想,联想的智慧 IBM的算盘
  7. java验证码图片滑动验证码_图片滑动验证码的生成
  8. 微信开发者工具 黑屏_解决微信开发者工具黑屏
  9. 深圳学校积分计算机,深圳积分入学测评
  10. cocos2dx 手机根据重力感应切换横屏