下一页 上一页 目录

7. 使用常见的 PC 硬件

7.1 ISDN

综合业务数字网 (ISDN) 是一系列标准,用于规定通用的交换数字数据网络。一个 ISDN “呼叫” 会创建一个同步的点对点数据服务到目的地。ISDN 通常通过高速链路传输,该链路被分解为多个离散的信道。有两种不同类型的信道,即 “B 信道”,它实际上传输用户数据,以及一个称为 “D 信道” 的信道,它用于向 ISDN 交换机发送控制信息,以建立呼叫和其他功能。例如在澳大利亚,ISDN 可以通过 2Mbps 的链路传输,该链路被分解为 30 个离散的 64kbps B 信道和一个 64kbps D 信道。可以同时使用任意数量的信道,并且可以以任何组合方式使用。例如,您可以建立 30 个独立的呼叫到 30 个不同的目的地,每个呼叫 64kbps,或者您可以建立 15 个呼叫到 15 个不同的目的地,每个呼叫 128kbps(每个呼叫使用两个信道),或者只建立少量呼叫,其余信道保持空闲。信道可以用于呼入或呼出。ISDN 最初的目的是允许电信公司提供单一的数据服务,该服务可以向您的家庭或企业提供电话(通过数字语音)或数据服务,而无需您进行任何特殊的配置更改。

有几种不同的方式将您的计算机连接到 ISDN 服务。一种方式是使用一种称为 “终端适配器” 的设备,该设备插入到您的电信运营商在您获得 ISDN 服务时安装的网络终端单元中,并提供多个串行接口。其中一个接口用于输入命令以建立呼叫和配置,而其他接口实际上连接到网络设备,这些设备将在建立数据电路时使用这些电路。Linux 将在这种配置下无需修改即可工作,您只需将终端适配器上的端口视为您对待任何其他串行设备一样。另一种方式,也是内核 ISDN 支持设计的方式,允许您在您的 Linux 机器中安装 ISDN 卡,然后让您的 Linux 软件处理协议并自行发起呼叫。

内核编译选项:

        ISDN subsystem  --->
                <*> ISDN support
                [ ] Support synchronous PPP
                [ ] Support audio via ISDN
                < > ICN 2B and 4B support
                < > PCBIT-D support
                < > Teles/NICCY1016PC/Creatix support
        

Linux 的 ISDN 实现支持多种不同类型的内置 ISDN 卡。这些是在内核配置选项中列出的卡

其中一些卡需要下载软件才能使其运行。有一个单独的实用程序来执行此操作。

关于如何配置 Linux ISDN 支持的完整详细信息,请访问 /usr/src/linux/Documentation/isdn/ 目录,并且在 www.lrz-muenchen.de 上有一个专门针对 isdn4linux 的 FAQ。(您可以点击英文国旗图标以获取英文版本)。

关于 PPP 的注意事项。PPP 协议套件可以在异步或同步串行线路之上运行。常用的 Linux PPP 守护进程 `pppd' 仅支持异步模式。如果您希望通过您的 ISDN 服务运行 PPP 协议,则需要一个专门修改的版本。有关在哪里找到它的详细信息,请参阅上面提到的文档。

7.2 Linux-2.0 的 PLIP

PLIP 设备名称是 `plip0'、`plip1' 和 `plip2'。

内核编译选项:

        Network device support  --->
            <*> PLIP (parallel port) support
        

plip (并行线路 IP),类似于 SLIP,因为它用于在两台机器之间提供点对点网络连接,不同之处在于它被设计为使用您机器上的并行打印机端口而不是串行端口(布线图包含在本文档后面的布线图部分)。因为可以使用并行端口一次传输多个比特,所以使用 plip 接口可以比使用标准串行设备获得更高的速度。此外,即使是最简单的并行端口,即打印机端口,也可以代替您购买相对昂贵的用于串行端口的 16550AFN UART。与串行链路相比,PLIP 使用大量的 CPU,如果您可以获得一些廉价的以太网卡,那么它肯定不是一个好的选择,但是当没有其他选择时,它会工作,并且会工作得相当好。当链路运行良好时,您应该期望数据传输速率约为每秒 20 千字节。

PLIP 设备驱动程序与并行设备驱动程序竞争并行端口硬件。如果您希望同时使用这两个驱动程序,那么您应该将它们都编译为模块,以确保您能够选择要用于 PLIP 的端口以及要用于打印机驱动程序的端口。有关内核模块配置的更多信息,请参阅 “模块迷你 HOWTO”。

请注意,一些笔记本电脑使用的芯片组可能无法与 PLIP 一起工作,因为它们不允许 PLIP 依赖但打印机不使用的一些信号组合。

Linux plip 接口与 Crynwyr Packet Driver PLIP 兼容,这意味着您可以将您的 Linux 机器通过 plip 连接到运行任何其他类型的 tcp/ip 软件的 DOS 机器。

在 2.0.* 系列内核中,plip 设备映射到 i/o 端口和 IRQ 如下:

        device  i/o     IRQ
        ------  -----   ---
        plip0   0x3bc   5
        plip1   0x378   7
        plip2   0x278   2
        

如果您的并行端口与上述任何组合都不匹配,那么您可以使用 `irq' 参数使用 ifconfig 命令更改端口的 IRQ(如果您的 ROM BIOS 支持此选项,请务必在其中启用打印机端口的 IRQ)。作为替代方案,如果您使用模块,您可以在 insmod 命令行上指定 ``io='' 和 ``irq='' 选项。例如

        root# insmod plip.o io=0x288 irq=5
        

