一、关于本文
与通常的Linux ppp相关文档(如Linux ppp Howto等)不同的是,本章的目的是让你能够从自己实际的应用需求出发,以尽量短的时间来完成系统方案的预算,拟定并尽快实施。由于本章尽量通过雅俗共赏的语句,并采用了详尽的"实例操作日记方式"成文,因此,无论您是一个发烧的玩家,小IT部门主管或企业级ITO,通过阅读本章,都应该能让你的ppp 服务器跑起来。但请注意,如果您需关注更多的ppp相关细节。请浏览“资源”一节内提供的文章链接。
另外,因为市面上的硬件及通信环境的不同,所以文中的一些数据虽然是我在测试中的真实数据,但或许并不与您的实际相符。 鉴于当前IT通信手段的不断变迁,虽然在作者编撰本文时尽力介绍当时最流行的硬件与软件解决方案,但或许它会很快过时或已经过时了。同时,作者也不能保证本章中不留有任何错误,因此,如果你有更好的解决方案或发现了其中的任一错误,都请不吝赐教于作者本人,以使能在下一版本中更新与排错。谢谢!
二、我在什么时候需要ppp?为什么选择Linux下的ppp?
在以下的情况中你可能需要用到PPP Server!
你是小有名气的电脑发烧友,通过多年耕耘收集了数十GB的程序、驱动与资料,但你没有手提式电脑且需经常为周围的朋友分忧解难,虽然他们也许能方便地连接到INTERNET,但你更情愿拨入自家的服务器,因为你对自家的服务器数据结构了如指掌......(见图)
你是一个小小的部门信息主管(如银行客户服务部)兼任技术员,同时经费有限;但是那些分散各处的员工或流动客户总是抱YUAN你,说应该能在需要的时候拨入本部门的服务器,以使交流与共享变得更顺畅......(见图)
刚愎自用的掘土机司机挖断了证券总公司与子公司间的光缆,但行情传递与交易请求如箭离弦刻不容缓,所幸的是,那挂在半空的电话线还能使其相互联系,于是你紧急启用你的备用PPP Server......(见图)
你与电信部门有密切联系(支局长是你爸),又有融资渠道,想办个ISP赚点菜金买座房......(虽然现在单纯的ISP很难赚钱了)......(见图)
但我为什么要选择Linux下的ppp?
感谢这世上有个LINUX,它与UNIX相比倒也没有什么特别之长处。使用它仅是因为它是免费的,于是能用省下来的钱(可以省好几万RMB/每份UNIX授权费用)用来购置好一点的服务器,这真是我等福音。同时实践也证明,用LINUX在有自身技术支持下,尽可放心一用。 有这等好事,你又何乐而不为呢?
三、什么是PPP?
PPP(点对点协议)是在直接连接的串行链路上(例如空调制解调器电缆)上创建和运行IP(网际网协议)和其他网络协议的一个方案。一个直接连接的串行链路,包括通过telnet建立的链路或者是一个用调制解调器和电话线路(当然也包括诸如ISDN之类的数字线路)链路。 (以上取自宫敏博士的译文)
通过实例操作与实践应用,我们可以这样来理解PPP: ppp是一种协议,它是基于流的计算机联网工具,它确定一端到另一端之间(能且只能控制两端)数据的传送与控制的规则。它提供在串行线上传送和接收IP数据包的功能,由此可使TCP/IP网络应用程序(如rlogin和telnet)在串行线上的使用。一般来说,PPP常用于将家中或小型办公室的PC连到另一工作地点的计算机或连到提供Internet服务的(ISP)计算机以便进行文件传输,远程注册,访问WWW及其它的TCP/IP或Internet功能。
使用PPP的原因是因为本地主机和远程主机之间无法实现以太连接或令牌环连接,但可以采用串行线连接。这两端之间可以用调制解调器(专线或拔号方式)或直接线性相连。这样的连接方式决定了他的优点与劣根,优点是原理简单,连接方便且能满足部分应用需求,但是先天不足之处,正是它的非广播性与蜗牛般(相对而言)的速度。同时,PPP仅支持异步通信。
当然,除了PPP以外,SLIP也可用于串行线通信。在此并不想讨论PPP与SLIP之间的差别。
本章的一些术语:
连线(line):指串行线,即数据传输所经过的物理介质。
链接(link):指PPP链接,即数据传输所经过的两台主机之间的虚拟连接。
接口(interface):指PPP接口,即IP驱动程序由数据报所经过的抽象实体。
四、ppp准备就绪
ppp 硬件准备就绪
1.无多端口卡
如果你不打算同时使用超过2条的ppp连接线路,那就相当简单,你只要准备一至二个调制解调器以及他们各自的与电脑的连接线即可,若需通过公用电话交换网,则还需再加上一至两条能拔通ISP或对方pppserver的电话线(包括ISDN等),如果两个pppserver之间距离较近(实践证明此数值应短于5OM),那么,你还需要另外的一些连线。
连线?连线!救救我,我糊涂了。
是的,在此有必要说说那些连线。
我们在购置modem时,包装盒内会有一条必要的与计算机之间的连线(如果是内置式的则没有).虽然现在厂家的服务工作已经为你想的比较周到了,(如现在普遍用一端是双接头线9孔和25孔的串行端头,另一端则是固定的连接modem的9孔或25孔的串行端头),但不幸的是,你的那条较老的连接线并不适用于你现在的实际情况,(顺便提及:现在市面上有一些淘汰下来的,当初都卖151美元的旧式14.4kbps的外置调制解调器,经我试验,效果不错,但他们都没有提供那条线。),这时你作为一个标准的DIY,拿起焊枪,自己焊一条吧。
具体的modem与pc之间的端口连线焊接图见下所示:
PC机9针串口 1 2 3 4 5 6 7 8 9
MODEM25孔接口 8 3 2 20 7 6 4 5 22
PC机25针串口 2 3 4 5 6 7 8 20 22
MODEM25孔接口 2 3 4 5 6 7 8 20 22
注:在LINUX下,2、3、7、8、20针是必须的。也可以用市场上现成的平行联结线,即1-25针各各相联。
而pc与pc串口间的直接连线焊接图示意如下:
PC机9针串口 2 3 4 5 6 7 8
PC机9针串口 3 2 6 5 4 8 7
PC机9针串口 2 3 4 5 6 7 8
PC机25针串口 2 3 6 7 20 5 4
PC机25针串口 2 3 4 5 6 7 20
PC机25针串口 3 2 5 4 20 7 6
顺便提及: 并口与并口之间的直接连线焊接图示意如下
PC机25针并口 2 3 4 5 6 10 11 12 13 15 25
PC机25针并口 15 13 12 10 11 5 6 4 3 2 25
再顺便提及:如何接连DDN线路中的路由器与交换机、交换机到网卡(以10M网为例)的连线:
有时需要自已动手做这样的连线,图示意如下
路由器(RJ45) 1 2 3 4 5 6 7 8
交换机(RJ45) 3 6 1 4 5 2 7 8
注:路由器到交换机、交换机到网卡的连线是相同的。
小资料:LINUX下如何配置MODEM
可以使用Linux图形界面下的相应工具(如minicom等)来测试modem并将其设置为你所想要的状态。
如果你实在厌倦了在网上东找西找这样那样的程序时,有一个几乎在所有的UNIX或LINUX中都被包含的指令,那就是cu,用它来配置modem是再简单不过了,键入以下的字符:
cu -l /dev/cua1 dir (用你的实际的moden端口号代替其中的cua1)
当屏幕出现“Connected”后通常可以用如下的指令,一般的回应为‘OK',除非你屏蔽了其本地回应功能。以“~.”退出设置:
AT&F(取modem的出厂设定)
ATS0=1(modem在电话响一声后就自动应接)
AT&W(把刚设的状态存起来)
注意:有些modem有硬件的DIP开关来设定其自动应答模式,请参考具体的手册说明。(例如对于MultiTech的MT1432BA来说可以将DIP5向上拔来设为自动应答)
呵呵,往往是越简单的越是没人提起。
2.使用多端口卡(multi-port serial cards)
如果你需要二个以上的串口来设置你的pppserver,一种经济的办法是添置多用户卡(通常的称谓)。此类型卡通常每片支持8个端口或16个端口,依其是否带有独立CPU又可分为智能卡与非智能卡两类。在国内的大多行业中几乎都使用我国宝岛台湾生产的“瑞旺”多用户卡,在本文就以“瑞旺”的"PE-518E"型号为实例参照。(每片120元,9600bps通信速率、ISA总线、全长型、非智能型8端口卡)。说实话,这种卡如今是仅能供教学之用了,如果你有其他更适宜的适配器资料,请别介意告诉我。
要安装和使用此卡,首先是打开你的非超薄超小型机箱,找到一个ISA插槽,取下后档板,垂直均匀用力插好,上好螺钉,盖上机箱......(一个标准DIYER应一气呵成的标准 )。如果你的实际情况不符合其中的任一款,我推荐你使用另一款多用户卡,xxx,PCI总线,手掌般大小,带一个80386CPU的智能型32端口用户卡),将modem架上的各种连线接至各个端口后,硬件连线算是完成了。
然后在主板BIOS中屏敞掉原先的IBM标准串口com1和com2.
启动你的Linux核心(单用户模式)。
喔,说明书上只提供SCO lINUX下的配置方法,而那些命令(mkdev等)你又无法在Linux下找到和使用, 这时你得这样
在核心中加入该卡的支持。(记住,对于智能卡,一定要有LINUX下的驱动)
必要时,你得手工激活各个端口,然后再重新启动后测试一下。
技巧提示:自制端口测试器
对于扰人的多用户卡,有时你时常分不清到底是设备故障,还是线路有问题,这时一个简单的办法是用自已焊的串行端口测试器来为其下定义。
道理其实很简单,稍对串行端口的管脚定义研究一下(由于多端口卡以25针RS232C为最常见,所以在此以其为例,读者可以举一反三,制作出更多更适合于你的测试器)
芯脚分配 命名 EIA电路 CCITT电路 信号源 信号功能
1 PG - 101 - 保护地线
2 SD BA 103 DTE 已发送的数据
3 RD BB 104 DCE 已接收的数据
4 RTS CA 105 DTE 请求发送
5 CTS CB 106 DCE 清除发送
6 DSR CC 107 DCE 数据集就绪
7 SG AB 102 -- 信号地线
8 CD CF 109 DCE 载波检测
9 +V +V -- DCE 测试电压
12 HS -- -- DCE 高速
15 TC DB 114 DCE 发送时钟
17 RC DD 115 DCE 接收时钟
20 TR CD 108/2 DTE 终端就绪
22 RI CE 125 DCE 铃响指示器
24 XTC DA 113 DTE 外部发送时钟
25 OOS CN 142 DTE 终端忙碌
附注:
第9芯不是必需的。
若不需要同步操作时,也不需要第15和第17芯。
DTE表示数据终端设备(终端或计算机)
DCE表示数据通讯设备(调制解调器)
如果仅仅为了测试该端口是否有效,那多只需将一个独立的适宜插拨的25孔D型适配器的第2脚与第3脚直接相短接就可以了。
就这么简单。
3.ISP的资料暂缺
ppp相关软件准备就绪
本节介绍了你在架设pppserver之时所必须做的前奏,包括核心配置与软件支援。软件支援包括安装pppd 配置pppd和启动pppd.
核心配置ppp支援
当你对手头上的硬件了如指掌之后,你将发现,以后的旅途着实轻松舒适 。通常,你只要配置一次核心就可以了。
如何知道我的核心支援PPP?
在启动时,你的 Linux 核心会印出大量的讯息.如果核心支援 PPP 的话会包含此一讯息. 要观看这些讯息的话,看看你的系统记录档或用 dmesg | less 指令将这些讯息显示在萤幕上. 如果核心支援 PPP 的话你将会看到像这样的几行
PPP Dynamic channel allocation code copyright 1995 Caldera, Inc.
PPP line discipline registered. (这是 Linux 2.0.x 系列核心的讯息).
如果你没有以上的类似信息,那么你就要编译Linux内核。当然你首先得要有Linux内核的源代码。你可以在以下的站点上找到:
www.freshmeat.net Linux软件的速递中心.
freesoft.cei.gov.cn 中国自由软件库
www.linuxhq.com Linux的大本营
(下载时选用离你最近的镜像站点,而不要仅局限于上述的这几个。)
本文截稿时止,Linux的最新内核版本是2.2.14。 Linux内核的[url=http://www.pccode.net].net" class="wordstyle"源码一般有两种形式:全部[url=http://www.pccode.net].net" class="wordstyle"源码和Patch。使用全部[url=http://www.pccode.net].net" class="wordstyle"源码,一般可以直接编译,如果是使用Patch,那么要注意了:你要知道你现在的内核的版本,然后要下载现在内核到最新内核的全部Patch。举个例子,如果你的内核版本是2.2.10,要升级到2.2.14,需要依次下载2.2.11,2.2.12一直到2.2.14的所有Patch,一个都不能少!
注意:如果你下载的是Patch,要按照版本号,由低到高,依次解开Patch。
#gzip -cd patch-2.2.11.gz | patch -p0
#gzip -cd patch-2.2.12.gz | patch -p0
#gzip -cd patch-2.2.13.gz | patch -p0
#gzip -cd patch-2.2.14.gz | patch -p0
当然,在编译之前,你还需要准备好编译环境: MAKE,EGCS。
在将核心解压至系统默认路径前,请检查 /usr/src/下面是否有 linux 符号连接。如果有,那么移去它.再建一个新目录linux2.2.14;
并建立一个linux符号连接到你的Linux2.2.14新内核目录。
现在假设你已将核心用我们那可爱的NETANTS下载到win95分区并已在Linux中执行了
#mount /dev/hda1 /mnt/win;
#tar zxvf /mnt/win/linux2.2.14.tar.gz -C /usr/src
#cd /usr/src/linux
#make menuconfig
当然运行这个指令仅是因为我喜欢这种折衷的界面显示方式。固然,你若喜欢纯字符界面方式可以选用make comfig,(不过当心,此命令方式无go back功能,一旦选错了得ctr-c后重来) 若你已配置好x-windows,那么你可以在x的shell中运行make xconfig 来配置核心。
在ppp(point-to-point)support(CONFIG-PPP)中选择Y或M.
如果你使用了模块,那么还需要生成和安装模块——虽然这是可选的,但是为了减少内核的存储空间,通常人们会使用模块。
其实你在配置核心级的ppp支持时你应该想得更多。 若你要把ppp server 兼做网关时还需IP forwarding的支持,同时还需考虑网络的安全得加入IP firewalls的支持。 若你明确的知道你的modem所支持的协议和另一些附加的功能(但或许并有通用),你可能还有必要添加一些额外的支持来优化整个系统。前提是你清楚的知道你正在做的是什么!