本帖最后由 chageaska 于 2011-6-16 21:32 编辑
如题。
本人使用的是北京某公司的5M小区宽带(双绞线入户,pppoe拨号),经测试能够实现双拨,但十分困难。要求是两次拨号请求必须发生在同一时刻,否则会出现认证失败的错误。
之前在 tomato dualwan 的论坛上看教程,似乎多数实现双拨的方案都是需要外接交换机,或者是在路由器身上用跳线自己接自己以打通vlan并提供拨号用的真实物理网口。我认为完全没有这个必要,因为pppoe本身是一种协议封装,在单个物理接口上实现多次pppoe认证和连接是完全行得通的。于是乎没再考虑用 tomato dualwan ,转为研究OpenWRT + macvlan + mroute的实现方式。(这中间也尝试过用multiwan和OPENWRT中文论坛某位高手开发的nwan组件,但前者调来调去一直未成功后来也没再深入研究,后者装上再改一些地方的设置后500GP就莫名其妙的变砖了,只能重刷系统。。。于是放弃,改用mroute)
我实现的主要步骤如下:
1、用opkg安装 ip、kmod-macvlan、m-route 这三个软件包。
2、手动配置 /etc/rc.local 、/etc/config/network、/etc/config/mroute 这三个文件,设定好虚拟WAN接口及负载策略。相关教程到baidu搜就有不少。
3、在系统防火墙配置中,将刚创建的几个虚拟WAN口加入wan这个区域(默认该接口是不属于任何zone的)
4、重头戏:如何让这几个wan接口能够同时在同一个时刻发出拨号请求?之前 tomato dualwan 论坛上曾有兄弟提出用 kill -SIGHUP 1,但这个方法在OpenWRT上是行不通的。我看了一下,负责pppoe拨号的进程是pppd,你创建了几个wan接口系统中就会有多少个pppd进程负责进行拨号/认证等工作。所以直接将这些pppd进程同时重启就行。如何能保证几个pppd进程能同时重启?用传统shell编程去一个一个杀掉后再一个一个运行的方式肯定不行!这里告诉大家一个简单的方法:执行命令 killall -SIGHUP pppd 即可。这样系统基本上能在同一时间(时间差非常小)处理进程重启和拨号,经过在我这边宽带环境中的测试,双拨成功率差不多有60%~70%的样子。三拨成功率更低,但也会有。
5、优化:虽然知道了上面的操作方法,但靠人工手动去执行那个命令将会是很烦的。所以这里我们使用crontab计划任务结合少量shell脚本来实现:
-----------------------------------------
#!/bin/sh
WANNUM=$(ip route|grep pppoe|wc -l)
while [ $WANNUM -lt 4 ]; do
killall -SIGHUP pppd
sleep 20
WANNUM=$(ip route|grep pppoe|wc -l)
done
-----------------------------------------
可以在/etc下创建一个文件nwantest.sh,将上述内容贴进去保存,然后chmod 755 /etc/nwantest.sh。
接着执行crontab -e,添加一行 */10 * * * * /etc/nwantest.sh 然后保存退出。
这样操作的意义是,系统启动完成后,每隔10分钟检查一下pppoe的拨号状态,如果双拨没能成功,则断开后重复拨号直至双拨成功为止。
以上便是我研究得出的一点经验,供大家参考。
请不要胡乱输入以及粘贴、复制等方式灌水
请尊重作者、并共同维护网站的正常阅读,否则账户将会被限制发帖、回帖,并且积分可能会被清零,站内短信以及阅读权限等都会受到影响,谢谢。
具体限制方式:https://www.right.com.cn/forum/thread-8307840-1-1.html
|