今天服务器的ADSL突然拨不上号了,总是提示:No response from server,开始以为是modem出了问题,于是将modem拿到windows xp上,用xp自带的PPPoE连接拨号,一拨,结果连上了,但在验证用户名和密码时大约用了15秒左右,以前都是一闪而过,现在竟然用了这么长的时间,看来电信那边的服务器又有点问题了,但还好总算能连上。

再把Modem换到FreeBSD上,还是连不上,于是想到,ppp是在进行auth时提示No response from server,而在windows xp上,正好验证的时间也比平时长了很多,会不会是ppp的问题呢?打开ppp的源文件/usr/src/usr.sbin/ppp/auth.c,发现有一个常量DEF_FSMAUTHTRIES,在/usr/src/usr.sbin/ppp/defs.h中找到它的定义如下:

#define DEF_FSMAUTHTRIES 3

原来ppp在进行auth验证时只重试三次就退出,于时将DFS_FSMAUTHTRIES改成10,重新编译安装ppp,再拨号,查看ppp日志,发现开始一切很快,在进行身份验证时日志停止了10多秒左右,终于看到: Pap Input: SUCESS (),ADSL通了。

从这次的故障排除看来,问题是出在身份验证上,这可能是因为电信的服务器响应太慢,在改源码之前,身份验证总是2-3秒就过去了,然后就显示 No response from server,而更改后,系统一直尝试10次,后来就收到了服务器的验证返回信息。