Android 实现PPPoE拨号
关于Android实现PPPoE拨号上网的问题。
系统必须安装有ppp和rp-pppoe程序。一般ROM自带有ppp程序的、rp-pppoe就未必有了,需要交叉rp-pppoe到目标机。我的开发环境已带有rp-pppoe的二进制程序pppoe和一个shell程序pppoe-connect了。
先来看看pppoe-connect里面是什么。。。
- #!/system/bin/sh
- PPPD_EXIT=""
- IFACE=$1
- USERNAME=$2
- /system/bin/setprop "net.pppoe.ppp-exit" ""
- /system/bin/setprop "net.pppoe.reason" ""
- /system/bin/setprop "net.pppoe.interface" ""
- /system/bin/log -t aw-pppoe "Starting pppd"
- /system/bin/pppd pty "/system/bin/pppoe -p /etc/ppp/pppoe.pid -I $IFACE -T 80 -U -m 1412" \
- noipdefault noauth default-asyncmap nodefaultroute hide-password nodetach \
- usepeerdns mtu 1492 mru 1492 noaccomp nodeflate nopcomp novj novjccomp user \
- $USERNAME lcp-echo-interval 10 lcp-echo-failure 2 linkname pppoe
- PPPD_EXIT=$?
- #/system/bin/log -t aw-pppoe "pppd exited with $PPPD_EXIT"
- /system/bin/setprop "net.pppoe.ppp-exit" "$PPPD_EXIT"
- /system/bin/setprop "net.pppoe.reason" "gone"
- /system/bin/setprop "net.pppoe.interface" ""
重点关注这句
- /system/bin/pppd pty "system/bin/pppoe -p /etc/ppp/pppoe.pid -I $IFACE -T 80 -U -m 1412" \
- noipdefault noauth default-asyncmap nodefaultroute hide-password nodetach \
- usepeerdns mtu 1492 mru 1492 noaccomp nodeflate nopcomp novj novjccomp user \
- $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 执行命令
- pppoe-connect wlan0 账号 密码
这命令是阻塞的!如果几秒后都没返回些什么,那么pppoe程序已经执行成功,在工作了!然后再开一个虚拟终端输入下面命令:
- netcfg
如果没错会多出个ppp0网络接口,并且这接口已有ip地址了。到这里就是拨号成功了!
不过不能上网!
我们还要将默认路由映射绑定到这个ppp0接口。
- ip route del default
多调用几次也无妨,确保删除所有原有的default路由映射。
然后
- ip route add default dev ppp0
把default路由映射绑到ppp0上
这时候试试ping下外网的ip,如无意外应该能ping通了!
OK!能上网了!
少侠!且慢!保险起见在ping域名试试?
如果悲剧了!再修炼下面章节吧!
ping通外网ip但ping不通域名的话。肯定是dns问题了!!
- getprop net.dns1
果然没有返回dns地址吧?!
其实在pppoe-connect里面的命令已经用了usepeerdns选项的,ppp0已经拿到dns,我们需要做的就是把net.ppp0.dns1的dns复制到net.dns1
- setprop net.dns1 $(getprop net.ppp0.dns1)
执行此命令将net.dns1设置为跟net.ppp0.dns1一样即可!一般你还会顺手把dns2也设置一下的!你懂得!
ping一下域名呗!能ping通么?
不管你信不信!反正我行了!各种网页、ftp、qq无压力!
再复制下我修改后的shell pppoe-connect程序吧,方便伸手党
- #!/system/bin/sh
- PPPD_EXIT=""
- IFACE=$1
- USERNAME=$2
- PSW=$3
- /system/bin/setprop "net.pppoe.ppp-exit" ""
- /system/bin/setprop "net.pppoe.reason" ""
- /system/bin/setprop "net.pppoe.interface" ""
- /system/bin/log -t aw-pppoe "Starting pppd"
- /system/bin/pppd pty "system/bin/pppoe -p /etc/ppp/pppoe.pid -I $IFACE -T 80 -U -m 1412" \
- noipdefault noauth default-asyncmap nodefaultroute hide-password nodetach \
- usepeerdns mtu 1492 mru 1492 noaccomp nodeflate nopcomp novj novjccomp user \
- $USERNAME password $PSW lcp-echo-interval 10 lcp-echo-failure 2 linkname pppoe
- PPPD_EXIT=$?
- #/system/bin/log -t aw-pppoe "pppd exited with $PPPD_EXIT"
- /system/bin/setprop "net.pppoe.ppp-exit" "$PPPD_EXIT"
- /system/bin/setprop "net.pppoe.reason" "gone"
- /system/bin/setprop "net.pppoe.interface" ""
Android 实现PPPoE拨号相关推荐
- Android实现pppoe拨号上网(一)概述
最近在做Android上实现pppoe拨号上网的功能.一般情况下不大可能会用到,但在大陆某些地区,可能会有AP并不支持DHCP功能,或者在某些平台上面装载Android系统的时候,可能会需要移植拓展该 ...
- android pppoe 源码,android移植pppoe拨号上网的全过程
硬件环境:Tiny6410开发板 软件环境:fedora14 + Android 2.3.4 + linux-2.6.36 1.编译内核支持ppp android自带pppd,所以仅仅须要移植pppo ...
- Android实现pppoe拨号上网实例
* 平台:RK3399 * 系统:安卓7.1 >在电脑搭建服务端这里就不赘述了,可看下面的参考文章. 编译生成pppoe可执行文件. 下载rp-pppoe源吗. 在安卓源码下创建external ...
- android PPPoE拨号调试记录
ttyAT = ttyUSB2 //发送AT命令口 ttyPPP = ttyUSB3 //ppp口 ttyDM = ttyUSB0 ttyGPS = ttyUSB1 1.查看tty设备 # ls /d ...
- andorid pppoe拨号上网
简单介绍一下PPPOE拨号 首先,我们通过介质(网线)连接到ISP的主机,这时候我们的机器只能和ISP通讯,除此之外就不能干其他的事情了. 然后我们需要和ISP协商我想访问外网输入用户名密码,通过他的 ...
- ADSL的PPPOE拨号客户端上的ppp authentication pap “callin”的正确理解
ADSL的PPPOE拨号客户端上的ppp authentication pap "callin"的正确理解 对callin参数的理解一定要注意,很容易单让初学者通过"中国 ...
- 调试H3C MSR 20-20 PPPOE拨号
在实际工作中一般很少用PPPOE来拨号,企业的网络都会采用静态的IP地址,因为企业都会有自己的门户网站.OA.邮箱,都会去申请静态的IP地址,出口都会安装防火墙,下面主要讲一下PPPOE具体的配置思路 ...
- linux中的pppoe拨号上网
实例:(linux中的pppoe拨号上网) ① 安装软件:把下载的pppoe传到linux下的/root目录下,在终端对软件进行拆包: ll:查看目录,能看见软件包的名字 tar -zxvf rp-p ...
- pfSense修改PPPoE拨号总数
pfsense的PPPPoE默认拨号总数是255,对一些使用者来说不能满足要求,可通过修改PHP文件的方式修改拨号总数. 防火墙开启SHELL ,用WinSCP登陆进系统,找到/usr/local/w ...
最新文章
- OpenCV——膨胀与腐蚀
- 区块链开发公司能做什么?对企业未来市场有何帮助?
- Shell--shell中的判断
- php mysql 白屏_apache+php+mysql的白屏问题
- java 内存模型 ——学习笔记
- 单机、集群与分布式的概念(转)
- 保存的图数据丢失_锡柴自主刷写和备份共享数据文件使用介绍
- Kaggle 数据清洗挑战 Day 4 - 字符编码(Character Encoding)处理
- 若依mybatis返回map将下划线命名转为驼峰式命名
- 移动站点生成便捷之路:百度SiteApp
- CentOS6.x安装zabbix
- 静态路由的简单案例(华为),一看就会
- 会员管理系统适用于哪些行业
- 为什么亚洲四小龙只有韩国出了三星和现代这样的品牌巨擘?
- div布局三栏-左中右
- 题解 luoguP2928 【[USACO09HOL]牛的打手Cattle Bruisers】
- 直截了当地解释 ERC-3525 与 ERC-1155 的差别
- 抖音创作规范_抖音创作内容调整提示怎么办
- linux操作系统安装自定义分区,CentOS linux操作系统安装图文教程
- 个人日记:XML追加和覆盖内容,将XML某位置的子标签或者属性,文本删除