linux下脚本拨号上网

时间:2008-11-15 02:55:41   来源:  作者:  点击:次  出处:技术无忧

既然是拨号上网,就不能不提到ppp(point-to-point protocol)协议.ppp协议提供了一种通过串行点对点联接传输数据报的方式.它由三部份组成:一种在串行封装数据报的方式,扩展联接控制协议LCP,和用来建立和配置不同网络层协议的家族网络控制协议NCP.封装方案由内核驱动代码来提供.pppd(ppp daemon)提供基本的LCP,认证支持,和建立和配置IP的网络控制协议NCP.一个ppp会话分为四个步骤:连接建立、连接质量控制、网络层协议配置、连接终止;提供了密码认证协议(PAP)或者邀请握手认证协议(CHAP)来保证连接安全.使用PPP你可以把你的 Linux PC连接到一台ppp服务器上并存取该服务器所连接的网络资源就如同你是直接连接在该网络上一般。你也可以把你的Linux PC设为一台ppp服务器,这样一来其它电脑就可以拨入你的电脑并且存取在你区域网络里的资源。

 当然,对于我们最终用户来讲,它是一个server/client模型的应用。本文主要讨论客户端怎样拨号上网,毕竟对于桌面系统的用户,ppp是日常生活的一个重要组成部分。在这里我想大家可能对windows下的拨号适配器的简单易用深表"敬佩",在这里我不想对其进行具体讨论,微软公司提供的TAPI可以让每一个windows下的程序员编写一个拨号程序不是一件困难的事,而在linux下呢?无论是gnome下的wvdial还是kde下的kppp,他们与纯脚本ppp-on相比不过是更直接,更易操作,称他们为图形化的拨号脚本并不为过,因为他们最终都是调用pppd这个功能强大大却不好驾驭的程序。有人告诉我kppp与windows下的拨号适配器功能差不多,不过我要告诉你kppp对pppd程序的依赖程度大过kppp作为一个独立的拨号程序,甚至/etc/ppp/options下的选项值对kppp的影响也是不可忽视的。

关于linux下脚本拨号的过程其实可适用于linux下所有的拨号过程,当然实际过程没有这么简单,如果有兴趣,请阅读源码)

1.由pppd程序调用chat会话程序
2.chat会话程序负责拨号,启动服务器端的pppd程序,验证身份,然后chat会话程序结束
3.由pppd程序继续chat会话程序的工作,与服务器端的pppd程序进行握手,建立ppp连接

ppp-on脚本包含有pppd程序,而ppp-on-dialer脚本含有chat会话程序,如果说pppd程序完成 的是连接建立、连接质量控制、网络层协议配置、连接终止,那么chat程序完成的是明文(textword)的验证,如果是拨入的服务器端需要密码认证协议(PAP)或者邀请握手认证协议(CHAP)来保证连接安全,那么还须在/etc/ppp目录下配置pap-secrets或chap-secrets文件。

关于ppp-on,ppp-on-dialer纯脚本拨号的配置

一个完整的ppp-on文件如下:(这里的实例及ppp-on-dialer文件均以163直通车为例)

TELEPHONE=163 # ISP提供的上网电话号码
ACCOUNT=163 # 账号名称
PASSWORD=163 # 登录密码
LOCAL_IP=0.0.0.0 # 本地IP地址,0.0.0.0表示由ISP动态分配
REMOTE_IP=0.0.0.0 # 远端IP地址,一般为0.0.0.0
NETMASK=255.255.255.0 # 子网掩码
export TELEPHONE ACCOUNT PASSWORD \
DIALER_SCRIPT=/etc/ppp/ppp-on-dialer \
exec /usr/sbin/pppd lock modem crtscts /dev/ttyS0 115200 \
asyncmap 0 kdebug 4 \
$LOCAL_IP:$REMOTE_IP noipdefault netmask $NETMASK defaultroute \
connect $DIALER_SCRIPT&

这个文件需要注意的地方:
a.注意"\"表示一行完整的结束。
b.尽量把kdebug的级别设置高一些,因为根据kdebug的级别来确定文件/var/log/messages的详细程度。

一个完整的ppp-on-dialer文件如下:

exec chat -v \
TIMEOUT 3 \
ABORT '\nBUSY\r' \
ABORT '\nNO ANSWER\r' \
ABORT '\nRINGING\r\n\r\nRINGING\r' \
ABORT '\nUsername/Password Incorrect\r'\ 此行可缩短由于账号密码不正确的验证时间
'' \rAT \
'OK-+++\c-OK' ATH0 \
TIMEOUT 30 \
OK ATDT163 \
sername:--sername: 163 \
assword: 163 \

大家说以上配置对吗?文件配置是对的,但是问题不少。我还是以实际问题来做具体分析吧(前提:无论外猫内猫均已装好,检查命令:echo "echo ATDT 163">/dev/modem),在/etc/ppp目录下键入了./ppp-on命令后,出现如下错误:

1.TR的亮,无拨号音。

解决办法:

文章评论

共有 0 位网友发表了评论 此处只显示部分留言 点击查看完整评论页面