PLIP 操作由两个超时控制,在大多数情况下,它们的默认值可能都可以。如果您的计算机速度特别慢,您可能需要增加它们,在这种情况下,要增加的计时器实际上是在另一台计算机上。存在一个名为 plipconfig 的程序,允许您更改这些计时器设置而无需重新编译您的内核。它随许多 Linux 发行版一起提供。

要配置 plip 接口,您需要调用以下命令(或将它们添加到您的初始化脚本中)

        root# /sbin/ifconfig plip1 localplip pointopoint remoteplip
        root# /sbin/route add remoteplip plip1
        

这里,正在使用的端口是 I/O 地址 0x378 的端口;localplipremoteplip 是通过 PLIP 电缆使用的名称或 IP 地址。我个人将它们保存在我的 /etc/hosts 数据库中

        # plip entries
        192.168.3.1   localplip
        192.168.3.2   remoteplip
        

pointopoint 参数的含义与 SLIP 相同,因为它指定了链路另一端机器的地址。

在几乎所有方面,您都可以将 plip 接口视为 SLIP 接口,只是既不需要也不可能使用 dipslattach

有关 PLIP 的更多信息,请参阅 “PLIP 迷你 HOWTO”。

7.3 Linux-2.2 的 PLIP

在 2.1 内核版本的开发过程中,对并行端口的支持进行了更改,以获得更好的设置。

内核编译选项:

        General setup  --->
            [*] Parallel port support
        Network device support  --->
            <*> PLIP (parallel port) support
        

PLIP 的新代码的行为与旧代码类似(使用与上一节中相同的 ifconfigroute 命令,但由于高级并行端口支持,设备的初始化是不同的)。

“第一个” PLIP 设备始终称为 “plip0”,其中第一个是系统检测到的第一个设备,类似于以太网设备的情况。实际使用的并行端口是可用端口之一,如 /proc/parport 中所示。例如,如果您只有一个并行端口,您将只有一个名为 /proc/parport/0 的目录。

如果您的内核没有检测到您的端口使用的 IRQ 号码,``insmod plip'' 将会失败;在这种情况下,只需将正确的号码写入 /proc/parport/0/irq 并重新调用 insmod

有关并行端口管理的完整信息,请参阅文件 Documentation/parport.txt,它是您的内核源代码的一部分。

7.4 PPP

PPP 设备名称是 `ppp0'、`ppp1' 等。设备按顺序编号,第一个配置的设备接收 `0'。

内核编译选项:

        Networking options  --->
            <*> PPP (point-to-point) support
        

PPP 配置在 PPP-HOWTO 中详细介绍。

使用 pppd 维护到网络的永久连接。

如果您足够幸运能够拥有到网络的半永久连接,并且希望在 PPP 连接丢失时让您的机器自动重拨,那么这里有一个简单的技巧可以做到这一点。

配置 PPP,使其可以通过 root 用户通过发出以下命令来启动

