在DD-WRT上调整PPPoE拨号参数

  继上次将路由刷到dd-wrt后,一直琢磨着如何绕过网管对路由的限制。开始以为是对非windows主机拨号都有限制,后来用wireshark抓包发现只是接入设备对echo请求没有响应,导致超时后自动断开。在windows下默认不发送请求,只回应来自对方的echo请求,大约6秒一次。找到问题的根源后,在ubuntu下修改了ppp配置选项,文件位于/etc/ppp/options,找到如下两行:

lcp-echo-interval 30

lcp-echo-failure 4

  这两个参数表示在一个lcp链路协议中,pppd会每隔30秒发出一个echo请求包到对方。一般来说对方在收到echo请求后需要回应一个echo应答。如果发送4次请求后都没有收到有效的回应,pppd便会中断这次连接,也就是在两分钟左右就会断网,与之前遇到的现象一致。既然用不到这两个参数,就可以在前面加#号注释掉,保存后重新拨号一切正常了。

  既然在ubuntu下成功了,那基于linux系统的TEW-652BRP路由器应该也是可以这样搞定,在web管理界面将路由器的广域网设置为PPPoE拨号上网,输入正确的账号密码,保存后再通过ssh登录,查看进程发现pppd已经运行了,后面的参数可以看到调用的配置文件路径。

root@Dorole Network:~# ps | grep ppp
1074 root      1324 S    pppd file /tmp/ppp/options.pppoe

  打开/tmp/ppp/options.pppoe

root@Dorole Network:~# cat /tmp/ppp/options.pppoe
plugin /usr/lib/rp-pppoe.so
nic-eth1
noccp
nomppc
noipdefault
noauth
defaultroute
noaccomp
nobsdcomp
nodeflate
nopcomp
nomppe
usepeerdns
user ‘…’
password ‘…’
default-asyncmap
mtu 1492
mru 1492
persist
lcp-echo-interval 5
lcp-echo-failure 10

  最后面的两行就是要修改的地方了,不过这里要修改比较麻烦。/tmp目录下的东西是在开机后自动生成的,每次重启都要修改那也太麻烦了,/etc/config目录下也有个配置文件存在,且无法修改,后来想把固件在电脑上解开修改完再刷进去,但是现有的工具只支持linksys的固件,拿源代码编译更麻烦。最后想到dd-wrt是支持脚本的,于是弄了一段shell让它每次开机都自动运行。

cat /tmp/ppp/options.pppoe | sed -e "s/lcp/#lcp/g" > /tmp/ppp/options.pppoe.new
if [ -f "/tmp/ppp/options.pppoe.new" ]; then
killall redial
killall pppd
sleep 10
/usr/sbin/pppd file /tmp/ppp/options.pppoe.new > /dev/null
fi

  将options.pppoe文件中的lcp替换成#lcp也就是注释了那两个参数,重启pppd加载新的配置文件,经过这样处理后上网正常了。

折腾TEW-652BRP

  前两天订的TEW-652BRP收到了,原装2db的天线换成了6db,小巧的机身也显得特别长。卖家刷的是D-Link 615c固件,在web管理界面看了一番,决定刷成dd-wrt,可以在管理界面直接从615c升级到dd-wrt,也可以进工厂模式刷,工厂模式是用来修复刷错固件而导致无法启动用的,也是比较完整的刷机,在这里我选择从工厂模式刷,工厂模式刷的固件和普通升级固件有点不同,都可以在官网找到。

  首先将本地连接ip改为:192.168.10.*,长按路由器的复位键,并插入电源,用浏览器打开http://192.168.10.1,这时会出现一个简易上传页面,选择下载的固件直接上传就可以了。刷完后页面不会自动刷新,约半分钟后通过无线网络可以发现一个“dd-wrt”的接入点,这时候就成功了,将本地连接ip改回自动获取,获取到ip后就可以登录dd-wrt的管理界面了。不得不说dd-wrt功能还是蛮强大的,支持功率调节,万能中继,SSH管理,等等一大堆,留着以后慢慢折腾。

  本想买个这玩意就不用拖根网线满屋子跑,躺床上玩也方便,结果那恶心的网管在接入设备上做了手脚,限制非windows机器拨号,表现为pppoe连接后十几秒后自动断线,在我的ubuntu linux系统下同样也是会自动断开,dd-wrt同样是嵌入式linux系统,这点道是表现一致。没办法暂时将接入网线插在Lan端口,将路由器当无线交换机使,电脑再拨号上网。虽然能达到目的,但多一个步骤总是不爽。

  这个是路由器配置截图,看上去还不错。

image