今天忙乎了一上午,終於解決了一個一直困擾著我的問題,如何在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這些參數。
最後的結果是,成功了!