# pppd
请务必在您的 /etc/ppp/options 文件中配置 `-detach' 选项。然后,将以下行插入到您的 /etc/inittab 文件中,与 getty 定义放在一起
pd:23:respawn:/usr/sbin/pppd
这将导致 init 程序生成并监视 pppd 程序,并在其终止时自动重启它。

7.5 SLIP 客户端

SLIP 设备被命名为 `sl0'、`sl1' 等,第一个配置的设备被分配为 `0',其余设备在配置时按顺序递增。

内核编译选项:

        Network device support  --->
            [*] Network device support
            <*> SLIP (serial line) support
            [ ]  CSLIP compressed headers
            [ ]  Keepalive and linefill
            [ ]  Six bit SLIP encapsulation
        

SLIP(串行线路 Internet 协议)允许您通过串行线路使用 tcp/ip,无论是带有拨号调制解调器的电话线,还是某种租用线路。当然,要使用 SLIP,您需要访问您所在区域的 SLIP 服务器。许多大学和企业在世界各地提供 SLIP 访问。

Slip 使用您机器上的串行端口来传输 IP 数据报。为此,它必须控制串行设备。Slip 设备名称被命名为 sl0sl1 等。这些名称如何对应于您的串行设备?网络代码使用一个称为 ioctl (i/o 控制) 调用来将串行设备更改为 SLIP 设备。有两个程序可以执行此操作,它们被称为 dipslattach

dip

dip (拨号 IP) 是一个智能程序,能够设置串行设备的速度,命令您的调制解调器拨打链路的远程端,自动登录到远程服务器,搜索服务器发送给您的消息并提取信息,例如您的 IP 地址,并执行必要的 ioctl 来将您的串行端口切换到 SLIP 模式。dip 具有强大的脚本编写能力,您可以利用它来自动化您的登录过程。

您可以在以下位置找到它:metalab.unc.edu

要安装它,请尝试以下操作

        user% tar xvzf dip337o-uri.tgz
        user% cd dip-3.3.7o
        user% vi Makefile
        root# make install
        

Makefile 假定存在一个名为 uucp 的组,但您可能希望将其更改为 dipSLIP,具体取决于您的配置。

slattach

dip 相比,slattach 是一个非常简单的程序,非常易于使用,但不如 dip 那样复杂。它没有脚本编写能力,它所做的只是将您的串行设备配置为 SLIP 设备。它假定您拥有所需的所有信息,并且在您调用它之前串行线路已建立。slattach 非常适合用于您与服务器具有永久连接的情况,例如物理电缆或租用线路。

我何时使用哪个?

当您到 SLIP 服务器的链路是拨号调制解调器或某些其他临时链路时,您将使用 dip。当您在您的机器和服务器之间有一条租用线路(可能是电缆),并且无需特殊操作即可使链路工作时,您将使用 slattach。有关更多信息,请参阅 “永久 Slip 连接” 部分。

配置 SLIP 很像配置以太网接口(阅读上面的 “配置以太网设备” 部分)。但是,存在一些关键差异。

首先,SLIP 链路与以太网网络不同,因为网络上始终只有两个主机,链路的每一端各一个。与以太网在您连接电缆后即可使用不同,对于 SLIP,根据您拥有的链路类型,您可能需要以某种特殊方式初始化您的网络连接。

如果您使用 dip,则通常不会在启动时完成此操作,而是在稍后的某个时间完成,当您准备好使用该链路时。可以自动化此过程。如果您使用 slattach,那么您可能希望在您的 rc.inet1 文件中添加一个部分。这将很快描述。

有两种主要的 SLIP 服务器类型:动态 IP 地址服务器和静态 IP 地址服务器。几乎每个 SLIP 服务器都会在您拨入时提示您使用用户名和密码登录。dip 可以处理自动登录。

带有拨号线路和 DIP 的静态 SLIP 服务器。

静态 SLIP 服务器是指为您提供专门属于您的 IP 地址的服务器。每次您连接到服务器时,您都将使用该地址配置您的 SLIP 端口。静态 SLIP 服务器将应答您的调制解调器呼叫,可能会提示您输入用户名和密码,然后通过该连接将任何目标地址为您的地址的数据报路由给您。如果您有静态服务器,那么您可能希望将您的主机名和 IP 地址(因为您知道它是什么)的条目放入您的 /etc/hosts 中。您还应该配置其他一些文件,例如:rc.inet2host.confresolv.conf/etc/HOSTNAMErc.local。请记住,在配置 rc.inet1 时,您无需为您的 SLIP 连接添加任何特殊命令,因为是 dip 为您完成了配置接口的所有繁重工作。您需要向 dip 提供适当的信息,它将在命令调制解调器建立呼叫并将您登录到您的 SLIP 服务器后,为您配置接口。

如果这就是您的 SLIP 服务器的工作方式,那么您可以转到 “使用 Dip” 部分,了解如何适当地配置 dip

带有拨号线路和 DIP 的动态 SLIP 服务器。

动态 SLIP 服务器是指每次您登录时都从地址池中随机分配给您一个 IP 地址的服务器。这意味着不能保证每次您都会拥有任何特定的地址,并且该地址在您注销后很可能被其他人使用。配置 SLIP 服务器的网络管理员将为 SLIP 服务器分配一个地址池以供使用,当服务器收到新的呼入呼叫时,它会找到第一个未使用的地址,引导呼叫者完成登录过程,然后打印一条欢迎消息,其中包含它已分配的 IP 地址,并在该呼叫期间继续使用该 IP 地址。

为此类服务器配置与为静态服务器配置类似,不同之处在于您必须添加一个步骤,您可以在其中获取服务器为您分配的 IP 地址,并使用该地址配置您的 SLIP 设备。

同样,dip 完成了繁重的工作,并且新版本足够智能,不仅可以登录您,而且还可以自动读取欢迎消息中打印的 IP 地址并存储它,以便您可以让它使用该 IP 地址配置您的 SLIP 设备。

如果这就是您的 SLIP 服务器的工作方式,那么您可以转到 “使用 Dip” 部分,了解如何适当地配置 dip

使用 DIP。

如前所述,dip 是一个强大的程序,可以简化和自动化拨号进入 SLIP 服务器、登录、启动连接以及使用适当的 ifconfigroute 命令配置您的 SLIP 设备的过程。

本质上,要使用 dip,您需要编写一个 “dip 脚本”,这基本上是 dip 理解的命令列表,这些命令告诉 dip 如何执行您希望它执行的每个操作。请参阅随 dip 提供的 sample.dip,以了解它的工作原理。dip 是一个非常强大的程序,具有许多选项。与其在这里详细介绍所有选项,不如查看 man 页面、README 和示例文件,它们将随您的 dip 版本一起提供。

您可能会注意到 sample.dip 脚本假定您正在使用静态 SLIP 服务器,因此您事先知道您的 IP 地址是什么。对于动态 SLIP 服务器,新版本的 dip 包含一个命令,您可以使用该命令自动读取动态服务器为您分配的 IP 地址,并使用该地址配置您的 SLIP 设备。以下示例是 sample.dip 的修改版本,该版本随 dip337j-uri.tgz 提供,并且可能是您的一个良好的起点。您可能希望将其另存为 /etc/dipscript 并对其进行编辑以适合您的配置

#
# sample.dip    Dialup IP connection support program.
#
#               This file (should show) shows how to use the DIP
#       This file should work for Annex type dynamic servers, if you
#       use a static address server then use the sample.dip file that
#       comes as part of the dip337-uri.tgz package.
#
#
# Version:      @(#)sample.dip  1.40    07/20/93
#
# Author:       Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG>
#

main:
# Next, set up the other side's name and address.
# My dialin machine is called 'xs4all.hacktic.nl' (== 193.78.33.42)
get $remote xs4all.hacktic.nl
# Set netmask on sl0 to 255.255.255.0
netmask 255.255.255.0
# Set the desired serial port and speed.
port cua02
speed 38400

# Reset the modem and terminal line.
# This seems to cause trouble for some people!
reset

# Note! "Standard" pre-defined "errlevel" values:
#  0 - OK
#  1 - CONNECT
#  2 - ERROR
#
# You can change those grep'ping for "addchat()" in *.c...

# Prepare for dialing.
send ATQ0V1E1X4\r
wait OK 2
if $errlvl != 0 goto modem_trouble
dial 555-1234567
if $errlvl != 1 goto modem_trouble

# We are connected.  Login to the system.
login:
sleep 2
wait ogin: 20
if $errlvl != 0 goto login_trouble
send MYLOGIN\n
wait ord: 20
if $errlvl != 0 goto password_error
send MYPASSWD\n
loggedin:

# We are now logged in.
wait SOMEPROMPT 30
if $errlvl != 0 goto prompt_error

# Command the server into SLIP mode
send SLIP\n
wait SLIP 30
if $errlvl != 0 goto prompt_error

# Get and Set your IP address from the server.  
#   Here we assume that after commanding the SLIP server into SLIP
#   mode that it prints your IP address
get $locip remote 30
if $errlvl != 0 goto prompt_error

# Set up the SLIP operating parameters.
get $mtu 296
# Ensure "route add -net default xs4all.hacktic.nl" will be done
default

# Say hello and fire up!
done:
print CONNECTED $locip ---> $rmtip
mode CSLIP
goto exit

prompt_error:
print TIME-OUT waiting for sliplogin to fire up...
goto error

login_trouble:
print Trouble waiting for the Login: prompt...
goto error

password:error:
print Trouble waiting for the Password: prompt...
goto error

modem_trouble:
print Trouble occurred with the modem...
error:
print CONNECT FAILED to $remote
quit

exit:
exit

上面的示例假定您正在呼叫动态 SLIP 服务器,如果您正在呼叫静态 SLIP 服务器,那么随 dip337j-uri.tgz 提供的 sample.dip 文件应该适合您。

dip 被赋予 get $local 命令时,它会在来自远程端的传入文本中搜索看起来像 IP 地址的字符串,即由 `.' 字符分隔的字符串数字。此修改专门为动态 SLIP 服务器而设置,以便可以自动化读取服务器授予的 IP 地址的过程。

