分享
 
 
 

Linux网络管理员手册(7)

王朝system·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

第七章 串行线路IP

串行线路协议SLIP和PPP为资金缺乏者提供Internet连接。除了需要一个modem和一块配有FI

FO缓冲的串行板(卡)外,不再需要其它的硬件了。使用它并不比使用一个邮箱复杂,并且

不断增长的私人机构以可以接受的价格为大家提供拨号上网IP。

Linux有SLIP和PPP两种驱动程序。SLIP已存在相当长的时间了,并且工作的很稳定。PPP驱动

程序是由Michael Callahan and Al Longyear最近开发的。PPP将在下一章中讨论。

7.1 一般需求

要使用SLIP或PPP,你当然必须配置一些如前章所讨论的那些基本网络特性。起码,你必须设

置回送(loopback)接口,并且提供名字解析。当连接到Internet上时,你当然要用到DNS。

最方便的方法是将某个名字服务器的地址写入resolv.conf文件中;SLIP链接一旦被激活,就

会查询这个服务器。名字服务器离你拨入的地方越近越好。

然而,这个方法并不是最佳的,因为所有的名字查找仍然都要通过你的SLIP/PPP链接。如果

你担心这样做所耗费的带宽,你也可以设置一个只缓冲(caching-only)名字服务器。它并

不真的服务于一个域,而只是作为你的主机所产生的所有DNS查询的一个中继。这个方案的优

点在于它建立了一个缓冲,大多数的查询只需往串行线路上发送一次。一个只缓冲服务器的

named.boot文件看上去象这样:

; named.boot file for caching-only server

directory /var/named

primary 0.0.127.in-addr.arpa db.127.0.0 ; loopback net

cache . db.cache ; root servers

除了这个name.boot文件,你也还需要设置db.cache文件,其中含有有效根名字服务器的一张

列表。这些在解析器的配置一章中的最后讨论。

7.2 SLIP操作

拨号(上网)IP服务器通常使用特殊的用户帐号提供SLIP服务。在登陆进这样一个帐号以后

,你不会进入普通的shell程序;而是执行一个程序或shell脚本,激活串行线路的服务器SL

IP驱动程序并且配置适当的网络接口。然后你需要在链接的你这端做同样的工作。

在某些操作系统上,SLIP驱动程序是用户空间程序;在Linux下,它是内核的一部分,这使得

它更快一些。然而,这需要将串行线路明确地转换成SLIP模式。这是通过特殊的tty线路规程

,SLIPDISC,来做到的。当tty为普通线路规程(DISCO)时,它将使用普通的read(2)和wri

te(2)调用只与用户进程交换数据,而SLIP驱动程序不能从tty读取或写进数据。在SLIPDISC

规程里,规则正好相反:现在任何用户空间进程从tty的读取和写入被阻止,此时,从串行端

口来的所有数据将被直接地传递到SLIP驱动程序。

SLIP驱动程序本身可以识别SLIP协议的多种变化。除了普通的SLIP,它也能理解CSLIP,这在

输出的IP包上执行所谓的Van Jacobson头压缩。[1] 这显著地改进了交互式会话的吞吐量。

另外,对于这些协议的每一种有六比特的版本。

将串行线路转换为SLIP模式的一种简单方法是通过使用slattach工具。假设你的modem连在/

dev/cua3上,并且成功地登录上SLIP服务器。然后执行:

# slattach /dev/cua3 &

这将cua3的线路规程转换成SLIPDISC,并把它连接到SLIP网络接口之一。如果这是你的第一

次激活的SLIP链接,该线路将连至sl0;第二个将连至sl1,以此类推。目前的内核同时支持

多达八个SLIP链接。

Slattach所选择的缺省的压缩封装是CSLIP。你可以使用-p开关来选择任何其它的模式。要使

用常规的SLIP(无压缩的),可以使用

# slattach -p slip /dev/cua3 &

其它的模式有cslip、slip6、cslip6(SLIP的六比特版本)、以及适应性SLIP(adaptive S

LIP)的adaptive。后者让内核找出远端所用的是那一种SLIP压缩封装类型。

注意,你必须使用与你的对等点同样的压缩封装。例如,如果cowslip使用CSLIP,你也必须

使用它。如果选择不匹配,那么将会出现ping到远程主机将收不到任何返回信息包的现象。

如果其它的主机ping你,那么在你的控制台上也会出现象“不能建立ICMP头”(“Can’t b

uild ICMP header”)的信息。避免这些问题的一种方法是使用适应性SLIP。

实际上,slattach并不仅仅允许你使能SLIP,同样也可以激活串行线路的其它协议,如PPP或

KISS(另一个由无线电爱好者使用的协议)。详细信息,请参考slattach(8)再线手册。

