PPPoE撥號除錯

2021-05-23 08:59:35 字數 1841 閱讀 9004

因為公網和

230專案的

pppoe

都已調通,而應用於

1800

專案的pppoe

沒有做大的變動,故

pppoe

**流程不會出問題。

建立撥號後,附著,然後撥號,失敗,撥號始終顯示『正在連線,通過

wan微型埠』,通過

etherale

抓pppoed

包顯示,客戶端一直在發

padi

廣播包,而我們的

server

**沒有回

pado

包,此時根據

console

視窗log

列印查到我們解析

padi

包時,根據其協議域值

switch

處理時進入了

default

分支(異常分支例

default

分支一定要加列印,便於追根溯源),重跑,列印解析出的

padi

包協議域值是

0x6388

,而實際發現階段包的協議域值是

0x8863

,懷疑是大小端問題,

pppoe

的**一直是大端**沒有轉過,故

arm板卡是小端的。

230專案的板卡也是

arm的,故

230的

pppoe

大小端轉換可以參考。

**中,組包時,

uint8

字段不用轉,

uint16

和uint32

字段需要用

ntohs

和ntohl

進行轉換,主要是

packet payload

長度和type

值等,需對比所有原始檔,開始只對比了

pppoe_attach.cpp

,而忽略了

fsm.cpp

,lcp.cpp

和ipcp.cpp

,不全面對比只是想當然地改一點跑一次肯定會事倍功半!

轉過padi

包的協議域值為大端後,

padi

包處理函式處理錯誤,在各錯誤分支增加列印後,發現函式入口處判斷當前未附著,原因是

dm**在附著成功後沒設

pppoe

裡的附著標誌位。

修改後,撥號仍失敗,抓包顯示

lcp發的配置請求都被拒絕了,檢視

lcp配置請求包的值,發現包淨荷的長度值異常,有

2000

多位元組,超過最大值,原因為

fsm.cpp

中此值未轉大端。

修改後,撥號成功但無任何圖示顯示,需要在網路連線裡重新整理才能看到已連線,檢視抓包發現在

ipcp

協商完成後,我們會異常收到乙個

ccp包,不知是否因此產生影響,原因未知。

檢視撥號成功後的

ip位址資訊顯示,發現為

3.1.168.192

,與核心網分配的(

pppoe從dm

讀取的)

192.168.1.3

正相反,仍是大小端問題,故在

ipcp_init

處轉此ip

值為大端後,顯示正確。

遺留問題:

1,蒙奇奇大小端轉換巨集

2,dm

在debugtools

裡不列印

3,撥號成功後的

ccp包

4,為什麼必須重新整理後才能顯示已連線

5,230pppoe

**修改點

**學習:

1,列印乙個結構體變數的碼流,只需定乙個指標指向它,然後列印指標即可

Debian 下 PPPOE撥號設定

3.8.6 ppp 拔號設定 安裝 pppconfig 軟體包,設定 ppp 撥號訪問。apt get install pppconfig pppconfig 按提示配置 ppp 撥號 adduser user name dip 允許 user name 進行 ppp 撥號訪問 使用者 user n...

ubuntu下的pppoe撥號工具

作者 yu tao ubuntu下,沒有fc自己帶的system config network工具,設定起adsl撥號比較麻煩。ubuntu下目前的撥號方式主要有 1 pppoeconf apt get install pppoeconf pppoeconf 然後進入console模式的配置項,輸入...

華為PPPoe撥號上網實驗

華為配置pppoe 配置裝置名字 配置pppoe客戶的使用者名稱和密碼 local user xiaoming service type ppp 配置使用者的接入型別為ppp inte ce virtual template0 進入虛模板介面 ppp authentication mode chap...