上面的示例将自动通过您的 SLIP 链路创建默认路由,如果这不是您想要的,您可能有一个应该作为您的默认路由的以太网连接,那么请从脚本中删除 default 命令。在此脚本运行完成后,如果您执行 ifconfig 命令,您将看到您有一个设备 sl0。这是您的 SLIP 设备。如果需要,您可以在 dip 命令完成后,使用 ifconfigroute 命令手动修改其配置。请注意,dip 允许您使用 mode 命令选择多种不同的协议,最常见的示例是用于压缩 SLIP 的 cSLIP。请注意,链路的两端必须达成一致,因此您应确保您选择的协议与您的服务器设置的协议一致。上面的示例相当健壮,应该可以应对大多数错误。有关更多信息,请参阅 dip man 页面。当然,例如,您可以编写脚本来执行诸如在规定时间内未获得连接时重拨服务器,甚至在您可以访问多个服务器时尝试一系列服务器等操作。

使用租用线路和 slattach 的永久 SLIP 连接。

如果您的两台机器之间有一条电缆,或者您足够幸运地拥有租用线路,或者您的机器和另一台机器之间有其他永久串行连接,那么您无需费力使用 dip 来设置您的串行链路。slattach 是一个非常易于使用的实用程序,它将允许您获得足够的功能来配置您的连接。由于您的连接将是永久性的,因此您需要向您的 rc.inet1 文件添加一些命令。本质上,对于永久连接,您需要做的就是确保您将串行设备配置为正确的速度,并将串行设备切换到 SLIP 模式。slattach 允许您使用一个命令来完成此操作。以下内容添加到您的 rc.inet1 文件中

        #
        # Attach a leased line static SLIP connection
        #
        #  configure /dev/cua0 for 19.2kbps and cslip
        /sbin/slattach -p cslip -s 19200 /dev/cua0 &
        /sbin/ifconfig sl0 IPA.IPA.IPA.IPA pointopoint IPR.IPR.IPR.IPR up
        #
        # End static SLIP.
        
