openwrt路由器-timeout while waiting for PADS

最近使用openwrt路由器进行PPPoE拨号的时候,经常出现“远程服务器无响应“的错误,log打印日志如下:

pppoe: Timeout waiting for PADS packets
Unable to complete PPPoE Discovery

我用openwrt配合闪讯的拨号插件来绕过移动的限制,起初我以为是移动的PPPoE服务器更新了算法导致我的路由器算出的账号与它的不匹配造成“服务器无响应“,然而事实是当路由器放置一段时间后它又会莫名其妙的连接上了,令人摸不着头脑。

一次偶然的尝试发现使用 macvlan驱动 可以“解决“这个问题,当时使用 syndial-luci-app 来配置macvlan(因为我懒,所以找了个现成的图形化插件),然而syndial的“掉线检测“和“掉线重连“功能又造成了一个问题:
接口莫名奇妙的掉线!!  查看日志发现接口会莫名收到“SIGN 15“,然后肯定是死翘翘了啊,寻思了半天发现是syndial的同步拨号检测掉线间隔时间太短导致网络连接不顺畅的时候误判为掉线!延长了掉线检测后以为问题修复了,然而在一次路由器断电重启之后, 又开始了邪恶的“服务器无响应“问题。

考虑到macvlan驱动建立的虚拟网卡与eth0.2的mac是不同的, 而PPPoE
回话过程是基于mac地址进行通讯的,所以怀疑问题出在mac地址上,打开百度搜索,果然没有啥有用的东西。打开bing ,发现openwrt论坛由大量同类问题的反馈!几乎我看到的所有的帖子都有提到这么一种解决办法:“修改接口的mac地址“, 例如 。最后发现了这么一篇文章:Probable FIX for “ADSL Tunnel Collapse

1) If you try to create too many PPPoE sessions within a certain time period with an (or in Australia’s case - Telstra’s) ADSL Access Concentrator, it would appear to block your ethernet MAC address. This is probably to prevent (ok, I’ll abuse the term) “hackers” from launching Denial Of Service attacks on the Access Concentrator. This is a reasonable tactic, this is the Internet remember.

PPPoE服务器在短时间收到同一设备多次连接请求后会启动一定的“防御措施“,例如封锁该设备并停止对该设备的响应。
这解释已经可是说是非常的合理好嘛!这正好也解释了为什么
一段时间后路由器又能自动拨号上网了

好了,就是喜欢这种有因有果的感觉,接下来是解决方案了:

#1.停止接口(我的接口名称是vwan1)
ifdown vwan1
#2.修改mac(我的网卡设备是macvlan1)
ifconfig macvlan1 hw ether $( echo "$(hexdump -n3 -e'/3 "00:60:2F" 3/1 ":%02X"' /dev/random)")
#3.重启接口
ifup vwan1

生成随机mac地址的方法可以参考这里

当然总不能每次开机都要进入SSH然后粘贴命令吧??!!
添加hotplug的iface脚本:

#!/bin/sh
if [$ACTION == "ifdown"]; then
    ifconfig $(uci get network.$INTERFACE.ifname) hw ether $( echo "$(hexdump -n3 -e'/3 "00:60:2F" 3/1 ":%02X"' /dev/random)")
    #echo "$ACTION on $INTERFACE at $DEVICE ifname=$(uci get network.$INTERFACE.ifname) >> /tmp/iface_event.log
fi


本文章由作者:佐须之男 整理编辑,原文地址: openwrt路由器-timeout while waiting for PADS
本站的文章和资源来自互联网或者站长的原创,按照 CC BY -NC -SA 3.0 CN协议发布和共享,转载或引用本站文章应遵循相同协议。如果有侵犯版权的资 源请尽快联系站长,我们会在24h内删除有争议的资源。欢迎大家多多交流,期待共同学习进步。

相关推荐