ppp拨号脚本配置

2019-07-13 00:25发布

摘要
    本文主要介绍了嵌入式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