其中

IPA.IPA.IPA.IPA

代表您的 IP 地址。

IPR.IPR.IPR.IPR

代表远程端的 IP 地址。

slattach 将第一个未分配的 SLIP 设备分配给指定的串行设备。slattachsl0 开始。因此,第一个 slattach 命令将 SLIP 设备 sl0 附加到指定的串行设备,下一次附加 sl1,等等。

slattach 允许您使用 -p 参数配置多种不同的协议。在您的情况下,您将使用 SLIPcSLIP,具体取决于您是否要使用压缩。注意:两端必须就您是否需要压缩达成一致。

7.6 SLIP 服务器。

如果您有一台可能连接到网络的机器,您希望其他人能够拨入并提供网络服务,那么您将需要将您的机器配置为服务器。如果您想使用 SLIP 作为串行线路协议,那么目前您有三种选择如何将您的 Linux 机器配置为 SLIP 服务器。我的首选是使用第一个介绍的 sliplogin,因为它看起来最容易配置和理解,但我将介绍每个选项的摘要,以便您可以做出自己的决定。

使用 sliplogin 的 Slip 服务器。

sliplogin 是一个程序,您可以使用它来代替 SLIP 用户的普通登录 shell,它将终端线路转换为 SLIP 线路。它允许您将您的 Linux 机器配置为静态地址服务器(用户每次呼叫时都获得相同的地址)或动态地址服务器(用户获得为其分配的地址,该地址不一定与上次呼叫时相同)。

呼叫者将按照标准登录过程登录,输入他们的用户名和密码,但是登录后不会显示 shell,而是执行 sliplogin,它会在其配置文件 (/etc/slip.hosts) 中搜索与呼叫者的登录名匹配的条目。如果找到一个,它会将线路配置为 8 位干净线路,并使用 ioctl 调用将线路规程转换为 SLIP。当此过程完成时,将进行配置的最后阶段,其中 sliplogin 调用一个 shell 脚本,该脚本使用相关的 IP 地址、网络掩码配置 SLIP 接口并设置适当的路由。此脚本通常称为 /etc/slip.login,但与 getty 类似,如果您有某些呼叫者需要特殊初始化,那么您可以创建名为 /etc/slip.login.loginname 的配置文件脚本,这些脚本将专门为他们运行,而不是默认脚本。

