Linux下的PPPoE连接


  今天忙乎了一上午,终于解决了一个一直困扰着我的问题,如何在Linux下连接上寝室提供的PPPoE连接。

  事情是这样的:

  我们寝室的连接是使用PPPoE或VPN连接,网络供应商建议使用PPPoE连接,因为其更为稳定。在Windows下是没有任何问题的,开始-控制面板-网络连接-添加一个新连接……就可以解决,在Windows VISTA上也已解决了。但是在Linux如何连接呢?

  下载了一个rp-pppoe (在 Fedora core 9上直接使用yum便可以安装),运行pppoe-setup之后便可以进行设置:用户名,密码,DSN服务器(自动获得)等等。但是键入pppoe-connect是连接不上的。一直显示接受不到PADO包。以前没有耐心看PPPoE协议,所以一直没有解决,看来今天早上得下个决心,无论如何也要接入Intenet!

  大致看了一下PPPoE协议,知道了PPPoE大致经过以下几个阶段:PADI-PADO-PADR-PADS- SESSION - PADT。那么我的问题到底出在哪里呢??通过使用pppoe -D ~/.log 并察看log文件,大致就是本机发出PADI包之后没有收到来自服务器的PADO薄,可是为什么呢?

  偶然的看到了我的最后一个包是一个RECV到的PADI包,这大概是别人上网时广播出的PADI,扫了一眼之后发现别人的包比我的大10多个字节,仔细比较一下,原来别人的TAG域多了一个poligon这几个字。通过在网上仔细搜索,发现这是PPPoE包的 service-name域和Host-Uniq域,可是在设置rp-pppoe时也没有询问我要提供这些信息阿。通过man pppoe - man pppoe.conf以及分析/sbin/pppoe-connect脚本之后知道了要在/etc/sysconfig/network-sripts/ifcfg-ppp0文件中添加SERVICENAME=poligon和PPPOE_EXTRA -U这些参数。

  最后的结果是,成功了!

相关内容