Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1858997
  • 博文数量: 343
  • 博客积分: 10342
  • 博客等级: 上将
  • 技术积分: 2892
  • 用 户 组: 普通用户
  • 注册时间: 2008-08-15 12:34
个人简介

你必须非常努力,才能看起来毫不费力!

文章存档

2012年(3)

2011年(5)

2010年(2)

2009年(40)

2008年(293)

分类: LINUX

2008-09-10 18:23:02

Linux下用CDMA modem拨号上网

(陈云川 UESTC,成都)

 

本文将说明如何在Linux下用CDMA modem完成拨号上网的工作。首先,读者需要对PPP协议有初步的了解,比如,读者至少应该知道LCPNCP是什么,以及PAPCHAP是做什么的;其次,读者可能需要安装pppdchat两个工具,通常系统中默认都是安装了这两个程序的。如果没有安装pppd,可以到下载最新版本。本文中作者所用的pppd版本为2.4.1chat版本为1.22

 

本文所使用的是联通掌中宽带包月2G流量CDMA上网卡。连接所需的拨号号码为#777,用户名为card,口令也为card。联通的服务器名为pdsn

 

Linux下,所有与ppp相关的配置文件都在/etc/ppp/目录下。其中/etc/ppp/pap-secrets文件保存的是PAP认证协议所需的用户名和口令,而/etc/ppp/chap-secrets文件保存着CHAP认证协议所需的用户名和口令。根据上面的说明,这两个文件的内容分别如下所示:

 

文件/etc/ppp/pap-secrets的内容(最后一行是作者手动添加的):

# /etc/ppp/pap-secrets

# Secrets for authentication using PAP

# client        server  secret                  IP addresses

####### redhat-config-network will overwrite this part!!! (begin) ##########

####### redhat-config-network will overwrite this part!!! (end) ############

card            pdsn    card

 

文件/etc/ppp/chap-secrets的内容(最后一行是作者手动添加的):

# /etc/ppp/chap-secrets

# Secrets for authentication using CHAP

# client        server  secret                  IP addresses

####### redhat-config-network will overwrite this part!!! (begin) ##########

####### redhat-config-network will overwrite this part!!! (end) ############

card            pdsn    card

 

当服务器要求pppd给出用户身份认证信息的时候,如果协商采用PAP认证方式,pppd将到/etc/ppp/pap-secrets文件中取得用户口令;如果协商采用CHAP认证方式,则pppd将到/etc/ppp/chap-secrets文件中取得用户口令。

 

/etc/ppp/peers/目录下,是每个pppd连接所需的选项文件,每个文件对应一个连接,互不干涉。本文中,在/etc/ppp/peers/目录下创建了一个unicom文件,其内容如下:

# /etc/ppp/peers/unicom

# this is ppp script for use chinaunicom's CDMA data service

#

ttyS0

115200

crtscts

connect '/usr/sbin/chat -v -f /etc/ppp/chat/unicom'

debug

nodetach

ipcp-accept-local

ipcp-accept-remote

defaultroute

user card

 

解释一下这里的pppd选项:

l      ttyS0                                   表示CDMA modem连接到串口/dev/ttyS0上;

l      115200                                表示串口波特率;

l      crtscts                                表示采用modemrtscts信号线用于流控;

l      connect '/usr/sbin/chat -v -f /etc/ppp/chat/unicom'              表示用chat程序完成连接建立的会话过程,会话过程通过/etc/ppp/chat/unicom文件控制

l      debug                                  表示令pppd工作在调试模式

l      nodetach                             表示不要让pppd启动之后转为后台进程

l      ipcp-accept-local                  表示接受服务器分配的本机IP地址

l      ipcp-accept-remote               表示接受服务器指定的服务器IP地址

l      defaultroute                         表示把服务器指定的服务器IP地址作为默认路由

l      user card                             表示认证时的用户为cardpppd据此从/etc/ppp/pap-secrets或者/etc/ppp/chap-secrets文件中取得card用户对应的口令

 

以上就是对/etc/ppp/peers/unicom的说明。另外,最后还需要的一个文件是/etc/ppp/chat/unicom,这个文件用于告诉chat程序如何完成连接建立过程。该文件内容如下:

# /etc/ppp/chat/unicom

# this is the chat script for unicom

ABORT "NO CARRIER"

ABORT "NO DIALTONE"

ABORT "ERROR"

ABORT "NO ANSWER"

ABORT "BUSY"

TIMEOUT 120

"" at

OK atdt#777

CONNECT

 

几个ABORT行的意思是如果modem返回诸如BUSY之类的信息,则取消chat过程,连接失败;TIMEOUT 120表示连接的超时值为120秒。首先发出一个at命令,期待modem返回一个OK,然后拨号#777,期待modem返回CONNECT,如果modem返回了CONNECT,则表明连接建立成功。

 

以上就是拨号所需要的四个文件的情况。通过下列命令拨号:

# pppd call unicom

 

如果拨号成功,将生成一个新的网络接口ppp0。服务器将自动为ppp0分配一个IP地址。然后,就可以通过这个连接上网了。

 

后记:作者试图通过Multilink PPP获得更大的带宽,但是似乎联通并不支持这一功能。

 

参考文档

[1] man pppd(8)

[2] man chat(8)

阅读(826) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~