您需要配置三个或四个文件才能使 sliplogin 为您工作。我将详细介绍如何以及在哪里获取软件,以及如何详细配置每个文件。这些文件是

在哪里获取 sliplogin

您可能已经安装了 sliplogin 包作为您的发行版的一部分,如果不是,那么可以从以下位置获取 sliploginmetalab.unc.edu。tar 文件包含源代码、预编译二进制文件和 man 页面。

为了确保只有授权用户才能运行 sliplogin 程序,您应该在您的 /etc/group 文件中添加一个类似于以下的条目

 ..
slip::13:radio,fred
 ..

当您安装 sliplogin 包时,Makefilesliplogin 程序的组所有权更改为 slip,这意味着只有属于该组的用户才能执行它。上面的示例将只允许用户 radiofred 执行 sliplogin

要将二进制文件安装到您的 /sbin 目录中,并将 man 页面安装到第 8 节,请执行以下操作

# cd /usr/src
# gzip -dc .../sliplogin-2.1.1.tar.gz | tar xvf -
# cd sliplogin-2.1.1
# <..edit the Makefile if you don't use shadow passwords..>
# make install

如果您想在安装前重新编译二进制文件,请在 make install 之前添加 make clean。如果您想将二进制文件安装到其他位置,您需要编辑 Makefile install 规则。

请阅读随软件包提供的 README 文件以获取更多信息。

为 Slip 主机配置 /etc/passwd

通常,您会在您的 /etc/passwd 文件中为 Slip 呼叫者创建一些特殊登录名。通常遵循的约定是使用呼叫主机的主机名,并在其前面加上大写字母 “S”。因此,例如,如果呼叫主机名为 radio,那么您可以创建一个 /etc/passwd 条目,如下所示

Sradio:FvKurok73:1427:1:radio SLIP login:/tmp:/sbin/sliplogin
帐户名称是什么并不重要,只要它对您有意义即可。

注意:呼叫者不需要任何特殊的家目录,因为他们不会从这台机器获得 shell,因此 /tmp 是一个不错的选择。另请注意,sliplogin 用于代替普通登录 shell。

配置 /etc/slip.hosts

/etc/slip.hosts 文件是 sliplogin 搜索与登录名匹配的条目以获取此呼叫者的配置详细信息的文件。正是在此文件中,您指定将分配给呼叫者并为其配置使用的 IP 地址和网络掩码。两个主机的示例条目,一个是主机 radio 的静态配置,另一个是用户主机 albert 的动态配置,可能如下所示

#
Sradio   44.136.8.99   44.136.8.100  255.255.255.0  normal      -1
Salbert  44.136.8.99   DYNAMIC       255.255.255.0  compressed  60
#
/etc/slip.hosts 文件条目是
  1. 呼叫者的登录名。
  2. 服务器机器的 IP 地址,即这台机器。
  3. 将分配给呼叫者的 IP 地址。如果此字段编码为 DYNAMIC,则将根据您稍后讨论的 /etc/slip.tty 文件中包含的信息分配 IP 地址。注意:您必须使用至少 1.3 版本的 sliplogin 才能使其工作。
  4. 分配给呼叫机器的网络掩码,以点分十进制表示法表示,例如 255.255.255.0 用于 C 类网络掩码。
  5. slip 模式设置,允许您启用/禁用压缩和 slip 其他功能。此处允许的值为 “normal” 或 “compressed”。
  6. 超时参数,指定线路可以保持空闲(未收到数据报)多长时间,然后线路会自动断开连接。负值禁用此功能。
  7. 可选参数。

注意:对于字段 2 和 3,您可以使用主机名或点分十进制表示法表示的 IP 地址。如果您使用主机名,则这些主机必须是可解析的,也就是说,您的机器必须能够找到这些主机名的 IP 地址,否则脚本在被调用时将失败。您可以通过尝试 telnet 到主机名来测试这一点,如果您收到 `Trying nnn.nnn.nnn...' 消息,则表示您的机器已能够找到该名称的 IP 地址。如果您收到消息 `Unknown host',则表示没有找到。如果没有找到,请使用点分十进制表示法表示的 IP 地址,或修复您的名称解析器配置(请参阅 “名称解析” 部分)。

最常见的 slip 模式是

normal

启用普通未压缩的 SLIP。

compressed

启用 Van Jacobsen 标头压缩 (cSLIP)

