之前已经成功做成几个pppoe server了,但是这几天打算改写插件,用虚拟机做pppoe server设置环境时,居然总是出错。环境:RAS4
现象1:服务器启用后,第一次客户机建立连接时会提示正在校验密码,之后出错,再重拨就总是设备已经断开或无法连接。
尝试办法:想起我只是更换了pppd为2.4.3,没有更新rp-pppoe,于是重新编译安装rp-pppoe。
现象2:客户端同样提示无法连接,但是在/var/log/messages里看到LCP:sending config timeout(原来的信息我没有记录,大概就是这个意思了),上网找也只是找到同样的问题,没有解答。
尝试办法:查看进程,发现多了几个进程,都是/usr/local/sbin/pppoe,难道是RAS4自己用adsl拨号到自身了?
试着chmod 0 /usr/local/sbin/pppoe,之后再建立连接,出现下面的故障提示:(/var/log/messages里)INPUT/OUTPUT IO Error,但是一chmod 755 /usr/local/sbin/pppoe,那么之前的错误信息又会出现,无解。
今天早上再试的时候,与之前做好的pppoe服务器比较,发现几个不同:虚拟机我只给了一块网卡,但是做好的都有两块网卡(其实这个我倒觉得应该不是关键);chap-secrets文件丢失了,因为在重新编译安装pppd 2.4.3时,安装程序自动把它改名为chap-secrets.rpmsave了(奇怪,我是源码编译安装,怎么成了rpmsave?)。
于是关闭虚拟机系统,增加一块虚拟网卡,重启后,把chap-secrets.rpmsave改名为chap-secrets,往里面增加一个用户
guest * 123 *
建立连接,成功!
呵呵,于是赶紧测试我改写的插件,结果又出错了,不过这次是用户名和密码错误,提示信息是no pap info found,再细想下,因为我的插件是使用mysql作为帐号存储的,但是我用的可能是chap信息啊,那可能是配置文件里没有相应对应起来,于是修改pppoe-server-opotions为(因为之前有些文章说这个pppoe-server-options不需要修改,所以之前忽略了)
# PPP options for the PPPoE server
# LIC: GPL
mtu 1490
mru 1490
lcp-echo-interval 8
lcp-echo-failure 5
require-chap
#default-mru
default-asyncmap
ms-dns 202.96.128.86
#noipdefault
noipx
nodefaultroute
#noproxyarp
noktune
netmask 255.255.255.255
使用 /usr/local/sbin/pppoe-server -k -u -I eth0 -p ippool -N 1024 -C pppoetest重新运行pppoe-server,再拨号,这次成功了。(注意,如果直接使用pppoe-server -k ……,你可能得到一个错误信息,说k选项无效,其实是因为你没有带上路径时,用的是/sbin/pppoe-server,而这个文件是之前系统带的rp-pppoe留下的,我们编译后生成的pppoe-server在/usr/local/sbin下,默认的那个是没有带-k选项的,所以必须带上路径,或者cp /usr/local/sbin/pppoe-server /sbin/)
对了,还有个故障的原因是没有chmod u+s /usr/local/sbin/pppd,这样的话也会产生错误。