摘要
本文主要介紹了嵌入式linux系統下使用pppd 2.4.4來進行ppp撥號需要使用的指令碼是如何配置的,配置項的含義,同時也說明了如何來配置引數,實現ppp撥號上網。
一.問題提出
嵌入式linux作業系統下,如果要進行ppp連線,就需要配置撥號要使用的連線指令碼。這些指令碼引數就決定了pppd的行為,會對ppp連線產生很大的影響。所以需要對這些指令碼的引數以及具體含義有所了解。
二.解決思路
和ppp連線關係密切的有兩個指令碼是chat和options兩個指令碼。其中,chat指令碼是用來進行at呼叫和控制的指令碼,而options指令碼就影響ppp連線的。
1. chat指令碼
乙個簡單的chat指令碼有下面的結構:
"" at
ok atdt dialnumber
connect ""
乙個chat指令碼都是由字串對來組成的。前面的字串都是期望獲取的串,緊跟的是傳送的字串。這個指令碼每一項的具體含義是這樣的:
1) modem期望空字串。這句話的意思直接理解就是modem不管收到什麼字串,先發出字串at;
2) 期望收到「ok」字串,然後傳送字串「atdt dialnumber」
3) 如果收到「connect」,就不再傳送,認為資料鏈路已建立連線。
這樣的chat指令碼是最簡單的,如果需要進行超時控制,就可以加入如下字段:
timeout 10
如果要增加對特殊情況的處理,就加入下面字段:
abort busy
abort no answer
abort ringing
這三行語句的意思是:如果收到字串「busy」、「no answer」、「ringing」就退出執行。
所以在考慮到各種特殊情況下,配置乙個ppp連線的chat指令碼就可以像下面這樣:
timeout 30
abort busy
abort no answer
abort ringing
"" at
ok atdt dialnumber
connect ""
2.options指令碼
options指令碼的內容,為ppp連線指定了連線使用的裝置、使用的控制字元傳輸速率、指定了硬體加速、溢位控制等。
例如下面的options指令碼:
ttys0
57600
debug
logfile /var/ ppplog
mtu 1500
-detach
noipdefault
defaultroute
usepeerdns
lcp-echo-failure 4
-ccp
-vj-chap
-mschap-v2
user
hide-password
connect "/usr/bin/chat -v -t6 -f /var/ chat"
在連線開始前,ppp需要獲取使用哪種ppp裝置,因此就首先需要在options指令碼中指定連線使用的裝置,例如:ttys0、ttys1等,同時需要指定裝置的位置。linux系統下就可以指定為
/dev/ttys0、/dev/ttys1……
緊接著可以設定連線使用的控制字元傳輸速率,可以設定為57600、115200等。這個速率由modem的硬體決定。
如果需要加入除錯資訊,就加入引數debug。需要將連線過程中的資訊輸入到某個檔案中,加入下面的引數:
logfile /***/logmessages
不使用預設ip就可以加入引數noipdefault,使用伺服器端協商的dns就可以設定引數usepeerdns。
lcp-echo-failure 4 這個引數的意義在於:當連續4次沒有收到發出的lcp回聲請求時,就認為伺服器端已不再響應,就退出執行。這裡的失敗次數可以靈活來決定。
-ccp –vj –chap -mschap-v2 「-」號表示不使用該項功能。這幾個引數的具體意義是分別是:不使用壓縮控制協議、關掉式ip頭壓縮、不使用chap鑑權、不使用mschap鑑權。如果需要使用這些配置選項,就可以去掉「-」號,開啟這項功能。
最後一句:connect "/usr/bin/chat -v -t6 -f /var/ chat"。這個引數行就制定了要使用的chat指令碼的位置。加上引數-v 告訴 chat命令將其所有的輸出/入拷貝到系統記錄裡(通常是 /var/log/messages)。-t 6 指定了執行chat該命令的時間為6s。chat指令碼的位置可以位於/etc/目錄下,也可以位於/var下,這個可以更加需要靈活設定。
其他的引數具體含義可以參照參考pppd2.4.4 中options.c中注釋。
3. 鑑權指令碼
一般情況下,ppp連線是需要進行身份認證的。籤權方式有兩種,一種是pap鑑權,另一種是chap鑑權。鑑權需要的使用者名稱和密碼是存放在pap-secrets和chap-secrets指令碼中,以如下方式存放:
username * password
需要進行鑑權時,通過在options指令碼中指定鑑權方式為pap或chap,ppp模組就會從pap-secrets和chap-secrets指令碼中讀出使用者名稱和密碼,附加到ppp的鑑權包中,傳送到伺服器端進行身份認證。
4. ppp撥號過程與指令碼之間的關係
指令碼設定成功以後,怎麼和pppd2.4.4一起工作呢?這個需要從pppd程式的主函式入手。
這個過程是這樣的:
pppd程式啟動以後,就會按照pathname.h中所指定的文家位置去尋找options指令碼檔案。這個可以按照需要指定檔案的位置,確保pppd能夠準確找到該檔案。
pppd找到options檔案後,按順序讀入引數行。在這裡,就可以獲取系統要使用的是哪個裝置來進行聯網、裝置的速率是多少。
pppd 將配置的引數解析為程式當中的全域性變數識別符號,進行pppd連線控制。
三.實踐情況
下面是ft282 上的ppp連線使用的options、 chat和pap-secrets指令碼。
options:
connect "/usr/bin/chat -v -t6 -f /var/ppp/td-scdma_chat"
ttyusb0
115200
debug
logfile /var/log/ppplog
mtu 1500
-detach
noauth
noipdefault
defaultroute
usepeerdns
crtscts
lock
lcp-echo-failure 4
-ccp
-vj-chap
-mschap-v2
user
hide-password
chat:
"" at
ok atdt*98*1#
connect ""
pap-secrets:
wap *wap
經過在ft282上進行測試,發現能夠順利進行ppp連線。
四.效果評價
五.推廣建議
對手機或接入盒的ppp 網路連線具有一定的參考價值。
參考資料
1. ppp-howto
2. ppp 2.4.4
pppd撥號指令碼配置
ppp撥號指令碼配置 摘要 本文主要介紹了嵌入式linux系統下使用pppd 2.4.4來進行ppp撥號需要使用的指令碼是如何配置的,配置項的含義,同時也說明了如何來配置引數,實現ppp撥號上網。一 問題提出 嵌入式linux作業系統下,如果要進行ppp連線,就需要配置撥號要使用的連線指令碼。這些指...
華為PPP配置
拓撲結構 pap模式 b驗證方 a被驗證方 router b system view huawei aaa huawei aaa local user victory password cipher huawei huawei aaa quit huawei int s0 0 0 huawei se...
PPP身份認證實驗配置 ppp
1.按照拓撲圖配置好兩台路由器的介面ip位址 2驗證路由器之間的連通性 3.配置ppp協議 方法一,pap雙向驗證 router config hostname r1 設定主機名為r1 r1 config username r2 password cisco 建立使用者r2,密碼cisco r1 c...