自然地,这些是互斥的,您可以使用其中一个或另一个。有关其他可用选项的更多信息,请参阅 man 页面。

配置 /etc/slip.login 文件。

sliplogin 搜索了 /etc/slip.hosts 并找到匹配的条目后,它将尝试执行 /etc/slip.login 文件,以实际配置 SLIP 接口及其 IP 地址和网络掩码。随 sliplogin 包提供的示例 /etc/slip.login 文件如下所示

#!/bin/sh -
#
#       @(#)slip.login  5.1 (Berkeley) 7/1/90
#
# generic login file for a SLIP line.  sliplogin invokes this with
# the parameters:
#     $1       $2       $3    $4, $5, $6 ...
#   SLIPunit ttyspeed   pid   the arguments from the slip.host entry
#
/sbin/ifconfig $1 $5 pointopoint $6 mtu 1500 -trailers up
/sbin/route add $6
arp -s $6 <hw_addr> pub
exit 0
#
您会注意到,此脚本只是简单地使用 ifconfigroute 命令来配置 SLIP 设备,使用其 IP 地址、远程 IP 地址和网络掩码,并为远程地址通过 SLIP 设备创建路由。就像您在使用 slattach 命令时一样。

另请注意 Proxy ARP 的使用,以确保与服务器机器在同一以太网上的其他主机将知道如何访问拨入主机。<hw_addr> 字段应该是机器中以太网卡的硬件地址。如果您的服务器机器不在以太网网络上,则可以完全省略此行。

配置 /etc/slip.logout 文件。

当呼叫断开时,您需要确保串行设备恢复到正常状态,以便未来的呼叫者能够正确登录。这是通过使用 /etc/slip.logout 文件实现的。它的格式非常简单,并且使用与 /etc/slip.login 文件相同的参数调用。

        #!/bin/sh -
        #
        #               slip.logout
        #
        /sbin/ifconfig $1 down
        arp -d $6
        exit 0
        #
        
它所做的只是“关闭”接口,这将删除先前手动创建的路由。它还使用 arp 命令来删除任何已设置的代理 arp,同样,如果您的服务器机器没有以太网端口,则您不需要脚本中的 arp 命令。

配置 /etc/slip.tty 文件。

如果您正在使用动态 IP 地址分配(在 /etc/slip.hosts 文件中配置了带有 DYNAMIC 关键字的任何主机),那么您必须配置 /etc/slip.tty 文件以列出分配给哪个端口的地址。如果您希望服务器动态地为用户分配地址,您才需要此文件。

该文件是一个表格,列出了将支持拨入 SLIP 连接的 tty 设备以及应分配给在该端口上拨入的用户的 IP 地址。其格式如下

# slip.tty    tty -> IP address mappings for dynamic SLIP
# format: /dev/tty?? xxx.xxx.xxx.xxx
#
/dev/ttyS0      192.168.0.100
/dev/ttyS1      192.168.0.101
#

此表说明的是,在 /etc/slip.hosts 文件中将其远程地址字段设置为 DYNAMIC 的端口 /dev/ttyS0 上拨入的呼叫者将被分配地址 192.168.0.100

通过这种方式,对于所有不需要专用地址的用户,您只需要为每个端口分配一个地址。这有助于您将所需的地址数量保持在最低限度,以避免浪费。

使用 dip 的 Slip 服务器。

首先让我说明一下,以下一些信息来自 dip 手册页,其中简要介绍了如何将 Linux 作为 SLIP 服务器运行。另请注意,以下内容基于 dip337o-uri.tgz 软件包,可能不适用于其他版本的 dipdip 具有输入操作模式,在该模式下,它会自动为调用它的用户找到条目,并根据在 /etc/diphosts 文件中找到的信息将串行线路配置为 SLIP 链路。通过将 dip 作为 diplogin 调用来激活此输入操作模式。因此,这就是您如何使用 dip 作为 SLIP 服务器的方法,即通过创建特殊帐户,其中 diplogin 用作登录 shell。您需要做的第一件事是创建一个符号链接,如下所示

# ln -sf /usr/sbin/dip /usr/sbin/diplogin
然后,您需要将条目添加到您的 /etc/passwd/etc/diphosts 文件中。您需要制作的条目的格式如下:要将 Linux 配置为使用 dip 的 SLIP 服务器,您需要为用户创建一些特殊的 SLIP 帐户,其中 dip(在输入模式下)用作登录 shell。建议的约定是让所有 SLIP 帐户都以大写字母“S”开头,例如“Sfredm”。SLIP 用户的示例 /etc/passwd 条目如下所示
Sfredm:ij/SMxiTlGVCo:1004:10:Fred:/tmp:/usr/sbin/diplogin
^^         ^^        ^^  ^^   ^^   ^^   ^^
|          |         |   |    |    |    \__ diplogin as login shell
|          |         |   |    |    \_______ Home directory
|          |         |   |    \____________ User Full Name
|          |         |   \_________________ User Group ID
|          |         \_____________________ User ID
|          \_______________________________ Encrypted User Password
\__________________________________________ Slip User Login Name