在将线路转至SLIP驱动程序以后,你必须配置这个网络接口。再一次,我们使用标准的ifco

nfig和route命令来做这个配置。假设从vlager,我们拨号到一个名为cowslip的服务器。那

么你要执行

#ifconfig sl0 vlager pointopoint cowslip

# route add cowslip

# route add default gw cowslip

第一个命令将接口配置成到cowslip的点对点链接,而第二、第三个命令增加到cowslip的路

由以及使用cowslip作为一个缺省的网关。

当拆卸一个SLIP链接时,你首先必须使用带del选项的route命令移去所有通过cowslip的路由

,将接口关闭,并向slattch发送一个hangup信号。然后,你必须再次使用你的终端程序挂断

modem:

# route del default

# route del cowslip

# ifconfig sl0 down

# kill -HUP 516

7.3 使用dip

现在来看,上面讲的是非常简单的。然而,你也许想使上面的步骤自动地执行,这样你就可

以只调用一个简单的命令来执行上面给出的所有步骤了。这也就是dip所要做的。[2] 在写作

这本手册时它的当前发行版本是3.3.7。它已被许多人大大地修改过了,所以它已不再是原来

的dip程序了。这些不同的开发变化有希望在今后的版本中合并。

Dip为简单的脚本语言提供了一个解释器,它能为你处理modem,将线路转变为SLIP模式,并

配置接口。这是非常基本的和有局限性的,但对于大多数情况已足够有效了。某天一个新的

dip版本将能适用于更为广泛的语言。

为了配置SLIP接口,dip需要root权限。现在可以临时使用dip将uid置为root,因此所有的用

户能够拨号到某个SLIP服务器而不需要给这些用户root权限。这是非常危险的,因为用dip设

置假的接口和默认路由可能会严重地破坏网络的路由。更糟的是,这将给你的用户连接到任

何SLIP服务器的能力,并在你的网络上带来危险的攻击。所以如果你想允许你的用户建立一

个SLIP连接,就为每个期望的SLIP服务器写一个小的包装程序,并且让这些包装程序调用包

括建立连接用的特定脚本的dip。那么,这些程序就可以安全地置成root的uid。[3]

7.3.1 一个简单的脚本程序

图7.1列出了一个简单的脚本程序。通过用脚本程序的名字作为参数调用dip,它可以用于连

接cowslip:

# dip cowslip.dip

DIP: Dialup IP Protocol Driver version 3.3.7 (12/13/93)

Written by Fred N. van Kempen, MicroWalt Corporation.

connected to cowslip.moo.com with addr 193.174.7.129

#

当激活了SLIP并连接到cowslip以后,dip将从终端上脱开并运行于后台。此时你就可以在SL

IP连接上使用通常的网络服务了。要想终止连接,只需用-k选项调用dip。这使用/etc/dip.

pid [4]中记录的进程id dip给dip进程发送了一个挂断信号:

# kill ?k

在dip的脚本语言中,前加美元符号的关键字表示变量名。Dip有一个预定义的变量集,将在

下面列出。例如,$remote和$local含有与SLIP连接有关的本地以及远程主机的主机名。

# Sample dip script for dialing up cowslip

# Set local and remote name and address

get $local vlager

get $remote cowslip

port cua3 # choose a serial port

speed 38400 # set speed to max

modem HAYES # set modem type

reset # reset modem and tty

flush # flush out modem response

# Prepare for dialing.

send ATQ0V1E1X1\r

wait OK 2

if $errlvl != 0 goto error

dial 41988

if $errlvl != 0 goto error

wait CONNECT 60

if $errlvl != 0 goto error

# Okay, we"re connected now

sleep 3

send \r\n\r\n

wait ogin: 10

if $errlvl != 0 goto error

send Svlager\n

wait ssword: 5

if $errlvl != 0 goto error

send hey-jude\n

wait running 30

if $errlvl != 0 goto error

# We have logged in, and the remote side is firing up SLIP.

print Connected to $remote with address $rmtip

default # Make this link our default route

mode SLIP # We go to SLIP mode, too

# fall through in case of error

error:

print SLIP to $remote failed.

图7.1 一个dip脚本样本

样本脚本程序中的头两句是get命令,这是dip设置变量的方法。这里,本地和远程主机名分

别设置成了vlager和cowslip。

接下来的五句用来设置终端线路和modem。Reset向modem发送了一个复位串;对于Hayes兼容

的modem,这是个ATZ命令。下一个语句刷出modem的响应,以使得接下来的几行中的登录会话

能够正常的工作。这个对话是非常直观的:它简单地拨出cowslip的号码41988,并且使用口

令hey-jude登录进Svlager帐号

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有