问题描述
pppoe可以连接,ifconfig可以看到ppp0接口,一切正常,只是不能上网。
解决办法
使用如下命令查看路由表:
|
|
正常情况下返回的结果中应该有如下内容:
default * 0.0.0.0 U 0 0 0 ppp0
如果没有,可手工添加:
|
|
如果可以上网,就成功了。
使用如下脚本在pppoe连接成功时自动添加路由表项:
|
|
将上述内容保存成名为01-route.sh的文件,权限755,放到/etc/ppp/ip-up.d目录下。
然后创建以下两个脚本:
|
|
|
|
分别命名为on和off并复制到环境变量PATH下,以后即可使用这两个脚本建立和注销pppoe连接。
原因分析
问题的原因是pppoe连接建立时,没有自动往路由表中添加相关路由项。
一般情况下,如果使用的是ppp做pppoe连接,其配置文件中默认会开启defaultroute选项,该选项的作用就是在pppoe连接建立时自动添加路由表项,但在路由表中已经存在default项时,该操作将不会进行。
一般有两种情况会使路由表中在pppoe连接建立前就存在default项。一种情况是网络接口配置中设置了route,如在archlinux下,就是rc.conf文件中的gateway项。如果使用的是静态地址,则需要做这种配置,但对于大多数使用DHCP动态分配IP地址的情况,这项配置则不需要。另一种情况就是ADSL Modem自带路由功能,在分配IP给计算机时也会自动添加一条路由表项。