用户登录后,login 程序如果找到并验证用户成功,将执行 diplogin 命令。当 dip 作为 diplogin 调用时,它知道它应该自动假定它正在被用作登录 shell。当它作为 diplogin 启动时,它做的第一件事是使用 getuid() 函数调用来获取调用它的人的用户 ID。然后,它在 /etc/diphosts 文件中搜索第一个与用户 ID 或呼叫传入的 tty 设备的名称匹配的条目,并相应地配置自身。通过明智地决定是否在 diphosts 文件中为用户提供条目,或者是否让用户获得默认配置,您可以构建您的服务器,以便您可以混合使用静态和动态分配地址的用户。如果在输入模式下调用 dip,它将自动添加“Proxy-ARP”条目,因此您无需担心手动添加此类条目。

配置 /etc/diphosts

dip 使用 /etc/diphosts 来查找远程主机的预设配置。这些远程主机可能是拨入您的 Linux 机器的用户,也可能是您使用 Linux 机器拨入的机器。/etc/diphosts 的通用格式如下

 ..
Suwalt::145.71.34.1:145.71.34.2:255.255.255.0:SLIP uwalt:CSLIP,1006
ttyS1::145.71.34.3:145.71.34.2:255.255.255.0:Dynamic ttyS1:CSLIP,296
 ..
字段为
  1. 登录名:由 getpwuid(getuid()) 或 tty 名称返回。
  2. 未使用:与 passwd 兼容
  3. 远程地址:呼叫主机的 IP 地址,可以是数字或名称
  4. 本地地址:此机器的 IP 地址,也是数字或名称
  5. 网络掩码:以点分十进制表示法
  6. 注释字段:在此处放置任何您想要的内容。
  7. 协议:Slip、CSlip 等。
  8. MTU:十进制数字
远程 SLIP 用户的示例 /etc/net/diphosts 条目可能是
Sfredm::145.71.34.1:145.71.34.2:255.255.255.0:SLIP uwalt:SLIP,296
这指定了远程地址为 145.71.34.1 和 MTU 为 296 的 SLIP 链路,或者
Sfredm::145.71.34.1:145.71.34.2:255.255.255.0:SLIP uwalt:CSLIP,1006
这指定了远程地址为 145.71.34.1 和 MTU 为 1006 的支持 cSLIP 的链路。

因此,所有您希望允许静态分配拨号 IP 访问的用户都应该在 /etc/diphosts 中有一个条目。如果您希望拨打特定端口的用户动态分配其详细信息,那么您必须为 tty 设备设置一个条目,而不要配置基于用户的条目。您应该记住为拨号用户使用的每个 tty 设备至少配置一个条目,以确保无论他们拨打哪个调制解调器,都可以为他们提供合适的配置。

当用户登录时,他们将收到正常的登录名和密码提示,他们应该在此处输入他们的 SLIP 登录用户名和密码。如果这些验证成功,则用户将看不到任何特殊消息,他们应该只需在其终端上切换到 SLIP 模式。然后,用户应该能够成功连接,并使用来自 diphosts 文件的相关参数进行配置。

使用 dSLIP 软件包的 SLIP 服务器。

Matt Dillon <dillon@apollo.west.oic.com> 编写了一个软件包,它不仅可以拨入,还可以拨出 SLIP。Matt 的软件包是管理您的连接的小程序和脚本的组合。您需要安装 tcsh,因为至少其中一个脚本需要它。Matt 提供了一个 expect 实用程序的二进制副本,因为其中一个脚本也需要它。您很可能需要一些 expect 经验才能使此软件包按您的喜好工作,但不要因此而退缩。

Matt 在 README 文件中编写了一套很好的安装说明,因此我不会费心重复它们。

您可以从其主站点获取 dSLIP 软件包:apollo.west.oic.com

/pub/linux/dillon_src/dSLIP203.tgz
或从:metalab.unc.edu
/pub/Linux/system/Network/serial/dSLIP203.tgz
在执行 make install 之前,请阅读 README 文件并创建 /etc/passwd/etc/group 条目。
下一页 上一页 目录