Openwrt pppoe demand拨号问题

最近在使用openwrt开发,使用自带的pppoe功能

拨号配置很简单,只要修改/etc/config/network文件的配置如下即可

/etc/config/network

config interface 'wan'
    option ipv6 '0'
    option ifname 'eth1'
    option proto 'pppoe'
    option macaddr '00:0C:43:28:80:58'
    option 'username' 'root'
    option 'password' '111111'
    option 'peerdns' '1'
    option 'defaultroute' '1' #

/etc/init.d//network restart

不知道为什么修改任意网络都要重载网络配置,shit

重启网络后,自动拨号成功。

大家可以直接网上搜索一个pppoe-server配置方式,自己搭建一个服务器,测试比较方便,很容易就可以拨号成功了 。

如:http://blog.csdn.net/pdcxs007/article/details/44599885

在使用pppoe过程中,包括家用路由器,想必各位的拨号方式都不是自动拨号,而是按需拨号 ,简单来说就是有人用就拨号上网,空闲一段时间网络自动断开,这也就用到了pppoe拨号中的demand功能,只需在配置中增加

option 'demand' '30'

pppoe就会进行按需拨号。

但是使用中发现,一旦配置了demand,系统就不进行拨号操作,去掉了demand就可以正常运行,按理说openwrt中的按需拨号应该是一个很基础的功能,不应该有这种问题
遂去网上进行各种搜索,国内的国外的,还真有很多人都遇到了这个问题。

然后就开始研究pppoe拨号流程,根据后台ps跟踪发现,当不配置demand,也就是可正常拨号的情况下,后台存在了如下进程

root@Topwag:~# ps -wwww|grep ppp
 3637 root  1680 S/usr/sbin/pppd nodetach ipparam wan ifname pppoe-wan nodefaultroute usepeerdns persist maxfail 10 user root password 111111 ip-up-script /lib/netifd/ppp-upipv6-up-script /lib/netifd/ppp-up ip-down-script /lib/netifd/ppp-down ipv6-down-script /lib/netifd/ppp-down mtu 1492 mru 1492 plugin rp-pppoe.so nic-eth1

ps -wwww wwww 4个w 画重点!

当配置了demand,拨号不正常的情况下,后台根本就没有pppd进程,并且也不存在pppoe-wan虚网卡

再跟踪分析发现,此进程是由系统脚本vi /lib/netifd/proto/ppp.sh 生成并调用,具体调用方式猜测是procd调用的,这个过于复杂,没进行追踪

具体脚本如下:

/lib/netifd/proto/ppp.sh

proto_run_command "$config" /usr/sbin/pppd \  
nodetach ipparam "$config" \  
ifname "$pppname" \   
${keepalive:+lcp-echo-interval $interval lcp-echo-failure ${keepalive%%[, ]*}} \
${ipv6:++ipv6} \
nodefaultroute \
usepeerdns \
$demand maxfail 1 \ 
${username:+user "$username" password "$password"} \
${connect:+connect "$connect"} \
${disconnect:+disconnect "$disconnect"} \   
ip-up-script /lib/netifd/ppp-up \   
ipv6-up-script /lib/netifd/ppp-up \ 
ip-down-script /lib/netifd/ppp-down \   
ipv6-down-script /lib/netifd/ppp-down \ 
${mtu:+mtu $mtu mru $mtu} \ 
"$@" $pppd_options  

然后针对ppp.sh进行分析,在里面使用脚本将参数打印出来,结果偶然间发现一旦脚本写错,整个脚本都不会执行,而非到错误那一行就会停止,这与正常的脚本流程不符,遂推断应该是在配置了demand的情况下,拼接的命令行有问题,导致后台pppd进程未启动。

由于openwrt并未使用ipv6,我对系统中的ipv6做了适当的裁剪,而脚本中还有ipv6相关的参数,遂将ppp.sh中的ipv6-up、down脚本两行删除,并在/etc/config/netwrok中增加如下命令:

option ipv6 '0'

删除下面两条

ipv6-up-script /lib/netifd/ppp-up \ 
ipv6-down-script /lib/netifd/ppp-down \ 

然后重启network(fuck openwrt)

此时如果没问题的话,系统会出现pppoe-wan虚网卡

最后增加一条路由,将数据送到虚网卡中,触发按需拨号

route add default dev pppoe-wan

当然此步操作可以由修改ppp.sh脚本完成,只需将脚本中的nodefaultroute改为defaultroute即可

至此,pppoe拨号使用正常,历时4小时。

综上记录
第一篇博客
以下为参考资料,主要参考资料为www.baidu.com www.bing.com www.sov5.cn


https://wiki.openwrt.org/doc/howto/vpn.client.pptp#on_demand_dial
http://blog.csdn.net/macrohasdefined/article/details/19006351

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值