天天看點

Linux下pppd撥号腳本配置(轉載)

摘要

    本文主要介紹了嵌入式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 ---- 指定連接配接使用的裝置,例如:ttyS0、ttyS1等

57600 ---- 設定連接配接使用的控制字元傳輸速率,可以設定為57600、115200等

debug ---- 如果需要加入調試資訊,就加入參數debug

logfile /var/ ppplog ---- 将連接配接過程中的資訊輸入到某個檔案中

mtu 1500

-detach

noipdefault ---- 不使用預設IP就可以加入參數noipdefault

defaultroute

usepeerdns ---- 使用伺服器端協商的DNS就可以設定參數usepeerdns

lcp-echo-failure 4 ---- 當連續4次沒有收到發出的LCP回聲請求時,就認為伺服器端已不再響應,就退出執行。這裡的失敗次數可以靈活來決定。

-ccp ---- 不使用壓縮控制協定

-vj ---- 關掉式IP頭壓縮

-chap ---- 不使用chap鑒權

-mschap-v2 ---- 不使用mschap鑒權

user

hide-password

connect "/usr/bin/chat -v -t6 -f /var/ chat" ---- 制定了要使用的chat腳本的位置。加上參數-v 告訴 chat指令将其所有的輸出/入拷貝到系統記錄裡(通常是 /var/log/messages)。-t 6 指定了執行chat該指令的時間為6s。chat腳本的位置可以位于/etc/目錄下,也可以位于/var下,這個可以更加需要靈活設定。 persist --- 永久連結(自動重撥) crtscts --- 告訴ppp使用modem的硬體流量控制 modem --- 使ppp使用DCD信号來判斷連接配接是否正常,有無掉線現象 deflate --- 使pppd使用defalte壓縮方式 idle --- 設定了一個時間限制,當在300秒的時間内沒有資料傳送,就斷開連接配接 lock --- 則建立一個鎖定檔案,其他程式在發現存在這個檔案後,就能得知相應的序列槽已經被使用。 demond --- 參數告訴pppd停留在背景,監視網絡資料,一旦有要求就立即進行連網,逾時後就斷開連接配接,但pppd仍然停留在背景等待下次資料傳送

其他的參數具體含義可以參照參考PPPD2.4.4 中options.c中注釋:

int debug = 0;  

int kdebugflag = 0;  

int default_device = 1; 

char devnam[MAXPATHLEN]; 

bool nodetach = 0;  

bool updetach = 0;  

int maxconnect = 0;  

char user[MAXNAMELEN]; 

char passwd[MAXSECRETLEN]; 

bool persist = 0;  

char our_name[MAXNAMELEN]; 

bool demand = 0;  

char *ipparam = NULL; 

int idle_time_limit = 0; 

int holdoff = 30;  

bool holdoff_specified; 

int log_to_fd = 1;  

bool log_default = 1; 

int maxfail = 10;  

char linkname[MAXPATHLEN]; 

bool tune_kernel;  

int connect_delay = 1000; 

int req_unit = -1;  

bool multilink = 0;  

char *bundle_name = NULL; 

bool dump_options;  

bool dryrun;   

char *domain;  

int child_wait = 5;  

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連接配接。

繼續閱讀