荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: Rog (leang kei ka), 信区: Linux
标  题: [CLDP]NET-HOWTO
发信站: BBS 荔园晨风站 (Sun Dec 13 20:19:35 1998), 站内信件

【 以下文字转载自 Rog 的信箱 】
【 原文由 rog.bbs@@IEESR-SUN.stu.edu.cn 所发表 】
发信人: linux (熊哥), 信区: Unix
标  题: [CLDP]NET-HOWTO
发信站: 郁金香 BBS (Mon Oct 19 21:15:12 1998), 转信


  Linux NET-2/NET-3 HOWTO Chinese Version v2.7
  Linux 中文文件放送组织(play one)
  Linux Chinese Document Broadcasting Organization (LCDBO)

  苏子哲 Jerry Su, su@linux1.thu.edu.tw (keyin)
  吴侑达 Allen Wu, da@linux1.thu.edu.tw (keyin & 校正)
  Jun 27, 1995

  原著    : Linux NET-2/NET-3 HOWTO
            Terry Dawson, terryd@extro.ucc.su.oz.au
            v2.7, 08 Oct 1994


  □ 纲目 □

   1.  简介
   2.  声明
   3.  Questions already ?
   4.  相关文件
   5.  NET-2/NET-3 有支援的功能
   6.  取得 NET-2/NET-3 软体
   7.  设定(configuring) kernel
   8.  设定网路设备(Network Devices)
   9.  Routing(强制的)
  10.  设定(Configuring) network 的 daemons
  11.  高级的 Configurations.
  12.  实验中及发展中的 modules
  13.  一些 FAQ 及简要的答案
  14.  已知的 Bugs
  15.  著作权声明
  16.  其他 及 Acknowledgements.


  □ 细目 □
   1.  简介
   1.1.  自上一版以来改变的地方
   1.2.  Linux 网路的发展简史
   2.  声明
   3.  Questions already ?
   4.  相关文件
   4.1.  这份文件的版本
   4.2.  回馈
   5.  NET-2/NET-3 有支援的功能
   5.1.  已支援的 Ethernet cards.
   6.  取得 NET-2/NET-3 软体
   6.1.  kernel 原始程式
   6.2.  libraries (函式库)
   6.3.  网路设定(configuration)工具集
   6.4.  网路应用程式
   6.5.  其他的 drivers 或 packages.
   7.  设定(configuring) kernel
   8.  设定(configuring)网路设备(Network Devices)
   8.1.  Configuring /dev 目录下特殊的 device 档
   8.2.  在我开始之前需要什么资讯 ?
   8.2.1.  IP Address.
   8.2.2.  Network Mask (`netmask').
   8.2.3.  Network Address.
   8.2.4.  Broadcast Address.
   8.2.5.  Router (`Gateway') Address.
   8.2.6.  Nameserver Address.
   8.2.7.  SLIP/PLIP/PPP 使用者请注意 !
   8.3.  /etc/rc.d/rc.inet1,2 或 /etc/rc.net
   8.3.1.  rc.inet1
   8.3.1.1.  ifconfig
   8.3.1.2.  route
   8.3.2.  rc.inet2
   8.4.  设定 Loopback device (强制选用)。
   8.5.  设定 ethernet device. (选项)
   8.6.  设定 SLIP device (选项)
   8.6.1.  dip
   8.6.2.  slattach
   8.6.3.  什么时候我要用什么?
   8.6.4.  Static slip server with a dialup line and DIP.
   8.6.5.  Dynamic slip server with a dialup line and DIP.
   8.6.6.  使用 DIP.
   8.6.7.  Permanent slip connection using a leased line and slattach.
   8.7.  设定 PLIP device. (选项)
   8.7.1.  PLIP 接脚图
   9.  Routing(强制的)
   9.1.  Static/Manual(手动的) Routes.
   9.2.  内定 Route.
   9.3.  Proxy ARP.
   9.4.  gated - the routing daemon.
   9.4.1.  取得 gated
   9.4.2.  安装 gated
  10.  设定(Configuring) network 的 daemons
  10.1.  /etc/rc.d/rc.inet2 (rc.net 的后半段)
  10.1.1.  inetd.
  10.1.2.  syslogd.
  10.2.  一个 rc.inet2 范例档
  10.3.  Name Resolution.
  10.3.1.  /etc/hosts
  10.3.2.  named - 我需要吗 ?
  10.3.3.  /etc/networks
  10.3.4.  /etc/host.conf
  10.3.5.  /etc/resolv.conf
  10.3.6.  设定自己的 Hostname - /etc/HOSTNAME
  10.4.  其他档案
  11.  高级的 Configurations.
  11.1.  PPP - Point to Point Protocol(点对点通讯协定)
  11.1.1.  为何我要使用 PPP 代替 SLIP ?
  11.1.2.  何处可取得 PPP 软体 ?
  11.1.3.  安装 PPP 软体
  11.1.3.1.  The kernel driver.
  11.1.3.2.  pppd
  11.1.4.  Configuring and using the PPP software.
  11.1.4.1.  Configuring a PPP client by dial-up modem.
  11.1.4.2.  Configuring a PPP client via a leased line.
  11.1.4.3.  Configuring a PPP server.
  11.1.5.  Where to obtain more information on PPP, or report bugs.
  11.2.  Configuring Linux as a Slip Server.
  11.2.1.  Slip Server using sliplogin
  11.2.1.1.  Where to get sliplogin
  11.2.1.2.  Configuring /etc/passwd for Slip hosts.
  11.2.1.3.  Configuring /etc/slip.hosts
  11.2.1.4.  Configuring the /etc/slip.login file.
  11.2.1.5.  Configuring the /etc/slip.logout file.
  11.2.2.  Slip Server using dip.
  11.2.2.1.  Configuring /etc/net/diphosts
  11.3.  使用 Automounter Daemon - AMD.
  11.3.1.  什么是 automounter, 为何我要使用这种东西咧 ?
  11.3.2.  何处取得 AMD(AutoMounter Daemon)
  11.3.3.  An example AMD configuration.
  11.4.  把 Linux 当作一个 router
  12.  实验中及发展中的 modules
  12.1.  AX.25 - 业馀无线电玩家的通讯协定
  12.1.1.  何处取得 AX.25 软体。
  12.1.2.  安装 AX.25 software.
  12.1.2.1.  The kernel drivers.
  12.1.2.2.  The user programs.
  12.1.3.  设定及使用 AX.25 软体
  12.2.  Z8530 SCC driver.
  12.3.  Ottawa PI/PI2 card driver.
  12.4.  NIS - Sun Network Information System.
  12.5.  snmp agent.
  12.6.  Experimental ARCNet driver
  12.7.  实验性的 Token Ring driver
  12.8.  V.35 界面板
  12.9.  Slip 套餐软体
  12.10.  tcpdump 工具程式
  13.  一些 FAQ 及简要的答案
  13.1.  一般问题
  13.2.  错误讯息
  13.3.  Routing 的问题
  13.4.  使用网路档案系统(NFS, Network File System):
  13.5.  SLIP 的问题:
  14.  已知的 Bugs
  15.  著作权声明
  16.  其他 及 Acknowledgements.

  这份文件主要是在解说如何取得、安装及设定(configure) Linux NET-2 及
  NET-3 网路软体。也包含了一些 FAQ 的答案。

  1.  简介

        这是 Linux NET-2-HOWTO 。 这份文件是早期的 NET-FAQ 完整重写版,
        也是 NET-2-HOWTO  versions 1.0+ 的更新版, 是针对 Linux kernels
        1.0版以上的 NET-2 及 NET-3 TCP/IP Networking code 而写。


  1.1.  自上一版以来改变的地方

        增加:
          增加新的 ARCNet driver 的细节 - 感谢 Avery。
          增加 tcpdump location 的细节。

        修正:
          更正 dip 的 symlink 及 chmod 问题 - 感谢 Lamar。
          更新 Matt Dillon 的 slip management suite 版本。


  1.2.  Linux 网路的发展简史

        Ross Biro <biro@yggdrasil.com> 撰写最原始的 Linux 网路核心程式
        码 (Networking kernel code) 的基础。他使用了:

        Donald  Becker  <becker@cesdis1.gsfc.nasa.gov>  写的  ethernet
        drivers Laurence Culhane <loz@holmes.demon.co.uk>  所写的 slip
        driver Bj0rn Ekwall <bj0rn@blox.se> 所写的 D-Link driver 。

        Linux 网路程式码后续发展由 Fred van Kempen <waltje@hacktic.nl>
        继续, 他使用 Ross's 的程式码, 并发表 NET-2 版网路程式码。

        NET-2  直到  NET-2d  版发布时,  才修订许多地方。 当  Alan  Cox
        <iialan@iifeak.swan.ac.uk>  拿到 Fred's NET-2d code 并著手除错
        时,目标在定在出版稳定的工作版本, 为了要并入标准的  kernel 版本
        中。

        这个版本叫做  NET-2D  (ebugged), 在 Linux  vers  1.0 发行之前,
        NET-2D 已经并入标准的 kernel 版本中。

        PPP 的支援由 Michael Callahan, <callahan@maths.ox.ac.uk> 及 Al
        Longyear, <longyear@netcom.com> 来加入, 原来只是个 patch, 而且
        后来版本只列为选项。

        Fred 继续发展他的 kernel network code, 并发行 NET-2E 。 若你对
        Fred的新工作有兴趣的话, 可以查查本文后面的列表。

        随著 Linux vers 1.0 的发行, Linus 决定继续支援  Alan's 网路码,
        并将之列为标准的网路核心码 (network kernel code) 。

        最新的修订版, NET-3, 出现在 1.1.5 以上的 kernel 版本中, 基本上
        是相同的程式码, 但包含了许多的 bug fixes 、修正及加强。

        Alan 加入了 IPX 及 AX.25 modules 的功能。

        Florian La Roche, <flla@stud.uni-sb.de> 已经发了一个修订过的网
        路应用程式版本。

        除非其他文件有说明, 不然这文件指的是「标准核心版本」所包含的网
        路程式码。在这整个文件上将同时提供 Fred 的程式码, 但当发展的途
        径的分开时, 两种版本很可能会有不同的地方。


  2.  声明

        Linux  networking  code 是一个全新的、 以核心为基础的  (kernel
        based) TCP/IP 诠释方式。它由剪贴 ( 拼装 ) 发展而成, 不是现行市
        面上 kernel networking code 的移植版。

        因为它是一个新鲜的 implementation, 它可能还有一堆的 bug 或问题
        , 及 bug fixes 及 patch 发布出来。如果你担心这些问题, 你只要维
        持在有支援 standard kernel code 及工具程式集的版本上就可以了。
        有一些劳心劳力的人组成的 team 在撰写、测试 networking code, 并
        收集、报告相关的 bug及问题。你遭遇的问题「可能」已经有报告出来
        , 且也有人在 fix 了, 很快的会修正过来, 所以要有耐心。 假如你帮
        得上忙, 不彷提供协助。

        我们不会, 也不能, 知道所有 Linux 网路软体的问题。 这份文件可能
        有错误的地方, 所提到的软体, 请再深入读该软体的 README档。

        我们将试图尽量维持这份文件没有错误而且是最新的。  Versions  of
        software are current as at time of writing.

        备注: 虽然本文跟 Berkeley Software Distribution NET-2 版本很像
              , 但 Linux network code 实际上与 BSD NET-2 并无关连 。不
              要搞错了。


  3.  Questions already ?

        `The only stupid question is the unasked one.'
        `最笨的问题就是那个一直没问出口的问题`

        如果你有一般的设定   (configuration)   问题,  而且在读了其他的
        HOWTO及  FAQ 后, 仍然找不到答案的话, 请贴到 comp.os.linux.help
        我们会优先处理, or, 如果你相信自己的问题与  Linux Nerwork code
        有关,你可以贴到 NET mailing list. 『请尽量描述清楚相关的资讯』
        。  ( 如: 设备、版本、设定... 等 ) 没有比 " 贴个资讯不足的 bug
        或问题 "更烦人的了。

        版次及 code 的修订、所有问题的细部统计、发生状况的详情, 是基本
        的。 Trace 及 debug messages 可以取得的地方应该也要强制考虑。

        如果你有一个与任一版本  linux  的设定有关的问题, 不管谁提供的,
        在报告问题给  network code developers 前, 请先与第一个发行的人
        联络。原因在于一些其他的版本使用了非标准化的目录结构, 且提供了
        非标准的测试与工具。 你不能期待 NET-2 code developers 支援除了
        本文件说明的不同格式的版本, (or as per distributed  Alpha/Beta
        test instructions.)

        欲参加  mail list server 中的 Linux NET channel, 请寄信到:


           linux-activists@niksula.hut.fi

           内容要加一行:

           X-Mn-Admin: join NET

           在信件的最上面一行(不是 subject 那行)


        记住 NET channel 只供讨论发展之用。

        也注意有个  PPP list 已经建立。 若要加入, 请依照以上程序来加入
        NET channel, 但 X-Mn-Admin: 这个栏位要从 NET 改为 PPP 。

        同时注意  HAMS list 已经建立, 这个 list 建立来讨论程式  ( 关于
        Amoteur  Radio), 若要加入这个  list,  请模仿加入  NET  or  PPP
        channel 的程序并要在 X-Mn-Admin: 这个栏位用 HAMS 取代 NET 。


  4.  相关文件

        如果你要找这份  HOWTO 文件找不到的 TCP/IP 的资讯, 你可能要 try
        以下的来源, 它们提供了不少的资讯。

        Olaf Kirch 写了一堆的文件当作 Linux Documentation Project 的一
        部份, 标题是 The Linux Network Administration Guide 。这是一份
        很优秀的文件包含了所有设定方面的步骤, 并在 linux 下使用 tcp/ip
        network,包含 NFS, UUCP, mail, News, nameserver 等等。

        Olaf 的书中提供这个 HOWTO, 并在这份文件停止的地方继下去。 这份
        文件涵盖 NET code 的安装及设定  (configuration), 也就是说 ` 如
        何把你的电脑放到网路上 ' 。如果你是 unix networking 的新手, 那
        么我强烈建议先取得一份拷贝并读读看。它将为您解答许多这份 HOWTO
        文件中所没有的问题。

        最新的版本可以在下列节点取得:

            sunsite.unc.edu

               /pub/Linux/docs/linux-doc-project/network-guide/*


        这个目录下有许多不同版本的文件, 一般的格式都有支援, 如: ascii,
        Postscript, DVI, Latex 及 groff 。

        The Linux Network  Administrators  Guide  is Copyright  (c) by
        Olaf Kirch.

        你也应该读一读其他有关网路的 Linux HOWTO 文件。

        例如:

        Ethernet-HOWTO
          (ftp://sunsite.unc.edu/pub/Linux/docs/HOWTO/Ethernet-HOWTO)
          如果你要在 linux 上使用 ethernet card 的话, 你应该读一读它。
          它包含了耕多的细节: 如何在 linux 上选择、安装、设定(configure)
          一个 ethernet card。

        Serial-HOWTO
          (http://sunsite.unc.edu/mdw/HOWTO/Serial-HOWTO.html)
           如果你要使用 slip 或 ppp 提供服务的话。

        Mail-HOWTO
          (http://sunsite.unc.edu/mdw/HOWTO/Mail-HOWTO.html)

        News-HOWTO
          (http://sunsite.unc.edu/mdw/HOWTO/News-HOWTO.html)
          设定 Mail and News 在你的系统上的资讯。

        The UUCP-HOWTO
          (http://sunsite.unc.edu/mdw/HOWTO/UUCP-HOWTO.html)
          如果你要透过 UUCP 连到另一个网路的话。

        若要得到更多 UNIX 网路设定的一般资讯, 来帮助你设定自己的网路的
        话, 可参考:  O'Reilly  and  Associates  的书  "TCP/IP  Network
        Administration"  ( 封面有只螃蟹 ) 记住 Linux Network code 现在
        已经支援标准的  TCP/IP 网路。 设定并使用它的方式就如同在其他的
        UNIX OS 上一样。只是有些参数或选项可能会与书上所讲的有些出入。

        一般来说, 如果你在读了一些基本的 TCP/IP 网路的资讯, 你还可以看
        看以下的文件:

        athos.rutgers.edu

             /runet/tcp-ip-admin.doc
             /runet/tcp-ip-admin.ps
             /runet/tcp-ip-intro.doc
             /runet/tcp-ip-intro.ps

        如果你已经读完相关的 TCP/IP 细节资讯, 我推荐你一本书:

             "Internetworking with TCP/IP"
             by Douglas E. Comer
             ISBN 0-13-474321-0
             Prentice Hall publications.


  4.1.  这份文件的版本

        最新的释放版本可以使用 annoymous ftp 来取得:
            sunsite.unc.edu

             /pub/Linux/docs/HOWTO/NET-2-HOWTO
             /pub/Linux/docs/HOWTO/other-formats/NET-2-HOWTO.{tex,ps,dvi}

        透过 World Wide Web 可以从  Linux  Documentation  Project  Web
        Server取得:
          (http:  //sunsite.unc.edu/mdw/linux.html),

        在 NET-2-HOWTO 那一页:
          (http: //susnite.unc.edu/mdw/HOWTO/NET-2-HOWTO.html) 或以下
          目录

        me, <terryd@extro.ucc.su.oz.au>. 它也会定期的贴在: newsgroups:
        comp.os.linux.announce, comp.os.linux.help, 及 news.answers 。

        你可以找 news.answers  的 FAQ postings, 包括这份文件, 亦可由下
        列节点取得:

                rtfm.mit.edu:/pub/usenet.


  4.2.  回馈

        请寄给我 <terryd@extro.ucc.su.oz.au> 任何的文件、 更新或建议。
        我越快拿到你的来信  ( 回馈 feedback), 我就能越快更新及修正这份
        文件。   如果你发现文件中有任何问题,    请寄信给我,   而不要在
        newsgroups 上贴布告, 可能我会漏读了。谢谢!


  5.  NET-2/NET-3 有支援的功能

        NET code 是写在 Linux kernel 里面, 且以 TCP/IP 为准。
        NET-2 及 NET-3 版本的网路程式码(network code)支援:

           Ethernet Cards
              大部分普遍的 ethernet cards 都有支援。

           SLIP (Serial Line IP) and PPP
              在 serial lines(如: telephone, 或两台电脑间的 cable 线 )
              上透过 modem 提供 tcp/ip networking

           Van Jacobsen Header Compression
              用来压缩 TCP/IP packet的档头, 以在慢速的线上提高 slip 的
              performance。

           PLIP (Parallel Lines IP)
              允许你使用 printer ports 来连接两台很接近的电脑。

           NFS (Networked File System)
              允许你 mount 远端机器的 filesystems。

           AX.25 (A protocol used by Amateur Radio Operators)
              Alan Cox 写的实验程式码, 已经可以取得。

           PI Card (An 8530 SCC based card used by Amateur Radio Operators)
              这是一个实验性的 PI Card driver, 已经可以取得。

           IPX/SPX (Novell)
              允许你写个人的 SPX / IPX 应用程式 , 或把 Linux 当作 IPX
              router。

        NET-2 and NET-3 network code 还没支援的:

           NCP (Novell) support
              允许 Linux 提供并 mount Novell network devices。这个部份
              还在开发。

           Lan types other than ethernet
              这是说类似 token ring, arcnet, FDDI, 等等的东西 , 实验性
              的 Token Ring driver 已经开发完成, 实验性的 ARCNet driver
              也开发完成了。(以后会详述)

           ISDN Support
              正在开发。


  5.1.  已支援的 Ethernet cards.

        标准的 linux kernel 支援下列形式的 ethernet cards:

        o  NE2000/NE1000 及「相容甲麦哭爸」的卡(close compatibles)。
        o  WD80*3 and close compatibles.
        o  SMC Ultra
        o  3c501 (龟速)
        o  3c503 and close compatibles.
        o  3c509/3c579
        o  HP PCLAN (however a newer kernel is required for the HP PCLAN+)
        o  AT1500 and NE2100 (LANCE and PCnet-ISA) and close compatibles.
        o  AT1700 (非相容品)
        o  DEPCA and close compatibles.
        o  D-Link DE600 pocket adaptor and close compatibles.
        o  AT-LAN-TEC/RealTek pocket adaptor and close compatibles.

        其他的 drivers 可在较新的 kernel 版本(1.1.*+)中找到。

        Ethernet-HOWTO 包含一驼很有用的资讯来支援 ethernet cards: 包括
        如何选择一块 ethernet card 如果你要买某个规格的产品。

        就像以上所说的,   Linux    支援其他网路连接工具,    假如你没有
        ethernet card 或其他直接的网路连线。许多大学及世界性的公司提供
        许多网路拨接  (Dail up) 的服务。 这些服务可能同时包括  SLIP 或
        PPP 。 你需要的只是一个电话线及一台 modem,( 如果你早已经有这些
        设备, 那最好不过了 ), 及适当地设定 (configure) 你的 linux 系统
        , 以下几章会说明细部的步骤。


  6.  取得 NET-2/NET-3 软体

        在你要设定 (configure) 网路软体之前, 你必须取得所有的部份。 这
        包含了现行的 kernel code, libraries, TCP/IP configuration 程式
        及档案 ( 如: /sbin/ifconfig, etc/hosts  等等 ), 最后要有一个网
        路应用程式集 ( 如: telnet, ftp, rlogin 等等 )

        如果你从散布的节点取得 Linux, 那么你要的东西应该都已经有了检查
        并确定你所要做的事。 例如: 有些散布的版本包含了所有网路设定档,
        执行档, 函式库, 及 kernel, 所以没有必要再去抓以下的档案。

        备注: they 可能在某些 "与本 HOWTO 文件所说的不同的" 目录及档案
              中。

        如果你真的有网路软体了, 可直接跳到 `Configuring the kernel' 那
        一节。没有的话, 就看下一个步骤吧!


  6.1.  kernel 原始程式

        Linux  kernel  1.0  是正式的发表的版本。 其他  release  出来的
        kernel 是加强或 bug fixed 的版本。

        如果你觉得有必要去  patch 及修改 kernel 原始程式的话, 则你应该
        跨到这个 release, 因为它可以做你想要做的事。

        虽然在这个网路程式码的情况下,  我强烈建议你跟随最新版本的脚步,
        因为它们有许多改变的地方足以影响网路的运作, 但是当你在  try 新
        的版本 kernel 的时候, 你总要确定把系统 backup 完全, 因为在你测
        试的时候, 有些东西会出现重大的错误。

        现在的 kernel 版本可在以下节点取得:

        ftp.funet.fi

             /pub/OS/Linux/PEOPLE/Linus/v1.1/v1.1.45.tar.gz

        这是一个 gzip 过的档, 所以你药用 gzip 把它给解压出来
        速速看以下的作法:

             # cd /usr/src
             # mv linux linux.old
             # gzip -dc v.1.1.45.tar.gz | tar xvf -

        你也可以在同一个目录下, 找到一些 patch 档 (patch46.gz)... 如果
        你有 1.1.45 版的 kernel 表示你有 kernel 1.1.0 版再加上 1 到 45
        的 patch 。所以你不必再做其他之前的 patch 。 如果有 patch 是比
        你的 kernel 版本还大的话, 你应该取得并 patch 上去。 步骤大概如
        下:

             # cd /usr/src
             # gzip -dc .../patch1.gz | patch -p0
             # gzip -dc .../patch2.gz | patch -p0
             # gzip -dc .../patch3.gz | patch -p0

              ...


  6.2.  libraries (函式库)

        你最少要有 4.4.2 版的 libc, 因为早期版本有 subnet masks 的问题
        。现行的 libraries (libc-4.5.26) 可在以下节点找到:

        sunsite.unc.edu

             /pub/Linux/GCC/

        你至少需要以下的档案:

                o  image-4.5.26.tar.gz
                o  inc-4.5.26.tar.gz
                o  extra-4.5.26.tar.gz
                o  release.libc-4.5.26

        你必须在开始 install 前读 release.libc-4.5.26 文件。请注意在文
        件中的某一行:  regrarding   deleting   the  older  version  of
        /usr/lib/libgcc.*   or  else  your  compiles   will  not  link
        properly.

        备注: 使用 4.5.26 版本你还需要  GCC  版本  2.5.7  以上及 Linux
              kernel 1.0+


  6.3.  网路设定(configuration)工具集

        你需要 utility suite, 它提供 tools 来设定你的网路。
        现行的 NET-2 utility suite 可在以下节点找到:

        sunacm.swan.ac.uk

        /pub/misc/Linux/Networking/PROGRAMS/NetTools
                                         /net-tools-1.1.38.tar.gz

        因为 kernel networking code 仍然持续在 kernel release 时, 改变
        network tools, 所以你必须选择适当的版本。

        档案的名字显示了 tool 可在哪个版次的 kernel 上执行。
        请选择版次与 kernel 相同或小于 kernel 版本的 tool。  <---- ?

        建立及安装工具, try:

             # cd /usr/src
             # mkdir net-tools
             # cd net-tools
             # gzip -dc net-tools-1.1.38.tar.gz | tar xvf -
             # make config
             # make

             If everything makes ok, then:

             # make install

        如果你使用 kernel version 1.1.26 或更早的版本, 你应该看看:

        sunacm.swan.ac.uk

             /pub/misc/Linux/Networking/PROGRAMS/Other/net032/

        在这目录中你会找到三种版本的网路工具。
        以下表格列出 net-032 package name, 及其 kernel 版本。

             net-0.32d-net3.tar.gz     1.1.12+
             net-0.32b.tar.gz          1.1.4+
             net-0.32.old.tar.gz       pre 1.1.4 kernels

        这些 packages 包含基本的网路设定程式, 例如: ifconfig, route,
        netstat 等等, 稍后会聊到。


  6.4.  网路应用程式

        你将会至少需要一驼的网路应用程式, 如: telnet, ftp, finger,网路
        daemons...  Florian La Roche, <flla@stud.uni-sb.de> 已经收集了
        相当完全的网路应用程式  (source code 或 binary), TCP/IP 应用程
        式的 binaries 及一些范例的 config 档可在以下节点找到:

        ftp.funet.fi

             /pub/OS/Linux/PEOPLE/Linus/net-source
                                    /NetKit/NetKit-A-0.07.bin.tar.gz

             /pub/OS/Linux/PEOPLE/Linus/net-source
                                    /NetKit/NetKit-B-0.06.bin.tar.gz

        如果有最新的版本, 就用最新的版本, 请先读 README 档, 确定你有必
        要的 prerequisites 。

        确定要做重要的 config 档的备份, 如果是新的安装你就不必这样做。
        解压的步骤:

             # cd /
             # gzip -dc filename.tar.z | tar xpvlf -

        非常注意!!! Florian  已经为您的方便, 事先压缩好了档案, Florian
        已经尝试尽量使得这些程式包含在 net-tools-n.n.nn releases中, 不
        幸的, Florian 选择的目录结构与 Alan 不同, 当他在为 net-tools准
        备  installation   script  时。  也就是说你要特别小心,  尤其在
        install的时候。 Florian 以后将会改回来使得这个问题消失, 但是直
        到那时候,我建议, 你用下列方式代替:

             -  在其他安全的地方解包
             # cd /usr/src
             # mkdir NetKit
             # cd NetKit
             # gzip -dc NetKit-A-0.07.bin.tar.gz | tar xpvlf -
             # gzip -dc NetKit-B-0.06.bin.tar.gz | tar xpvlf -

             -  砍掉 先前讲的 Florians 的网路工具拷贝(版本)。
             # rm ./bin/hostname ./sbin/route ./sbin/ifconfig ./sbin/netstat
             # rm ./usr/sbin/arp ./usr/sbin/rarp ./usr/sbin/slattach

             -  拷贝 Florian's 档案到新家:
             # cp -vrpd . /


  6.5.  其他的 drivers 或 packages.

        如果你要增加一些发展中的或  Alpha/Beta 测试程式码, 例如: AX.25
        的支援, 你需要取得这些 packages 适当的支援软体, 请检查相关的章
        节做细部了解。


  7.  设定(configuring) kernel

        在你可以使用网路工具前, 或在 config 任何网路 device 前, 你必须
        确定你的 kernel 已经内建 ( 建入 ) 网路支援  driver, 最好的方法
        就是 compile出自己机器的 kernel, 选择自己要的及不要的。

        若你已经取得并解出 kernel source, 并装了一些必要的非正式或发展
        中的 patch 软体, 你只需编辑 /usr/src/linux/drivers/net/CONFIG.
        这个档案有许多的内容可以指引你编辑那锅档, 通惕  A 不需要改太多
        东西,  因为有许多的内定值.   对我来说根本不需要编辑.  如果你的
        ethernet 网路卡很特别, 或无法被 ethernet driver 自动侦测出来的
        话, 这份文件对你来说会很有用。 它允许你 hard code 网路硬体的一
        些  elemets, 例如: 如果你的卡是专属的卡, 但不是像什么  WD-8013
        之类的卡, 那你就要设定  shared memory  address  来确定  driver
        detects 并且确定适当的驱动这张卡。读读 Ethernet-HOWTO 查看更多
        这个档案的定义资讯, 及对网路卡的影响。当然也包含 PLIP  的设定
        参数, 虽然内定值跑起来也不会有啥问题, 除非你的机器很慢。

        若是 CONFIG 档很适合你的机器, 那你就可以用来重建 kernel,第一步
        是先编辑最上层的 Makefile, 确定会适当地依照你的 VGA 设定来重建
        kernel, 然后跑一跑 kernel configuration 程式:

             # cd /usr/src/linux
             # make config

        执行之后会问你一堆的问题, kernel 中关于网路的部份共有四大选项,
        分别是: Gerneral  Setup, Networking  options,  Network  device
        support,及 Filesystems sections. 最困难的是设定 Network device
        support section, 因为它是你要选择使用哪种硬体  device 的地方你
        可以只用内定值, 跑起来也很安全。以下是一些大概的 idea

             *
             * General setup
             *
              ...
              ...
             Networking support (CONFIG_NET) [y] y
              ...
              ...

        在这区你只要选择是否你要网路支援, 通常ㄋㄟ...你只要回 "y" 就
        好啦 ...

        *
        * Networking options
        *

        TCP/IP networking (CONFIG_INET) [y] y
        IP forwarding/gatewaying (CONFIG_IP_FORWARD) [y] y

        *
        * (it is safe to leave these untouched)
        *

        PC/TCP compatibility mode (CONFIG_INET_PCTCP) [n] n
        Reverse ARP (CONFIG_INET_RARP) [n] n
        Assume subnets are local (CONFIG_INET_SNARL) [y] y
        Disable NAGLE algorithm (normally enabled) (CONFIG_TCP_NAGLE_OFF) [n] .
镟        The IPX protocol (CONFIG_IPX) [n] n

        第二部份是允许你启动或关闭一些 (funky features) 的网路设定或者
        接受内定值, 直到你需要改变:

             *
             * Network device support
             *
             Network device support? (CONFIG_NETDEVICES) [y]
             Dummy net driver support (CONFIG_DUMMY) [n]
             SLIP (serial line) support (CONFIG_SLIP) [y] y
             CSLIP compressed headers (SL_COMPRESSED) [y] y
             PPP (point-to-point) support (CONFIG_PPP) [y] y
             Load balancing support (experimental) (CONFIG_SLAVE_BALANCING) [n.
鲟             Do you want to be offered ALPHA test drivers (CONFIG_NET_ALPHA).
?             Western Digital/SMC cards (CONFIG_NET_VENDOR_SMC) [y] y
             WD80*3 support (CONFIG_WD80x3) [y] y
             SMC Ultra support (CONFIG_ULTRA) [n] n
             3COM cards (CONFIG_NET_VENDOR_3COM) [n] n
             Other ISA cards (CONFIG_NET_ISA) [n] n
             PLIP (parallel port) support (CONFIG_PLIP) [n] n
             EISA and on board controllers (CONFIG_NET_EISA) [n] n
             Apricot Xen-II on board ethernet (CONFIG_APRICOT) [n] n
             Pocket and portable adaptors (CONFIG_NET_POCKET) [n] n
             *

        这部份是最重要的, 也是关系最密切的, 他会让你选择你所要支援的网
        路 device, 你可以看到我有选支援档头压缩的  SLIP  设定, PPP, 及
        WD80*3 driver, 回 "y" 表示安装, "n" 表示不装。

             *
             * Filesystems
             *
              ...
              ...
             /proc filesystem support (CONFIG_PROC_FS) [y]
             NFS filesystem support (CONFIG_NFS_FS) [y]
              ...
              ...

        如果你希望跑  NFS client  那你一定要  include  NFS  filesystem
        type.你也需要包含  /proc filesystem 因为许多网路工具程式都会使
        用到。

        在你 config 完全之后, 所有剩下的只是 compile kernel:

             # make dep
             # make

        NOTE: 新的 kernel compiles OK 之后, 不要忘了 make zlilo。


  8.  设定(configuring)网路设备(Network Devices)

        如果目前为止都还顺利的话, 那你将会得到一个支援网路  device  的
        kernel , 而且包含了网路工具可以用来 configure.现在就来 play 吧
        ! 你将需要设定 (configure) 每个你要使用的  device.设定中通常告
        诉你一些 IP address, 及它所要连的网路。

        在之前几版的 NET-2 文件中, 我已经写了差不多接近完整的版本,包含
        许多的设定档, 及适当地修改删除的文字。从这个版本中, 我使用了一
        些不同的方式, 你会有完整全的  uncluttered  configuration  that
        you have built  from scratch  so you know  exactly  what is in
        them, and why. 我将会说明每个档案、及它们的功能。


  8.1.  Configuring /dev 目录下特殊的 device 档

        你不需要设定任何  /dev  目录下,  所有关于  linux  网路的特殊的
        device  档, Linux 不需要也不使用他们, 不过其他的作业系统可能会
        用到。 kernel 会在 memory 中动态地建立 device,而且既然他们只是
        一些名字而已, 所以就没有需要直接出现在你面前。 kernel 提供所有
        你需要的 programing hooks 及界面,来更有效地使用这些 device 。


  8.2.  在我开始之前需要什么资讯 ?

        在你 configure 网路软体之前, 你需要知道一些你自己的网路连线  (
        架构 )的资讯, 你的网路「提供者」或「管理者」将可以提供你这些资
        讯。


  8.2.1.  IP Address.

        这是每一台机器唯一的位址, 是以十进位加以组合起来。 例如:某个数
        128.253.153.54, 你的网路管理者会提供你这些资讯。

        你若要使用 slip or plip 的连线, 你可能不需要这些资讯, 所以你可
        以略过不读。

        如果你只用 loopback device, ( 也就是说不连乙太网路 (ethernet),
        slip or plip support), 你将不需要  ip address 当 loopback port
        总是使用 127.0.0.1 的时候。


  8.2.2.  Network Mask (`netmask').

        为了执行效率起见, 需要限制网路上的特定区段的 host 数, 通常网路
        管理者把他们的网路分成几个小网路 (subnets), 然后 assign 每个小
        网路一部份的  network addressed, 当 network mask 以 bit 的形式
        覆盖在你自己的网路上的  address 时, 它将告诉你它所在的小网路。
        这对 routing  来说很重要, 如果你找到一个可以快乐地在网路外跟人
        聊天的例子, 但是不是在你自己的网路上, 那很可能你设错了  subnet
        mask.

        你的网路管理者在网路被规划时, 就已选定  netmask 了, 因此他将提
        供你正确的   netmask.    大部分   class-C   的小网路,   都使用
        255.255.255.0  当作 netmask, 其他大的网路使用  class-B netmask
        (255.255.0.0).  当你 assign一个  address 给一个 device 的时候,
        NET-2/NET-3 程式码将自动地选择内定的 mask.  内定值假设你的网路
        还没被划分为小网路, NET-2/NET-3 程式码会选择以下的设定作为内定
        资料:

             For addresses with the first byte:
             1-127         255.0.0.0         (Class A)
             128-191       255.255.0.0       (Class B)
             192+          255.255.255.0     (Class C)

        如果以上这些都不能 run, 试试其他的。如果都还不行, 请问问你的网
        路管理者, 或 LAN guru (dime a dozen), 你不必担心 loopback port
        的 netmask, 除非你跑 slip/plip 。


  8.2.3.  Network Address.

        这是使用你的 netmask 所作出来的 IP address.
        netmask 以 bit 对 bit 来做 AND 运算。
        例如:

             If your netmask is:           255.255.255.0
             and your IP address is:       128.253.154.32    &&
                                           ---------------
             your Network address is:      128.253.154.0     =


  8.2.4.  Broadcast Address.

        `A shout is a whisper that everyone hears whether they need to
        or not' ( 这不需要翻译了吧?)

        这个正常是以你的 network address 与反相的 netmask 来做 OR 运算
        。 做的比说的更简单啦! 对一个 Class-C 的网路来说, network mask
        255.255.255.0, 你的 Broadcast Address 就是你的 network address
        ( 上面所计算的 ), 跟 0.0.0.255( 也就是 netmask 的反相 ) 做逻辑
        OR 的运算,

        以下是一个简单的范例:

             如果你的 netmask 是:         255.255.255.0      !
             netmask 的反相就是:            0.  0.  0.255    =
             如果你的 Network address 是: 128.253.154.0      ||
                                          ----------------
             你的 broadcast address 就是: 128.253.154.255    =

        注意一个由来已久的原因: 一些网路使用以  network  address  当作
        broadcast address. 如果你有疑问请与你的网路管理者联络。

        如果你能使用 sniffer, 或其他能提供你追踪网路流量的设备的话, 你
        就可以以查看其他   LAN  流量,  来决定  network  及  brodadcast
        addresses,   眼睛随时要盯著或过滤每个封包,  除了往   broadcast
        address ff:ff:ff:ff:ff:ff流去的 ethernet 封包之外。 如果其中有
        一个你的区域  router 的 IP source address, 而且 protocol ID 不
        是 ARP 的话, 哪你要 check 目的 IP address,因为这个封包可能真的
        是个从你的 router 广播的出去的 RIP, 这种情况下目的  IP address
        将是你的 broadcast address.

        再次叮咛您, 如果你不确定, 一定要跟你的网路管理者  check check!
        他们的帮助比你用 config 错的机器来连网路还能帮助你.


  8.2.5.  Router (`Gateway') Address.

        `There must be some way out of here.'

        这是一个将你的 LAN 连至 Internet 的机器的位址,那是你的电脑连到
        外面网路的穿堂, 有许多的先例可用来   allocating  addresses  给
        routers, 你也可以引用,有两种:

                router 使用最低的 address,
                router 使用最高的数字。

        可能最常用的是第一个, router  会拥有一个位址, 大部分会跟你的一
        样。 除了最后一个  byte  是  ".1"  之外。 例如: 假如你的位址是
        128.253.154.32,那你的 router 可能是 128.253.154.1. router 实际
        上可以使用任何网路上可用的  address (& function  properly), 跟
        address 丝毫没有绝对的关系。 你的网路上可能有好几个 router, 你
        可能要跟你的网路管理者询问看看, 找出一个合适的  router address
        。

        如果你不使用 loopback 的方式, 你不不需要 router address.  如果
        你使用 PPP, 那你也不需要知道你的 router address, 因为 PPP 会自
        动替你决定正确的  address  。  如果你使用  SLIP,  你的  router
        address 将会是你的 SLIP server 的 address.


  8.2.6.  Nameserver Address.

        大部分网路上的机器都有使用  name server, name server  负责翻译
        hostname与  ip  address  等等,  你的网管者会告诉你最近的  name
        server, 你也可跑个 nameserver daemon(named) 在自己的机器上, 而
        你的 nameserver  就要设成  127.0.0.1  ( 也就是  loopback  port
        address). 不过, 也并不是很必要在自己的机器上跑 named; 有需要的
        话可看 named 那一章。

        如果你只使用 loopback, 那你不需要知道 nameserver address, 因为
        你只跟你的机器相看两不厌咧...


  8.2.7.  SLIP/PLIP/PPP 使用者请注意 !

        事实上, 你很有「可能需要」或「可能不需要」知道任何以上的资讯。
        不管你需要或不需要都要看你的网路怎么连接, 及连线远端 host 的能
        力, 相关的细节在 SLIP/PLIP 及 PPP 的设定中。

  8.3.  /etc/rc.d/rc.inet1,2 or /etc/rc.net

        当你每次自己动手修改网路设备的设定时, 你将可能要把这些东西记在
        某个地方, 这样系统每次启动上来时, 都会自动设定网路。

        这些 `rc' 开头的档案是专门设计用来做启动系统的初始化。对一些非
        标准的  unix 系统 (non-unix-wizard): `rc' 系列的档案是在系统启
        动时用  init program  来执行的。 并执行所有基本的系统程式, 像:
        syslog,  update,  及  cron   。   rc  系列档案与   MS-DOS   的
        autoexec.bat 很类似。 rc 也可能代表 `runtime commands'. 这些档
        案一般是放在 /etc 下面, Linux Filesystem Standard 目前并没硬性
        规定要放在哪里。依 BSD (/etc/rc.*) 或 System-V (/etc/rc.d/rc*)
        的惯例两者皆可。 Alan, Fred 和我都使用 System-V 的用法。也就是
        你现在所看到的状况。也就是说这些档案可在 /etc/rc.d 目录下找到,
        rc.inet1 及 rc.inet2 开机启动时第一个被执行的档案是 /etc/rc,然
        后依序呼叫其他的 rc 系列档案, 如: rc.inet1, rc.inet2, 他们放在
        哪里他们叫时么、并不很重要, 因为 init 找到们他。

        在某些版本 rc 系列关于网路的档案叫做 rc.net, 且放在 /etc 。 在
        linux上则是放在 rc.inet1 和 rc.inet2, 且会接著执行 commands 出
        现的地方其实没什么重要, 在你执行网路 daemon 及应用程式前, 你要
        先 configure interface.

        我指的这些档案是 rc.inet1 或 rc.inet2, 放在 /etc/rc.d 里, 所以
        如果你正在使用的版本中是 rc.net 的话, 你要保留这些档案在某个地
        方, 然后做适当的修正。

        我们要做的时候, 会从 scratch 来建立档案。


  8.3.1.  rc.inet1

        rc.inet1 使用 /sbin/ifconfig 及 /sbin/route 来设定你机器基本的
        tcp/ip 界面。

  8.3.1.1.  ifconfig

        /sbin/ifconfig  是用来设定你的网路界面,  它使用了一些参数, 如:
        IP address, netmask, broadcast  address.  你可以使用不加参数的
        ifconfig命令来显示网路 device 的设定, 请用 man 来查看 ifconfig
        的详细内容。


  8.3.1.2.  route

        /sbin/route  是用来开启, 修改, 删除, routing table 中的项目.如
        果网路上有个 datagram 要传的话, 网路会查询这个 table.  routing
        table 列出目的的位址, 及这个 address 可能使用到的界面.你可以使
        用 route 这个命令  ( 不加参数  ) 来显示  routing  table 的内容
        check check route 的 man page 就知道啦。


  8.3.2.  rc.inet2

        rc.inet2 会启动所有网路  daemon, 像 inetd, portmapper  等等.在
        rc.inet2 一章中会说的更多。目前我们只著重在 rc.inet1在此我提到
        这个档案,  如果你的档案名字不同  (  如: rc.net),  你必须要知道
        rc.net 执行过后要执行哪个 rc 档.在此我只提到著个档名, 所以如果
        你驱动网路的  rc 不叫做 rc.inet1 ( 例如: rc.net)那你要知道网路
        的第二部份是啥档名 ( 或许没有吧 ) 。在设定完你的网路 device 之
        后, 你必须要执行必要的网路 application及 daemon 。


  8.4.  设定 Loopback device (强制选用)。

        loopback device 并不是一个真实的 hardware device. 他只是一个软
        体但是看起来像一个实体的 interface. 它的功能是让你更快乐地连到
        你自己的机器, 而且可测试软体, 不需要真的连到网路上。这个东西棒
        呆了, 如果你在发展网路软体的话, 而且你有 slip 的连线的话。你可
        在自己单机上撰写并测试, 如果写好了就用  slip  连线给他卯起来踹
        ... 如果你的软体乱来的话也不会影响到别人...

        依照惯例, loopback device 总是使用 127.0.0.1  这个 IP address,
        所以你在设定时将会使用到它。

        linux 的 loopback device 叫做 `lo', 你现在就可以把第一个 entry
        加入 rc.inet1 中, 以下 shell script 将可以执行:

        #!/bin/sh
        #
        # rc.inet1   --  configures network devices.
        #
        # Attach the loopback device.
        /sbin/ifconfig lo 127.0.0.1
        #
        # Add a route to point to the loopback device.
        /sbin/route add 127.0.0.1
        # End loopback
        #

        在你用 ifconfig 来给定 loopback interface 一个 IP address 及用
        route  在  routing  table  中增加一个   entry  之后,  所有送往
        127.0.0.1 的封包将会送到 loopback port.

        这边有两点很重要:

        第一、 netmask 及 broadcast addresses 已经允许使用内定值, 用在
               loopback  device ( 先前有在  `Network  Mask' 一节讨论到
               ),用 ifconfig 查看。


             # ifconfig
             lo        Link encap Local Loopback
                       inet addr 127.0.0.1  Bcast 127.255.255.255  Mask 255.0..

?                       UP BROADCAST LOOPBACK RUNNING  MTU 2000  Metric 1
                       RX packets 0 errors 0 dropped 0 overrun 0
                       TX packets 30 errors 0 dropped 0 overrun 0
             #

        第二、 route 选择 loopback device 当作 route 到 127.0.0.1 的原
               因不明显  route  这个指令很聪明的啦, 它知道  127.0.0.1
               属于被 loopback device 支援的网路 , 它会检查 IP address
               及 netmask.你可以使用 route 来列出 routing table:

             # route
             Kernel routing table
             Destination     Gateway         Genmask         Flags Metric Ref .
             127.0.0.0       *               255.0.0.0       U     0      0   .
ce
             #

        Note: 你可能需要加 -n 参数, 如果你的 name resolver 还没正确地
              设定的话。加 -n 参数后, route 只会显示数字 numeric
              addresses , 而部会麻烦到查询 domain name.


  8.5.  设定 ethernet device. (选项)

        如果你希望设定你的 ethernet card 你会对这这节有兴趣的。 不然的
        话你可以略过, 跳下一节。

        设定 ethernet card 有点儿复杂, 比起设定 loopback device 来讲。
        你现在就可以指定明确的  network  mask 及 broadcast  address 在
        rc.inet1 中了, 除非你确定内定值跑起来也没问题, 那也可以。

        你需要一个网路管理者  assign  给你的  IP  address,  自己网路的
        network mask, 及 broadcast address.

        linux 的第一个 ethernet device 叫做 `eth0', 第二个叫做 `eth1',
        起馀类推。 你现在可以加入一个新的部份到  rc.inet1  档中,  以下
        shell script 对你来说应该可以跑, 如果你使用真实的位址的话:

             #
             # Attach an ethernet device
             #
             #  configure the IP address, netmask and broadcast address.
             /sbin/ifconfig eth0 IPA.IPA.IPA.IPA
             /sbin/ifconfig eth0 netmask NMK.NMK.NMK.NMK
             /sbin/ifconfig eth0 broadcast BCA.BCA.BCA.BCA
             #
             # add a network route to point to it:
             /sbin/route add -net NWA.NWA.NWA.NWA device eth0
             #
             # End ethernet
             #

        参数说明:

           IPA.IPA.IPA.IPA
              表示你的 IP Address.
                       ^^ ^
           NMK.NMK.NMK.NMK
              表示你的 netmask.
                       ^  ^  ^
           BCA.BCA.BCA.BCA
              表示你的 Broadcast address.
                       ^    ^    ^
           NWA.NWA.NWA.NWA
              表示你的 Network Address.
                       ^  ^    ^
        注意 route 的 -net 参数.  这会叫 route 所加入的 route 是一个对
        网路的 route, 不是对某个 host. 有个修改的方法, 你可以不设 -net
        ,  如果你在   /etc/networks   中有网路的列表的话。  在  10.3.3
        `/etc/networks' 那节中会讲到。


  8.6.  设定 SLIP device (选项)

        SLIP (Serial Line Internet Protocol) 允许你在 serial line 上使
        用 tcp/ip, serial line 可以是电话线  +dialup modem, 或是一个专
        线 (leased  line) 之类的东西。 当然使用  slip 你需要能连到一个
        SLIP server 的管道, 许多大学及公司行号都提供 slip 的管道可以连
        到全世界。

        Slip 使用你机器上的 serial ports 来传输 IP 封包 (datagram), 为
        了达到效果它会控制  serial device.  Slip device 名字叫做  sl0,
        sl1等等,   这样的名字如何对应到你的    serial   devices    呢?

        networking  code 使用 ioctl() (i/o control) system call 来改变
        serial devices成 slip devices 。 这可由 dip 与 slattach 两个程
        式来做到。


  8.6.1.  dip

        dip (Dialup IP) 是个很精明的程式, 能设定 serial device 的速度,
        也可下指令自动连线到远端  server, 自动帮你 login 到 server 端,
        找寻 server 端送出的讯息, 并分析出它给的  IP address, 并执行必
        要的 ioctl 来切换你的  serial port 到 slip mode 下, dip 有一个
        很强大的使用 script 的能力, 能让你的 logon 程序自动化。

        dip 放在 net-032/net-tools package 中。 也有许多别的版本的 dip
        开发出来, 并提供了许多新的特色。可在以下节点找到:

        sunsite.unc.edu

             /pub/Linux/system/Network/serial/dip*

        dip-uri 这个版本似乎是较普遍的版本, 但是我建议你每个版本都看看
        看哪个提供的功能对你比较有用。


  8.6.2.  slattach

        slattach 是个很简单的程式, 容易使用, 但是它没有 dip 那样复杂。
        slattach 是个使用在你用  permanent connection  连到你的 server
        端的理想, 就像一条 physical cable, 或一条 leased line 。


  8.6.3.  什么时候我要用什么?

        你应该使用 dip, 当你使用 modem 连上一台 slip server 时, 或一些
        暂时的连线时。你应该使用 slattach, 当你有个专线 (leased line),
        可能是 cable, 在你的机器与 server 间, 且没有需要特别的动作来连
        线工作 {?} 。请看! 8.6.7 `Permanent Slip connection' 那节。

        设定 slip 跟设定 Ethernet  interface  ( 读 8.5 ` 设定 ethernet
        device'很接近, 只是有些地方不同。 首先, slip  links  是 unlink
        ethernet  networks, 只有两个 host 在这个网路上, 连线两端各一台
        机器, 不像 ethernet  那么快就连线, slip 要看你用什么连线, 你必
        须要用特殊的方法 initialize 你的 network connection 。

        如果你使用 dip, 那在开机时不会正常地跑, 有时是在当你稍后准备好
        连线时。它可以自动跑 procedure, 如果你使用 slattach 那你将可能
        要增加一些东西在 rc.inet1 档中 ( <-- 很快就会提到...)

        slip  server  主要有两种形式: Dynamic  IP address  servers  及
        static IP address servers. 几乎每个 slip server 会提示你 login
        及下 password, 当你拨进来的时候。  dip 可以自动帮你处理  login
        及 password 。


  8.6.4.  Static slip server with a dialup line and DIP.

        Static slip server 会提供你一个 IP address ( 相异于你自己的  )
        , 每次你连上 server 的时候, 它会根据它所提供的 IP address 来设
        定你的 slip port 。并因应你的 modem call, 而要求你输入使用者名
        称与密码, 之后, 它便会开始为你提供传送资料的服务了。假使你有个
        static server, 你可能就会想在  /etc/hosts 里为你的 hostname 与
        IP address 加入一些 entries 。 那你就必须要设定一些其他的档案,
        如: rc.inet2, host.conf, resolv.conf, rc.local , /etc/HOSTNAME
        。 记住!  你不用在  rc.inet1  里为  slip  的连接增加任何特殊的
        commands, 因为那些繁杂的工作会由  dip  为你完成,不过你必须提供
        dip 适当的资讯。届时, dip 就会在你命令 modem建立 the call 之后
        为你设定好界面, 并 logging 到你的 slip server 。

        如果这就是你  slip server 的工作, 那你就可以跳至  8.6.6 ` 使用
        DIP'那一节, 看看如何适当地设定 dip 。


  8.6.5.  Dynamic slip server with a dialup line and DIP.

        每次你 logon 的时候, dynamic slip server 会从一堆 addresses 中
        随机取出一个当作你的  IP  address  。 这表示说你每次取得的  IP
        address  都是不固定的。 通常网路管理者会规划分配一个范围的  IP
        address  给 server 使用, 当有使用者连上  server 的时候, server
        就会找出第一个尚未被使用的    address   并分配给使用者,   并在
        welcome画面上知会, 接著使用者就可以用此一  IP address 开始进行
        工作了。

        对于此类的 server, 设定方法类似  static server, 除了你必须增加
        一个步骤  ---  依据 server 指定的 IP address  来设定你的  slip
        device 。

        同样的, dip 会自动处理一些繁杂困难的工作。 较新版本的 dip 不但
        会帮你 login 还会自动读进显示在  welcome 画面上的 IP address并
        加以储存, 以方便你的 slip device 设定工作。

        如果这就是你  slip server 的工作, 那你就可以跳至  8.6.6 ` 使用
        DIP'那一节, 看看如何适当地设定 dip 。


  8.6.6.  使用 DIP.

        如同先前谈过的, dip 是个威力强大的程式, 可以自动执行 dialin 的
        程式  logon  到远端的  slip server, 帮你连线, 使用 ifconfig  &
        route来帮你设定你的 slip device 。

        想使用 dip 就要先写个  `chat script', 上面写些基本的  commands
        list, 让 dip  依照你的要求来执行  actions  。 下面附上的例子是
        net-032 package 的。  dip 是个相当好用的程式, 有相当多参数可使
        用 , 有需要的人, 可以查看  man page, README, 或者是  tsx-11 与
        net-032 distribution 范例档案上的说明。

        留意下面的例子, 它是假设你所使用的是 static slip server,所以要
        先知道你的 IP address 。若是使用 dynamic slip server, 较新版本
        的 dip 会有个 command, 可自动读进  slip device 与 IP address并
        加以设定。 下面的范例是由 Paul Mossip 所提供的, 很适合刚开始使
        用的人, 可以把它存档为 /etc/dipscript

        #
        # Connection script for SLIP to knoware.nl.mugnet.org
        #

          # Fetch the IP address of our target host.
        main:

          # Set the desired serial port and speed.
          port /dev/cua0
          speed 38400

          # Reset the modem and terminal line.
          reset

          # Prepare for dialing.
          send ATZ1\r
          wait OK 4
          if $errlvl != 0 goto error
          dial 666-0999                    ## Change to your server's number!
          if $errlvl != 0 goto error
          wait CONNECT 60
          if $errlvl != 0 goto error

          # We are connected.  Login to the system.
        login:
          sleep 3
          send \r\n\r\n
          wait gracelands> 20              ## Change to your server's prompt
          if $errlvl != 0 goto error
          send login\n
          wait name: 10                    ## Wait username: prompt
          if $errlvl != 0 goto erro
          send elvisp\n                    ## Change to your own!
          wait ord: 10                     ## Wait password prompt
          if $errlvl != 0 goto error
          send alive\n                     ## Change to your own!
          wait gracelands> 10
          if $errlvl != 0 goto error
          send slip\n                      ## Change to suit your server
          wait SLIP 30                     ## Wait for SLIP prompt
          if $errlvl != 0 goto error
          get $local remote 10             ## Assumes the server sends your IP.
 30 lo
ce
          if $errlvl != 0 goto error       ## address as soon as you enter sli.
 30 lo
ce
          get $remote gracelands           ## slip server address from /etc/ho.
30 lo
ce
        done:
          print CONNECTED to $remote with address $rmtip we are $local
          default
          mode SLIP
          goto exit
        error:
          print SLIP to $host failed.
        exit:
        #
        # End dip script


        上面的 example 假设你呼叫一个  dynamic slip server, 如果你呼叫
        static slip server, 把以下两行删除 ( 或 comment):

        get $local remote 10             ## Assumes the server sends your IP..
        if $errlvl != 0 goto error       ## address as soon as you enter slip.

        当 dip 被给予 get $local  的 command, 它会在从远端读进的文字档
        中搜寻类似  IP address 的字串, 也就是以 `.' 所分隔的数字字串。
        这项更动是为了  dynamic slip servers 而特别加上的,以便自动读取
        server 所分配的 IP address 。

        上面的例子会自动建出 default route 来对应你的 slip link 。假使
        说这不是你想要的, 而是想以别的当作你的 default route 的话,就将
        这项内定的 command 移走就是了。在跑完这个 script 之后,如果你下
        ifconfig 这个指令, 就会看到你有个 slip device 叫 s10。当你有需
        要的时候, 还可以在 dip 的 command 执行结束之后, 用 ifconfig 和
        route 指令, 自行修改它的设定。

        dip 允许使用者使用  mode 这个指令选择一个号码以使用不同的协定,
        一般用到的通常是 cslip 。 不过必须留意的是这个协定必须是连线两
        端所同意的, 所以无论你选的是何种协定, 你都必须确认 server 也是
        使用相同的协定。

        上面所说的例子是相当简略的, 可能还有些错误存在, 请自行参考 dip
        的 man page 。甚至你可以考虑再加上一些功能, 例如: 在等待时间内
        未连上 server 后重新拨接, 或是一次指定数个 server 来轮流拨接。


  8.6.7.  Permanent slip connection using a leased line and slattach.

        如果你有条 cable, 或是有 leased line 还是其他 permanent serial
        connection 来连接你的机器与其他机器, 那你就不必忍受使用 dip 时
        所必须遭遇的麻烦, 因为有个好用的公用程式 slattach 可提供你足够
        的功能来做连接的设定。

        既然你的连接是属于固定不变的那一类, 你可能会想要在  rc.inet1中
        加入一些设定。 基本上, 你所需要作的就是为 serial device 设定好
        正确的速度与切换 serial device 成 slip mode 。 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.


        Where:

           IPA.IPA.IPA.IPA
              represents your IP address.

           IPR.IPR.IPR.IPR
              represents the IP address of the remote end.

        slattach  会使用第一个尚未被占用的  slip  device  来当作特定的
        serial device 。  slattach 会由 s10 开始搜寻, 若 s10 被占用了,
        就会查看 s11 是否可用..  以此类推, 直到找到可用的  slip device
        。

        slattach 允许你用 -p 的参数设定使用不同的协定。 可依据你是否需
        要压缩来决定使用 cslip 还是 slip, 不过连线的两端必须使用同样的
        协定就是了。


  8.7.  设定 PLIP device. (选项)

        plip (Parallel Line IP), 它用来提供在两台机器间做点对点的连线,
        除了使用电脑上的平行埠 (parallel ports) 而不使用串列埠 (serial
        ports), 它跟 slip 很像。 因为使用 parallel port 可以一次传输超
        过 1 bit 的资料, 而且 parallel device 可以达到比 serial device
        更高的传输率。 除此之外, 甚至最简单的  parallel ports, printer
        ports   都能使用,  in   lieu   of  you   having   to  purchase
        comparitively expensive 16550AFN UART's for your serial ports.

        请注意有些膝上型电脑使用的晶片组不能提供   PLIP  的功能,  因为
        PLIP要使用到   combinations   of  signals,  印表机并不使用这种
        combinations of signals 。

        Linux plip interface 跟 Crywyr Packet Driver PLIP 相容, 也就是
        说你的 linux 可以透过 plip 连到 DOS 机器跑 TCP/IP 软体。

        compile  kernel 时, 只有一个  /usr/src/linux/driver/net/CONFIG
        这个档案需要设定, 他包含 plip timers in mS. 内定值在大部分的时
        候都没问题, 你可能需要增加一些  , 如果你有特别「龟速」的电脑的
        话, 在这个状况下, the timers to increase  are actually  on the
        other computer 。

        你需要增加下列的数行到 rc.inet1:

             #
             # Attach a PLIP interface
             #
             #  configure first parallel port as a plip device
             /sbin/ifconfig plip0 IPA.IPA.IPA.IPA pointopoint IPR.IPR.IPR.IPR .

30 lo
ce
             #
             # End plip

        说明:

           IPA.IPA.IPA.IPA
              表示你自己机器的 IP address.
           IPR.IPR.IPR.IPR
              表示远端机器的 IP address.

        这个点对点的参数跟 slip 一样的意思, 它指定 另外一端的 address。

        除了它不需要 dip 与 slattach 之外, 其实你可以把 plip interface
        看成是 slip interface 。


  8.7.1.  PLIP 接脚图

        plip 已经设计来使用 cable 跟相同的接脚建立连线。现在普遍的使用
        是在 MS-DOS 环境下 pc-pc 的档案传输。

        这个接脚图 ( 在 /usr/src/linux/drivers/net/plip.c 内 )看来是这
        锅样子的:

             Pin Name    Connect pin - pin
             ---------   -------------------------------
             GROUND      25 - 25
             D0->ERROR   2 - 15
             ERROR->D0   15 - 2
             D1->SLCT    3 - 13
             SLCT->D1    13 - 3
             D2->PAPOUT  4 - 12
             PAPOUT->D2  12 - 4
             D3->ACK     5 - 10
             ACK->D3     10 - 5
             D4->BUSY    6 - 11
             BUSY->D4    11 - 6
             D5          7*
             D6          8*
             D7          9*
             STROBE      1*
             FEED        14*
             INIT        16*
             SLCTIN      17*

        注意: 不要去接到标有 `*' 的接脚, 额外的 ground 是 18,19,20,21,
              22,23, and 24.

        如果你使用的  cable 外层是用金属包起来的话, 那它应该接到金属包
        外层的 DB-25 (at one end only. {?})

        警告: 乱接 PLIP cable 线可能摧毁你的控制卡, 要非常小心, 每个连
              线都要检查两次, 以确定你不会让自己白做工或是造成心绞痛...

        虽然你可以使用  PLIP cables 来做长距离的连线, 但你应该尽量避免
        。规格中规定只能连大约一公尺, 当你跑长距离的 PLIP  时, 要小心
        强烈的电磁场, 闪电, 电源线, 收音机传送器, 可能会毁损你的控制卡
        。 如果你坚持使要长距离连线,  那你应该找到便宜一点的  ethernet
        card并使用 coaxial cable 。


  9.  Routing(强制的)

        在你设定完所有 network device 之后, 你要想想你的机器要如何绕送
        (route) IP datagrams 。 如果你只有设定一个 network device 那你
        的选择很简单, 因为任何机器的所有封包  (datagrams) 都要经过那个
        interface 来出入。如果你有超过一个以上的 network interface, 那
        你的选择就复杂一点,  你可能在家的机器上同时拥有一个   ethernet
        device 及一个 slip connection, 那你必须将封包都导向家里的机器,
        且其他的则透过 ethernet device 。 Routing 是个很简单的机制, 但
        是不要担心, 如果刚开始的时候你发现对你来说有点难了解, 每个人都
        这样啦!

        你可以显示你的  routing table 的内容, 使用 route 这个命令 ( 不
        加参数 ) 。

        unix network 有很多的常用的机制可以设定。我将简要地逐一介绍。


  9.1.  Static/Manual(手动的) Routes.

        Static routing, 也就是 `hard coded'  routing, 也就是说, 如果你
        的网路挂了的话它不会更动, {?}or if an alternate  route becomes
        available.  Static routes 常用于简单的且没有  alternate routes
        available 的网路, where you have a very simple network with no
        alternate routes available to a destination  host, 也就是说,到
        目的主机只有唯一的路径,  or  where   you  want   to  route   a
        particular  way to a host regardless  of network  changes.  在
        Linux中 manual routes 有一个特别的用处, 增加一个 route 到 slip
        或 plip host, 这些 host 先前已经以 ifconfig 加 pointopint 参数
        来设定。如果你有 slip/plip 连线, 且已经以 pointopoint 参数来指
        定远端主机, 那你应该增加一个  static route 到那个节点  address
        使得 ip routing 软体知道如何绕送封包到那个位址。 你可在 tcp/ip
        连线上使用 route 指令, 透过专线, 先前的例子像这样:

             #/sbin/route add IPR.IPR.IPR.IPR

        说明:

           IPR.IPR.IPR.IPR
              表示远端主机的 IP address


  9.2.  default Route.

        default route 的机制对大部份网路上的 end-user workstation/host
        最普通也最有用, default route 是一个特别的  static route, 它符
        合每个 destination address, 使得如果对一个 datagram 来说已经没
        有其他的 route 可以送了的话, 将会使用 default route 。  {?} 如
        果你已设定定义有单一的  ethernet  interface,  或者单一的  slip
        interface device, 那你应该可以透过它指到你的  default route 。
        在  ethernet  interface  这种状况下, Linux  kernel  就知道要将
        datagram  送到网路上的哪一台主机。 它使用 network  address  及
        network   mask  来运作。  这表示那些   kernel   送不到目的地的
        datagrams 是那些不存在网路上的人。 为使 default route 能正常运
        作, 你要设定 default route 到你的 router address, 因为它是你与
        外面联系的工具。如果你使用 slip connection, 那你的 slip server
        将会变成你的  router, 所以你的 default route 将会透过你的 slip
        server 来达成。

        再来是设定你的 default route, 当你所有的 network device 都设定
        好后, 在 rc.inet1 中加入 以下几行:

             #
             # Add a default route.
             #
             /sbin/route add default gw RGA.RGA.RGA.RGA
             #

        说明:
           RGA.RGA.RGA.RGA
              表示你的 Router/Gateway 的 Address.


  9.3.  Proxy ARP.

        这是个 ugly, hazard prone 的方法, 而且如果你们之中有些人无论如
        何都打算使用它的话, 那就要格外的小心罗。

        大部分会用到  proxy arp 的人都是把  Linux  machine  设定成一台
        slip dial-in server 。 因为这些人会使用到 PPP, 而 PPP daemon为
        了使用上的安全会简化并自动处理这些工作。

        自然地, 当一个 ethernet  上的 host 想与你 talk, 它就只知道你的
        IP  address   而不清楚你的   hardware   address,  也就不知该将
        datagrams 往哪传送。  APR mechanism 为此特别提供了一个 mapping
        function 来处理 network address 与 hardware address 之间的问题
        。

        假使你想把自己的机器当作  server 来服务其他机器时,当其他的机器
        没有实际连上 enthernet 时,就必须让你的机器能代表这些机器, 回应
        对其  IP  address  所提出的  ARP  requests  。  例如你的机器有
        128.253.154.120-124 这几个 IP address 来分配给 dial-in 的 slip
        使用者, 而你所拥有的  ethernet  card  之 hardware  address  为
        00:00:C0:AD:37:1C ( 可以用 ifconfig 这个指令来找 ) 。 你就要在
        Linux server 的 rc.inet1 的最后加上下面这几条 commands, 以便回
        应对这些 addresses 所提出的 arp requests by proxy 。

        #
        # Proxy ARP for those dialin users who will be using this
        #           machine as a server:
        #
        /sbin/arp -s 128.263.154.120 00:00:C0:AD:37:1C pub
        /sbin/arp -s 128.263.154.121 00:00:C0:AD:37:1C pub
        /sbin/arp -s 128.263.154.122 00:00:C0:AD:37:1C pub
        /sbin/arp -s 128.263.154.123 00:00:C0:AD:37:1C pub
        /sbin/arp -s 128.263.154.124 00:00:C0:AD:37:1C pub
        #
        # End proxy arps.

        pub 的参数是表示 `publish', 用来指示你的机器为这些 addresses回
        应  requests, 即使那不是你的机器的  addressses, 也会用你机器的
        hardware address 机来回应。

        当然, 你必须确定在你的  Linux server  的 routes  里,已经将这些
        addresses 与它们要对应连接上的 slip device 都设定好了。

        假使你使用了 PPP, 你不必担心会因人为失误而搞混了  arp table 。
        因为当远端的机器与    server    是在同一个网路上,   若你使用了
        proxyarp 这个参数, pppd 就会为你处理这些 entries 。 不过你也要
        在 server's  pppd 的 command line 加上 the netmask  of network
        。


  9.4.  gated - the routing daemon.

        gated 在有些状况下可以用来代替 proxy arp, 手脚也比较俐落, 但是
        它最大的功能在于:  如果你要把你的   linux  机器当作网路的   ip
        router gated 提供支援许多  routing protocols 。 这些 protocols
        是 RIP, BGP, EGP, HELLO, and OSPF 。最常使用在有 RIP 的小网路,
        RIP 代表 `Routing Information  Protocol' 。 如果你跑 gated, 为
        rip 设定, 你的 linux 机器将定期用特殊的格式广播  routing table
        给你的网路。这样做的话, 所有在你的网路上的机器都会知道哪个位址
        可透过你的 linux 连上。

        gated 可以用来代替 proxy arp, 当所有网路上的  hosts 都跑 gated
        & routed 的时候。如果你有个靠手动及动态的 route 混合的网路, 你
        应该把任何手动修改的  route  标为  `passive', 并确定它们不会被
        gated 摧毁, 因为它不会 update 。

        gated 正常是由你的 rc.inet2 来启动, (rc.inet2 下一节会讲 ), 你
        可能已经看到一个叫 routed 的 daemon 正在跑...  gated 比 routed
        更优越, 因为它更有弹性且功能更强。 所以你应该跑  gated  而不是
        routed 。


  9.4.1.  取得 gated

        Gated 可在以下节点取得:
            sunsite.unc.edu
            /pub/Linux/system/Network/daemons/gated.linux.bin.tgz
                                             /gated.linux.man.tgz
                                             /gated.linux.tgz

        gated.linux.tgz 是原始程式码, 你可能不需要, 除非你因为某些原因而
        希望重新 compile 执行档。


  9.4.2.  安装 gated

        gated 的 binary 版包含三个程式及两个设定档:

        程式:

           gated
              实际上的 gated daemon.

           gdc
              gated 的使用者操作界面。 是用来控制 gated daemon(停止、
              启动及取得状态值)。

           ripquery
              一个用来查询 gateway 已知的 route 的 diagnostic tool。
              (使用 `rip query' 及 `rip poll')

        设定档:

           gated.conf
              gated daemon 的设定档, 允许你指定 gated 要如何运作。
              你可以启动/取消(enable/disable) 任何的 routing protocols,
              并控制 routing protocol 的运作方式。

           gated.version
              描述版次的文件档。

        gated 的 binary 版, 并不会帮你把档案 install 到正确的地方,不过
        还好不多。所以还很容易解决。

        Install binary 的过程如下:

             # cd /tmp
             # gzip -dc .../gated.linux.bin.tgz | tar xvf -
             # install -m 500 bin/gated /usr/etc
             # install -m 444 bin/gated.conf bin/gated.version /etc
             # install -m 555 bin/ripquery bin/gdc /sbin
             # rm -rf /tmp/bin

        我保留一个 networking daemons 在 /usr/etc 中, 如果你的在其他的
        目录中你必须要修改  target directory, gated 的范例档包含模拟旧
        的 routed daemon 的设定:安装 man page, 踹踹下列几行:

             # cd /tmp
             # gzip -dc .../gated.linux.man.tgz | tar xvf -
             # install -m 444 man/*.8 /usr/man/man8
             # install -m 444 man/*.5 /usr/man/man5
             # rm -rf /tmp/man

        man  page  档,  包括了如何设定及使用的细节资讯。  至于如何设定
        gated.conf 请参考 gated-config man page 。


  10.  设定(Configuring) network 的 daemons

        如同前述, 有许多的档案需要设定才能跑网路, 这些档案大部分是高阶
        的网路软体设定。每个重要的部份都会在下面的一节说明, 但是当你若
        摸久了之后, 你会发现, 还有一大堆的设定档要设定。


  10.1.  /etc/rc.d/rc.inet2 (rc.net 的后半段)

        如果你有照以下文件来做, 你应该就已经正确地设定完 rc 档中的网路
        device 的 address, 并且为你的特定的网路设定完所要加入的  route
        了。

        你现在需要启动一些 higher level 网路软体。

        现在天气正好, 可以读读 Olaf's Network Administrators  Guide,因
        为它是一份本节设定定义的文件。

        他将帮助你决定要在档案中加入什么东西, 或许更重要的, 哪些不须加
        入。

        为了安全考量, 它对于你正在跑的网路  service 述说中肯, 很有可能
        你的系统有 security hole, 所以只跑需要的 service 就好了。

        这里有一些重要的 daemons ( 背景执行的系统 porcess) 以要知道的,
        man page 中会谈到, 他们是:


  10.1.1.  inetd.

        inetd  是一种处理   ineternet  connection  request  的背景程式
        (daemon) 。它很聪明你不需一次跑一大堆没人连接的 server 。

        当它发觉有特定的  request ( 如:telnet, ftp) 进来的时候, 它会检
        查 /etc/services  档, 找出要执行该 request 的程式, 启动该程式,
        并处理之间的连线,

        把它想像成是你所有的的   internet   servers   的主人   (master
        server),它也内建一些简单的标准  services inbuilt, 如: 秀出, 忽
        略及产生 services, 这些 serives 会被许多网路测试使用到。


  10.1.2.  syslogd.

        syslogd 是个处理并记录整个系统的 log(message) 的 daemon.他接受
        其他程式产生并输出到 syslog 的讯息。并会根据规则来分散这些讯息
        , 规则定义在 /etc/syslogd.conf 。

        例如: 特定的讯息你可能会希望送到 console, 并且送到 log 档中,或
        者只想送到一个档案中, syslogd 允许你指定讯息要送到的地方。


  10.2.  一个 rc.inet2 范例档

        以下是一个  rc.inet2  的范例档  (Fred  写的 ).  它会启动一驼的
        server所以你可能要把不需要的弄下来,  只留要跑的就可以了...如何
        把它给弄下来呢? 只要把它给直接砍掉砍掉或在  (if 到 fi 的范围内
        的 )该行前加个 '#' 。 加个 echo 上去, 在 boot 的时候提醒自己该
        service已经 disable 掉了, 或执行指令确定它在背景快乐地跑... 想
        要获得  daemon更详细的资料吗? 对啦! 查查  man page  或 Network
        Administrators Guide 。

        #! /bin/sh
        #
        # rc.inet2      这个 shell script 会启动所有的 INET system.
        #               注意, 当这个 script 被呼叫到, 也同时会把 NFS 上
        #               重要的 disk(eg. /usr) 点一把火(fire up)
        #               要特别注意线上正在跑的 binaries...
        #
        # Version:      @(#)/etc/rc.d/rc.inet2  2.18    05/27/93
        #
        # Author:       Fred N. van Kempen, <waltje@uwalt.nl.mugnet.org>
        #

        # Constants.
        NET="/usr/etc"
        IN_SERV="lpd"
        LPSPOOL="/var/spool/lpd"

        # At this point, we are ready to talk to The World...
        echo -e "\nMounting remote file systems ..."
        /bin/mount -t nfs -v            # This may be our /usr runtime!!!

        echo -e "\nStarting Network daemons ..."
        # Start the SYSLOG daemon.  This has to be the first server.
        # This is a MUST HAVE, so leave it in.
        echo -n "INET: "
        if [ -f ${NET}/syslogd ]
        then
                echo -n "syslogd "
                ${NET}/syslogd
        fi

        # Start the SUN RPC Portmapper.
        if [ -f ${NET}/rpc.portmap ]
        then
                echo -n "portmap "
                ${NET}/rpc.portmap
        fi

        # Start the INET SuperServer
        # This is a MUST HAVE, so leave it in.
        if [ -f ${NET}/inetd ]
        then
                echo -n "inetd "
                ${NET}/inetd
        else
                echo "no INETD found.  INET cancelled!"
                exit 1
        fi

        # Start the NAMED/BIND name server.
        if [ ! -f ${NET}/named ]
        then
                echo -n "named "
                ${NET}/named
        fi

        # Start the ROUTEd server.
        # NOTE: routed is now obselete. You should now use gated.
        #if [ -f ${NET}/routed ]
        #then
        #        echo -n "routed "
        #        ${NET}/routed -q #-g -s
        #fi

        # Start the GATEd server.
        if [ -f ${NET}/gated ]
        then
                echo -n "gated "
                ${NET}/gated
        fi

        # Start the RWHO server.
        if [ -f ${NET}/rwhod ]
        then
                echo -n "rwhod "
                ${NET}/rwhod -t -s
        fi

        # Start the U-MAIL SMTP server.
        if [ -f XXX/usr/lib/umail/umail ]
        then
                echo -n "umail "
                /usr/lib/umail/umail -d7 -bd </dev/null >/dev/null 2>&1 &
        fi

        # Start the various INET servers.
        for server in ${IN_SERV}
        do
                if [ -f ${NET}/${server} ]
                then
                        echo -n "${server} "
                        ${NET}/${server}
                fi
        done

        # Start the various SUN RPC servers.
        if [ -f ${NET}/rpc.portmap ]
        then
                if [ -f ${NET}/rpc.ugidd ]
                then
                        echo -n "ugidd "
                        ${NET}/rpc.ugidd -d
                fi
                if [ -f ${NET}/rpc.mountd ]
                then
                        echo -n "mountd "
                        ${NET}/rpc.mountd
                fi
                if [ -f ${NET}/rpc.nfsd ]
                then
                        echo -n "nfsd "
                        ${NET}/rpc.nfsd
                fi

                # Fire up the PC-NFS daemon(s).
                if [ -f ${NET}/rpc.pcnfsd ]
                then
                        echo -n "pcnfsd "
                        ${NET}/rpc.pcnfsd ${LPSPOOL}
                fi
                if [ -f ${NET}/rpc.bwnfsd ]
                then
                        echo -n "bwnfsd "
                        ${NET}/rpc.bwnfsd ${LPSPOOL}
                fi

        fi
        echo network daemons started.
        # Done!


  10.3.  Name Resolution.

        Name Resolution  是个转换 hostname(eg.  tsx-11.mit.edu)  成 IP
        address  的 process, 因为网路软体指认得  IP address.这里有两个
        install 的工具 (principal mean), 一个较简单, 一个较复杂


  10.3.1.  /etc/hosts

        /etc/hosts  包含了一驼 ip addresses 及相对应的 hostname 的列表
        。这样做的话, 你可以使用 hostname 与网路上的其他机器连线。就跟
        使用  ip  address  的作用一样。 使用  nameserver  ( 看  10.3.2
        `named' 一节 )允许你自动地翻译 hostname 成 ip address 。  ( 当
        然也允许在自己的 linux 机器上跑 nameserver) 这个档中至少要包含
        127.0.0.1 localhost这一行, 如果你不只使用 loopback, 你需要增加
        你机器的 ip address 在这个档案中 ( 全名, 如: loomer.vpizza.com
        ), 你也可以加入 gateway 及 network address。

        例如, 如果 loomer.vpizza.com  的 ip address 是 128.253.154.32,
        /etc/hosts 档中要设成:

             # /etc/hosts
             # List of hostnames and their ip addresses
             127.0.0.1               localhost
             128.253.154.32          loomer.vpizza.com loomer
             # end of hosts

        有必要的时候还要再修改这个档案, 以符合自己的需要。如果你只是在
        loopback 状态下, 在 /etc/hosts 中唯一的一行应该是 127.0.0.1,其
        后接著 localhost 及你的 hostname 。

        注意: 在上面的第二行 , 128.253.154.32  有两个名字:
              loomer.vpizza.com 及 loomer. 第一个是你的系统的全名 ( "
              Fully Qualified Domain Name " ) , 第二个是别名。 第二个
              允许你只打 rlogin loomer 而不用打全名 , 你必须要确定别名
              之前的全名。


  10.3.2.  named - 我需要吗 ?

        `I dub thee ..'

        named 是 UNIX-like 系统的 nameserver daemon.  他允许你机器处理
        name lookup 的 request, 不只给自己用, 也给网路上其他的机器使用
        ,  也就是说,  如果另外一台机器要找   `goober.norelco.com'   的
        address,而你的  named database  中有这个资料, 那你可以处理这个
        request,然后告诉别台机器 `goobers` 的 address 是什么。

        在旧的 Linuc tcp/ip 版本, 如果你要开个  alias ( 就算你要为自己
        的机器开 ), 你必须在自己那一台 linux 跑 named, 才能做 hostname
        -  IP address  的翻译工作, 这造成一个比较难以设定及维护的问题,
        为了解决这个问题,  有个程式   hostcvt.build   于是产生,   会将
        /etc/hosts  档转成  named  database  档, 不过就算这个问题解决,
        named 仍然耗掉一些 CPU的成本, 并增加网路流量。

        最后一行是: 你不需要在  Linux 上跑 named, SLS 指令将会正确地告
        诉你要跑 hostcvt.build  来设定 named, 真的没必要这样做, 除非你
        要你的 linux 当作别台机器的  name server, 那你才需要读相关的文
        件。 当你查询 hostname 时, 你的 linux 机器将先检查  /etc/hosts
        档,然后再问外面的 name server 。

        你要跑 named 的原因不外是:

        o  你正在设定网路, 而且需要一个 nameserver, 在网路外面也没有
           nameserver 的话。

        o  你的网路管理者因为种原因要你跑 Linux system 当作 nameserver。

        o  你有个很慢的  slip  connection,  且希望跑个小的  cache-only
           nameserver 在你的 Linux 机器上, 就不用再跑道外面查询。 如果
           你只连接只有少数机器的网路, 你也知道他们的 ip address, 你可
           以把它们的  ip  address  放到  /etc/hosts  中, 一点也不必做
           nameserver  的 lookup 的动作。 一搬来说, namelookup 也不慢,
           也应该可以在 slip 连线下跑的很顺。

        o  闲闲没事做, 想跑跑 nameserver  玩玩, 刺激嘛! 总比「抓虱母相
           咬」好多了吧! 反正没代志我负责, 有代志就当给他看!

        一般来说, 你不需要跑 named: 这表示你可以将 rc.inet2 档的那行标
        为注解, 也不用跑 hostcvt.build 了, 如果你要做 host 的 alias,例
        如: 如果你要把  loomer.vpizza.com  缩为  loomer,  那你只要加在
        /etc/hosts 就可以啦, 实在没有理由跑 named 除非你有特别的需求。
        如果你有个  nameserver,  (  而且你的网路管理者也告诉该台的  IP
        address), 那就不必跑 named 。

        如果你只跑  loopback, 你可以跑 named 并设定 nameserver address
        为 127.0.0.1, 但是既然你只使用你自己的机器, 那你跑 named 干嘛?


  10.3.3.  /etc/networks

        /etc/networks  列出你自己的 hostnames, addresses, 及 networks.
        这个档案会被  route 使用到, 让你只定自己网路的名字, should you
        so desire.

        每个你想要加入  routing table 中的 network 要在 /etc/netork 中
        占有一行, 除非你也指定 -net 这个参数在 route 命令行。

        格式跟 /etc/hosts 很像, 以下是个例子:

        #
        # /etc/networks: list all networks that you wish to add route commands
        #                for in here
        #
        default         0.0.0.0         # default route    - recommended
        loopnet         127.0.0.0       # loopback network - recommended
        mynet           128.253.154.0   # Example network CHANGE to YOURS
        #
        # end of networks


  10.3.4.  /etc/host.conf

        Linux 系统中有包含  resolver library, 这个档案说明你的系统会如
        何查询 host name, 它应该包含至少以下两行:

             order hosts,bind
             multi on

        这两行告诉  resolve libraries 先检查 /etc/hosts 档, 然后再去问
        nameserver ( 如果有的话  ), 多重 retry 允许在 /etc/hosts  中的
        host有好几个 IP address 。

        这个档案从  Linux 的 resolv+  bind library  发展而来, 你可以在
        man page resolv+(8) 找到更多的文件, 如果你没有  man page 的话,
        请到以下节点抓取:

        sunsite.doc.ic.ac.uk

             /computing/comms/tcpip/nameserver/resolv+/resolv+2.1.1.tar.Z

        这个档案包括这个 resolver library 的 resolv+.8 man page。


  10.3.5.  /etc/resolv.conf

        这个档案实际上是设定系统的   name  resolver,  包含两种  entry:
        nameservers 的 address ( 如果有的话 ), 及自己网路 domain( 如果
        有的话 ), 如果你跑自己的 nameserver( 也就是: 在自己的 linux 机
        器上跑  named  ), 那你的  nameserver  就是 127.0.0.1, loopback
        address 。

        你的 domain name 就是你的 F.Q.D.N 的 hostname ( 如果你的机器在
        Internet 上有注册的话。  ), 去掉 hostname 就是了, 例如: 你的全
        名是: loomer.vpizza.com, 那你的  domain  name 就是 vpizza.com,
        去掉 hostname 'loomer' 。

        例如: 如果你的机器是 goober.norelco.com, 而且有一个 address 是
        128.253.154.5 的 nameserver, 那你的 /etc/resolv.conf 档如下:

             domain norelco.com
             nameserver 127.253.154.5

        你可以指定超过一个 nameserver, 每个都在 resolv.conf 档中有一行。

        记痣: 你如果只跑 loopback, 你不需要 nameserver。


  10.3.6.  设定自己的 Hostname - /etc/HOSTNAME

        在你设定完其的设定之后, 还有一件工作要做, 你需要设定你自己机器
        的名字。 设定 hostname 之后, AP( 如: sendmail) 才能认得你是谁,
        而且你自己的机器才能被台机器辨识出来。

        有两个档案需要设定这类的资讯, 常常被错用。hostname 及 domainname。

        如果你使用 1.1.38- 之前版本的 net-tool 那你可以在 /etc/rc 中加
        入:

             /bin/hostname -S

        这样会促使 hostname 命令去读取 /etc/HOSTNAME, 档中会包含全名。
        也就是说, 你的 hostname 包含 domainname, 他将会把 F.Q.D.N.  转
        成 DNS hostname 及 domainname 两个部份, 帮你适当地设定。

        例如: 以上的机器 /etc/HOSTNAME 档案中有:

             goober.norelco.com

        如果你使用 net-tools-1.1.38+ 版本的 hostname, 那你要在
        /etc/rc.d/rc.inet1 加上一行:

             /bin/hostname goober.norelco.com

        否则, 如果你是从早期的版本升级过来的, 你要改为:

             /bin/hostname -F /etc/HOSTNAME

        它会照早期版本的作法来做。

        /bin/domainname 这个命令是用来设定 "N.I.S. domain name" 而『不
        是』 "D.N.S. domain name", 你不需要设定这个东西, 除非你跑 NIS,
        NIS 稍后我们会好好地聊聊...


  10.4.  其他档案

        当然还有需东档案在 /etc 目录下, 你可能以后会 dabble 到。我将提
        供一些基本的概念让你了解网路, 而不直接在此深入讨论。详细的资讯
        可在 Olaf's Network Administration Guide 中找到。 它会接著这个
        HOWTO 继续讲下去。 ( 因为有些东西可能以后才会在这个 HOWTO 文件
        中慢慢加进来。 )

        一旦你设定好所有的档案, 状况也一直正常, 你应该 reboot 你的系统
        并 net away 到 your hearts  content.不过我建议你保留一份旧的开
        机片, 甚至修复磁片, 至少头突发状况时会用得到。 你可以试试 HJLu
        的 `single disk boot disk', 或 SLS 版本的 `disk1' 。


  11.  介高尚的设定(Advanced Configurations)

        之前介绍的设定仅是针对一个正常的  ( 没事不会乱抓电脑或啃键盘的
        ) end-user 来说明, 只是讲述大概的设定。 有些人觉得是小 case 不
        屑看超过一分钟, 想要来些刺激的... 以下就素啦! ( 本章包括: PPP,
        SLIP, AMD, router)


  11.1.  PPP - Point to Point Protocol(点对点通讯协定)

        PPP 对 conveying multiple protocols( 例如:tcp/ip) 来说, 是一个
        现代的也很有效率的  protocol, ,, 许多人使用  PPP  透过  serial
        links 取代 slip 。它提供更强的功能, 错误侦测, 额外的资料安全。
        它修正一些  SLIP 的 deficiencies, 且适合做同步的传输或非同步的
        传输。 (asynchronous links and synchronous links)

        PPP 运作上的特性是  dynamic address allocation, 这个特性也几乎
        会由你的 PPP server 来做 (exploited), 允许 PPP client 使用特别
        的格式化的封包, 来回应 server 的要求。在这种情况下, 比 SLIP 更
        简化设定。因为回传 address 的能力必须发生在 protocol 之外。

        Linux port 作者是 Michael  Callahan, <callahan@maths.ox.ac.uk>
        及 Al Longyear, <longyear@netcom.com> 。大部分的资讯都来自 PPP
        软体所附的文件中。那些文件也已经十分完整, 会比现在我所讲的更深
        入。

        Linux PPP code 已经经过 Alpha 测试, 现在也以公开发行可以取得。
        1.0.0 Linux PPP code 基本上市架构在 Paul Mackerras 的 free PPP
        for BSD-derivative  operating systems 之上。  1.0.0 版是架构在
        2.1.1 版的 free PPP code 上。

        PPP code 分成两个部份。第一个部份是 kernel module, 负责 handle
        frame 的 assembly 及 disassembly 。第二个部份是叫做 LCP, IPCP,
        UPAP 及 CHAP 的 protocol set, 负责协调连线。并把连线导入可以运
        作的状态中以便认证 (authentication) 。


  11.1.1.  为何我要使用 PPP 代替 SLIP ?

        使用 PPP 代替 SLIP 通常的原因有:

           提供你连 Internet 的设备只支援 PPP
              你会使用 PPP 而不使用 SLIP 最明显的原因 , 主要在于提供连
              线的单位仅提供 PPP, 而没有 SLIP。 Ok, I said it is obvious.

           你有一个「饱受摧残」的 serial line
              PPP 对每个传输的 frame 都会做 frame check, SLIP 不会。
              如果你的线路容易受干扰,而且你使用 SLIP, error correction
              将会在连线两端(自己的机器与目的机器, end to end)来做, 而
              PPP 却在自己的一端做 error  detection , 在你的机器与 PPP
              server。这样允许快速的修复 errors。

           你需要用到 PPP 提供的其他功能
              PPP 提供许多需 SLIP 不提供的功能。
              例如在同一条 serial link, 你可能不只要传 IP, 也同时要传
              DECNET 或 AppleTalk 的封包, PPP 允许你做这样的事情。


  11.1.2.  何处可取得 PPP 软体 ?

        ppp 软体可在下列节点取得:

        sunsite.unc.edu

             /pub/Linux/system/Networking/serial/ppp-2.1.2a.tar.gz

        这个档案包含  kernel  source, 及  pppd  source  及  binary  。
        Version 1.0.0 可与 kernels 1.0.x and 1.1.x. 配合使用。现在并不
        支援 Fred's Net-2E 的 kernel 。


  11.1.3.  安装 PPP 软体

        PPP 的安装是很直接的。( <---唉...我竟然在翻译废话 )


  11.1.3.1.  The kernel driver.

        有些支援 ppp 的部份已经建入 kernel 了。 设定 kernel 是很简单的
        啦, 以下步骤绝对 OK! 不会随便当给你看...

             # cd /usr/src
             # gzip -dc ppp-2.1.2a.tar.gz | tar xvf -
             # cp /usr/src/ppp-2.1.2a/linux/ppp.c /usr/src/linux/drivers/net
             # cp /usr/src/ppp-2.1.2a/pppd/ppp.h /usr/src/linux/include/linux

        你将需要把 CONFIG_PPP define 上来, 在 /usr/src/linux/config.in
        中。如果你正在跑的 kernel 是 1.1.4+ 的, 那拟就还要把 NET02D 标
        为注解!!!在 /usr/src/linux/drivers/net/ppp.c  中, 如果你跑的是
        最新的版本,好胆你就卖踩小伊。

        然后你可以  make  config,  选择  PPP  support,  然后再下  make
        dep;make.打个蛋花就好啦!

        当你 reboot 新 kernel 时, 你会在画面上看到类似下列讯息:

             PPP: version 2.1.1 (4 channels)
             TCP compression code copyright 1989 Regents of the University of .
e
             PPP line discipline registered.

        现在呢, 来看看 /proc/net/dev 的内容, 看起来似乎是这锅样子地...

       Inter-|   Receive                  |  Transmit
        face |packets errs drop fifo frame|packets errs drop fifo colls carrie.
lifornia
e
           lo:      0    0    0    0    0        0    0    0    0     0    0
         ppp0:      0    0    0    0    0        0    0    0    0     0    0
         ppp1:      0    0    0    0    0        0    0    0    0     0    0
         ppp2:      0    0    0    0    0        0    0    0    0     0    0
         ppp3:      0    0    0    0    0        0    0    0    0     0    0

        能看到这些东西就是说你不必再重头来过啦... 唉... 累啊...


  11.1.3.2.  pppd

        如果你要重新  compile pppd, 在 pppd Install 的子目录中打 make,
        在 compile lcp.c, upap.c, 及 chap.c 时会有警告发生  (warning),
        不过没关系的。

        如果你要 recompile chat, 现了解 chat 目录中的 README.linux.

        Install 时, 在 chat 及 pppd 目录中打 make install, 将会把 chat
        及 pppd 的二进位档放到  /usr/etc 中, pppd.8 的 man page 会放在
        /usr/man/man0 。

        pppd 需要用 root 来执行。 你可以用 suid 到 root 或直接以  root
        的身分来执行。  make install 时会尝试 suid 到 root, 所以如果你
        已是 root , 那应该没问题。


  11.1.4.  设定并使用 PPP 软体

        就像 slip, 你可把 PPP 设定成 server 端或 client  端, chat 的功
        能跟 dip 很类似。 会自动的拨号及  login 到远端的机器中有一点跟
        dip 不像的地方, 他不会执行  ioctl  把 serial  line 转换成  PPP
        line  。 这个动作会由  pppd 来执行, pppd  可以当作  client  或

        server 来跑。当作 client 时, 它会呼叫 chat 来建立连线及 login,
        然后它执行 ioctl 把连线转成 ppp, 而后让你使用。

        请参考 pppd 及 chat 的 man pages 查看更详尽的内容。 也顺便看看
        PPP 软体中所附的 README 档。它会介绍一些执行档如何运作, 比我在
        这口沫横飞所讲得还多。

  11.1.4.1.  Configuring a PPP client by dial-up modem.

        这可能是大部分人想做的事, 所以先讲。你会使用到这个设定, 当你透
        过 dialup modem 连上有支援  ppp 的网路。 当你要建立你的连线时,
        你只要启动 pppd 程式, 并加上必要的参数。

        以下的例子可能起初看起来会搞不清楚况, 但是你若把  ' ' 内的那段
        文字看成是 pppd 的第二个参数, 把 " " 内的文字看成是, chat 的参
        数, 那就容易得多了。

        pppd connect 'chat -v "" ATDT5551212 CONNECT "" ogin: ppp word: passwo.
ornia
e
             /dev/cua1 38400 debug crtscts modem defaultroute 192.1.1.17:

        这一行是在说:

        o  用以下这一行来呼叫 chat:

             chat -v "" ATDT5551212 CONNECT "" ogin: ppp word: password

        那就是说: 拨 5551212, 等待 `CONNECT' 字串送初一个  CR(carriage
        return), 等待 `ogin:', 送出 `ppp'  字串, 等待 `word'  然后送出
        `password', 然后跳出。

        o  使用 serial device /dev/cua1

        o  设定速度到 38400 bps.

        o  debug 代表 log(动词) status messages 到 syslog

        o  crtscts 表示对 modem 使用 hardware handshaking  - 强烈建议。.

        o  modem 表示 pppd 将会在拨号前后, 尝试挂断(hang up)。

        o  defaultroute 会指示 pppd 增加一个产生 default route 的 routing
           entry。大部分的状况下将会是你要的。

        o  192.1.1.17: 表示把 ppp interfaces address 设成 192.1.1.17。
           这个参数正常的时候, 看来应该像: x.x.x.x:y.y.y.y , x.x.x.x 是
           你的 IP address, y.y.y.y 是 server 的 IP address, 如果你省略
           server 端的 IP address, pppd 将会 ask for it, x.x.x.x 将会被
           设成你的 ip address.

        请参考 pppd 及 chat 的 man pages.......
        (这一段请参考 11.1.4 最后一段)


  11.1.4.2.  以专线(leased line) 来设定 PP client

        以专线 (leaseed  line) 来设定 PPP client 跟用 slattach  来设定
        slip 来得更直接。你还是会用到 pppd, 但是因为你不需要建立 modem
        的连线, 所以会较减单。

        例如: 我在此假设  ppp server 不用特别的 login procedure.我这样
        做是因为每次的 login 都会不一样。如果你只跑区域的连线,你可能要
        这样设定:

        pppd connect 'echo connecting...' defaultroute noipdefault debug \
              kdebug 2 /dev/cua0 9600

        上一行会在萤幕上秀出讯息,  并设定  ppp  interface  的  default
        route  "noipdefault"  这个参数会叫  pppd 从 server  端取得这个
        device 的 address, 除错的讯息会送到 syslog 中。  "kdebug 2" 这
        个参数会把除错讯息设成 level 2, 这样做会给你更多的资讯来了解到
        底出了什么状况。它会使用到 /dev/cua0 (9600bps 的速率 ) 。

        如果你的 ppp server 不需要 login procedure  之类的东西, 在这个
        例子中, 你可以使用 chat 。

        请参考 pppd 及 chat 的 man pages.......
        (这一段请参考 11.1.4 最后一段)

  11.1.4.3.  Configuring a PPP server.

        设定 PPP server 的程序跟架个 slip server 类似。 你可以开个特别
        的  `ppp'  帐号, 这个帐号使用一个可执行的  script来当作  login
        shell 。 /etc/passwd 档中的该行看起来像这样:

             ppp:EncPasswd:102:50:PPP client login:/tmp:/etc/ppp/ppplogin

        那锅 /etc/ppp/ppplogin shell script 看起来向这锅样子:

             #!/bin/sh
             exec /usr/etc/pppd passive :192.1.2.23

        你提供的 address 将是呼叫的机器会被 assign 的。

        当然,  如果你要允许许多   user   同时  access,  你必须开许多的
        startup scripts 及各人的 accounts, 因为你只能在一个  script 中
        使用一个 IP address 。


  11.1.5.  哪儿可以取得更详尽的 PPP 或 bug 报告 的资讯呢 ?

        大部分linux PPP 的讨论都在 PPP mailing list 上面。

        若想要加入mail list server 中的 PPP channel, send mail 到:

             linux-activists@niksula.hut.fi

             with the line:

             X-Mn-Admin: join PPP

             at the top of the message body (not the subject line).

        记得若是你要报告  bug 或问题上去, 你应该尽可能地详细描述你的问
        题那会帮助你了解你的问题, 也使别人能更清楚地了解你的问题。

        你也可以查查:

        RFCS 1548, 1331, 1332, 1333, and 1334. 这些是 PPP 定义的文件。

        W.   Richard  Stevens  也在  `TCP/IP  Illustrated  Volume  1',
        (Addison- Wessley, 1994, ISBN 0-201-63346-9) 一书中讨论到 PPP.


  11.2.  把 Linux 设定成 Slip Server

        如果你有一台连网路的机器, 你可能会想要提供一些像  dial in 的网
        路服务, 那拟就需要把你的机器设成一个 server, 如果你要使用 slip
        当作 serial  line protcocol, 那你有两条路可以走...我会两个都说
        明。


  11.2.1.  Slip Server using sliplogin

        sliplogin 是一个程式, 可用来代替一般  slip user 的 login shell
        会将 terminal line 转成 slip line 。  caller 会 login 成标准的
        login  process, 输入  username  及  password, 在  login  之后,
        sliplogin  会被执行, 去找 /etc/slip.hosts  查询跟 caller match
        的 entry, 而不跑 shell 。 如果它 locate 成功一个 login, 它就把
        连线设成 8bit 的线, 并使用 ioctl call 把连线转成 slip 。当这个
        process 完成之后, 最后一个步骤就完成了。 这时 sliplogin 会呼叫
        一个 shell script, 把设定  slip interface  相关的  ip address,
        netmask    及适合的    routing   。   这个   script   通常叫做
        /etc/slip.login,  但是跟  getty  的相同的规则。 如果你有特定的
        caller 要求使用特别的 initialisation, 你可以写个设定的  script
        叫做 /etc/slip.login.loginnmae, 会取代内定的 script 。


  11.2.1.1.  何处取得 sliplogin

        sliplogin 可在下列节点取得:

        sunsite.unc.edu

             /pub/Linux/system/Network/serial/sliplogin.tar.gz

        tar 档中同时包括  source code, precompiled binary, 及 man page
        。 把它 (binary) 给 install 到 /sbin 目录中, man page 就给他灌
        到 section 8, 做看看:

             # cd /usr/src
             # gzip -dc .../sliplogin.tar.gz | tar xvf -
             # cd src
             # make install

        如果你要重新  compile  出 binaries, 在 make install 之前, 下个
        make clean 指令, 如果你要安装  binary 到其他的所在, 那你就要修
        改 Makefile 内的规则罗...


  11.2.1.2.  设定 slip host 的 /etc/passwd

        你需要在 /etc/passwd 中为 caller 开一些特别的 login user 。 依
        照惯例, 我们将使用 calling host 的 hostname 当作 login name,前
        面再加个大写的  S, 所以, 例如: 如果 calling host 叫做 radio,那
        你可在 /etc/passwd 中开个 login name:

             Sradio:FvKurok73:1427:1:radio slip login:/tmp:/sbin/sliplogin

        备注:  caller  不需要任何的   home  directory,  因为它们不会跑
        shell.所以 /tmp 是个不错的选择。 也要注意 sliplogin 是使用来代
        替一般的 login shell 。


  11.2.1.3.  设定 /etc/slip.hosts

        /etc/slip.hosts 是用来给 sliplogin 找寻相对应的 login name, 以
        取得 caller 的设定内容。 它也是你指定  caller 的 ip address 及
        netmask 的地方, 一个简单的 user name 为 `radio' 的例子如下:

             Sradio    `hostname`    radio    <netmask>    <opt1>    <opt2>

        /etc/slip.hosts 的内容为:

        1. caller 的 login name

        2. server 的 ip address, 也就是本身这一台。

        3. 设定给 caller 的 ip address

        4. the netmask assigned to the calling machine in hexadecimal notation
           eg 0xffffff00 for a Class C network mask.

        5. optional parameters to enable/disable compression and other
           features.

        备注: 你可以在第二栏及第三栏使用 hostnames 或 IP addresses, 如
              果你使用  hostnames  那这些  host  就必须要先翻译成   ip
              address,也就是说, 你的机器必须对这些机器做 ip address 的
              定址 ( <- 很玄吗? ), 不然 script 被呼叫后会失败。 你可以
              先    telnet    到那台主机看看,    如果你看到    `Trying
              nnn.nnn.nnn...'  的讯息,  那你的机器就可找到相对应的  ip
              address, 如果你看到的是 `Unknown host', 那表示无法找到该
              台主机, 如果不行, 直接用 ip address来连。或修改 resolver
              的设定 ( 通常是 /etc/resolv.conf) 。

        opt1 opt2 最普通的参数是:

           normal
              启动(enable) normal uncompressed slip.

           compress
              启动(enable) van Jacobsen header compression (cslip)

        当然, 这些是互斥的 (mutually exclusive)( 有一就不能有二  ), 你
        只能使用其中的一种, 其他参数请看 man page.


  11.2.1.4.  设定 /etc/slip.login 档

        在 sliplogin 搜寻 /etc/slip.hosts 档, 并且在找到之后, 它会去执
        行 /etc/slip.login  档, 用 ip address  及 netmask  来设定 slip
        interface 。

        使用 sliplogin package 的 /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     7-n
        #   slipunit ttyspeed loginname local-addr remote-addr mask opt-args
        #
        /sbin/ifconfig $1 $4 pointopoint $5 mtu 1500 -trailers up
        /sbin/route add $5
        exit 0

        要注意这个  script 只使用  ifconfig  及 route 指令来设定  slip
        device 。 ( 设定: ip address, remote, ip address and netmask),
        透过 slip device 为 remote address 开一个 route 。就跟你喜欢如
        果你使用 slattach指令。


  11.2.1.5.  Configuring the /etc/slip.logout file.

        当一个 connect close 后, 你要确定 serial device 回复原来的状态
        。以使未来的使用者能正确的 login, 这要使用 /etc/slip.logout 档
        来达成, 很简单的啦, script sample 如下:

             #!/bin/sh -
             #
             #               slip.logout
             #
             /sbin/ifconfig $1 down
             /sbin/route del $5
             exit 0

        它所做的是把 interface `down' 下并删除先前开设的 route。


  11.2.2.  使用 dip 的 Slip Server

        现在我所要讲的, 有一部份来自  dip 的 man page, man page 内已经
        包含了简要的设定。

        设定  Linux  成  slip  server,  你需要为使用者开设特别的  slip
        accounts,在 slave  mode 的 dip 被当作  user  account  的 login
        shell 。

        Fred  建议使用惯例,  在  account  前面加上大写  S,  他的  slip
        accounts以 `S' 开头, 如: `Sfredm' 。

        因为 login 程式不接受 login shell 的参数, 所以你要写个小的程式:

        /* dip-i.c - from a mail message of Karl kkeyte@esoc.bitnet */
        int main()
        {
           execlp("dip", "dip", "-i", (char *) 0);
        }

        请用 gcc -O dip-i.c -o dip-i 来编译(compile)。
        设定 permissions 为 555. 我建议把他叫做 /usr/bin/dip-i,
        /etc/passwd 档内给 slip user 看起来像这个样子:

             Sfredm:ij/SMxiTlGVCo:1004:10:UUNET:/tmp:/usr/bin/dip-i
             ^^         ^^        ^^  ^^   ^^    ^^   ^^
             |          |         |   |    |     |    \__ 要执行的 shell progr.
\
ornia
e
             |          |         |   |    |     |         dip -i as login she.
\
ornia
e
             |          |         |   |    |     \_______ Home directory
             |          |         |   |    \_____________ User 全名
             |          |         |   \__________________ User Group ID
             |          |         \______________________ User ID
             |          \________________________________ 加密后的密码
             \___________________________________________ Slip User Login Name
                                                          (大写 S 开头)

        在 user log in 之后, 如果确认 user 正确的话, login(1) 这个程式
        会执行  shell dip-i, 而 dip-i 会执行  dip -i, 之后, dip 会扫描
        /etc/net/diphosts  档, 找寻 login  user name, 因此, 每个  slip
        user 比需都要在 /etc/net/diphosts 中有一行。

        你要重新读 9.3 `Proxy Arp' 哪一节, 重新为 slip user 安排 proxy
        arp, 如果你要让他们使用到 slip server 所连到的网路的话。


  11.2.2.1.  Configuring /etc/net/diphosts

        dip 会使用到 /etc/net/diphosts  来查询远端主机现在的设定, 远端
        主机可能是拨进你的 linux 主机的 user, 或是你拨进去的主机。

        /etc/net/diphosts 的一般格式如下:

        Suwalt::145.71.34.1:SLIP uwalt:CSLIP,1006
         ^    ^  ^            ^         ^     ^
         |    |  |            |         |     \___ MTU
         |    |  |            |         \_________ protocol (SLIP, CSLIP,
         |    |  |            |                    KISS)
         |    |  |            \___________________ 注解栏
         |    |  \________________________________ 对方的 IP address
         |    |                                     或 host.domain.name
         |    \___________________________________ unused (compat. with passwd.

\
ornia
e
         \________________________________________ login name (as returned by
                                                   getpwuid(getuid()))

        /etc/net/diphosts 中的一个例子:

             Sfredm::145.71.34.1:SLIP uwalt:SLIP,296

        以上是说以 296 MTU 建立 slip 的连线。

             Sfredm::145.71.34.1:SLIP uwalt:CSLIP,1006

        以上指定 以 1006 MTU 建立 cslip 的连线。

        当一个  user  logs  in 的时候, 他们会觉得像是平常的  login  及
        password 的提示, 不过他们要输入他们的 slip-login userid 及密码
        ,如果通过检查, user 不会看到特别的讯息, 他们要在自己的一端切换
        成 slip 的模式, 之后, 就连线成功啦, 系统会在 diphosts 档案中设
        定。


  11.3.  使用 Automounter Daemon - AMD.

        这个部份由  Mitch DSouza 来供应, 我已经用最少的修改包含进来,感
        谢 Mitch.

  11.3.1.  什么是 automounter, 为何我要使用这种东西咧 ?

        automounter 提供一个方便的随需要 (ie. 当有要求时 ) 才 mount FS
        的工具。这将会同时减少 server 端及 client 端的负载, 且提供一个
        更具据弹性的处理, 甚至在没有 NFS mount 上来的时候。

{?}     它也提供一个过多的机制(redundency mechanism) 凭什么一个 mount
        point 会自动地切换到 第二个 server 要是 主要的 server 无法读取
        时。
        { It also offers a redundancy mechanism whereby a mount
          point will automatically switch to a secondary server
          should a primary one be unavailable.
        }

        一个更有用的  mount 叫做 union mount 赋予 automounter 合并多个
        目录到单一的目录中的能力, 这份文件必须完全读透以便完全使用延伸
        的功能。

        有几点要跟您好好地建议建议的: (没有特别的顺序)

        o  amd maps 与 Sun maps 并不相容, 也不与  HP maps ad infintum.
           不过这点在此素这锅样煮的: amd  可以免费获得, 而且与所有以上
           提到的系统相容, 这让你可以 share maps 如果 amd 在网路上到处
           安装的话, Mitch 把他拿来跟 Linux/Dec/NeXt/Sun  机器混和使用
           。

        o  Sun  automount  maps  可以使用在   contrib  directory  中的
           automount2amd.pl perl script 转成 amd 形式的 maps 。

        o  在执行 amd 之前要先跑 portmapper。

        o  UFS mounts 不会 timeout.

        o  UFS mounts, 仅能使用于 Linux, 已经可以延伸处理所有的 natice
           FS ( 如: minix, ext, ext2, xiafs...) 内定是 minix. 没有文件
           说明的特色可加像以下的选项:

              ..., opts:=type=msdos,conv=auto

        o  不要 mount 已经存在的目录除非你使用一个直接 automount 选项,
           不然,  他会把你的  disk  mount  在  /home  下, 当有些  user
           diectory是 /home/fred 时。

        o  总是开启  full logging,( 加 `-x all' 参数到 amd) 如果你有任
           何困扰查察下列命令是什么:

             % amq -ms

           reports, 当他发生问题时它将会只出问题。

        o  GNU getopt() 有时对自己很聪明, 可在 非选项前加 '--', 例如:

             # /etc/amd -x all -l syslog -a /amd -- /net /etc/amd.net


  11.3.2.  何处取得 AMD(AutoMounter Daemon)

        amd 可在下列节点取得:

        sunsite.unc.edu

             /pub/Linux/system/Misc/mount/amd920824upl67.tar.gz

        这包含可执行的 binaries, 完整的 sources 及 texinfo 格式的文件。


  11.3.3.  一个设定 AMD 的例子

        你不可以从 /etc/fstab 档案来设定 AMD, 你将已经使用了来包含资讯
        关于档案系统, 而使用 command line 启动方式。

        使用 /etc/fstab 来 mount 两个 nfs FS, 你可能会使用两个类似以下
        两个 entries:

             server-1:/export/disk  /nfs/server-1  nfs  defaults
             server-2:/export/disk  /nfs/server-2  nfs  defaults

        i.e. 你会把 server-1 and server-2 的目录 mount 到你的机器上的
             /nfs/server-1 及 /nfs/server-2 目录。

        在把它标为注解之后, 或从 /etc/fstab 中删除以上的两行那你只能用
        以下语法来达到相同的工作:

             /etc/amd -x all -l syslog -a /amd -- /nfs /etc/amd.server
             |      | |    | |       | |     |  | |  | |             |
             |      | |    | |       | |     |  | |  | |             |
             `------' `----' `-------' `-----' -' `--' `-------------'
              |        |      |         |      |   |    |
              (1)      (2)    (3)       (4)    (5) (6)  (7)

        参数说明:

        1. The full  amd binary  path  (obviously  optional)  端看你的
           $PATH 环境变数如何设定, 所以只有 `amd' 可以在此被指定。

        2. `-x all' 会开启 full loggon. 请读读其他 login level 的文件。

        3. `-l syslog' 会透过 syslogd 来记录讯息, 也可把它输出到一个档
           案, dump 出来, 或 pass 过去, 到没被使用到的  tty console.这
           个 syslog 可以改为一个档名, i.e.  `-l foo' 将会把讯息转到一
           个叫做 foo 的档案。

        4. `-a /amd' 使用 /amd 目录作为暂时的  automount point这个目录
           会自动地被 amd 开出, 也应该会在开始 amd 之前砍掉。  (amd 放
           在 rc 中 )

        5. `--' 表示告诉 getopt() 停止处理 (parse) 其他的 command line
           参数, 这对直接在 command line 下 `type:=' 参数特别有用。 不
           然 getopt() 会不正确地将他解码。

        6. `/nfs' 是真的 nfs mount point. 这也会自动开出此目录, 且不应
           该在其下再包含有子目录, 除非使用 `type:=direct' 参数。

        7. amd map (也就是 一个档案) 叫做 `amd.server' 包含以下这些行:


        # /etc/amd.server
        /defaults    opts:=rw;type:=nfs
        server-1     rhost:=server-1;rfs:=/export/disk
        server-2     rhost:=server-2;rfs:=/export/disk

        一旦启动而且成功地跑起来, 你可以用下列命令查询 mount 的状况:

             % amq -ms

        如果你用:

             % ls /nfs

        应该看不到任何档案。 不过以下的命令:

             % ls /nfs/server-1

        将会自动地 mount `server-1' 那台 host 。挖咧靠邀! amd 跑起来了
        ! (voila! amd is running.)在内定的  timeout 到期后, 这会自动地
        unmount 下来。 你的 /etc/password 档 ( 译注一 ) 可能包含下列的
        项目:

        ...
            linus:EncPass:10:0:God:/nfs/server-1/home/linus:/bin/sh
            mitch:EncPass:20:10:Mitch DSouza:/nfs/server-1/home/mitch:/bin/tcs.

\
ornia
e
            matt:EncPass:20:10:Matt Welsh:/nfs/server-1/home/matt:/bin/csh

        意思就是说当   Linus,  Matt,  or  Mitch  login   进来时,  home
        directory将会跑到特定的 remote 目录中, 而在 user logout 的时候
        会自动地 unmount 下来。

        译注一: 应该是 /etc/passwd 吧, 或许有些系统不一样 ?


  11.4.  把 Linux 当作一个 router

        把 linux 档做 router  是没问题的啦! 你跑个像  gated 的 routing
        daemon  就可以啦,  如果你只有简单的  routing  要求只要用  hard
        coded routes 就可以啦。 如果你使用的是较新的版本 (1.1.*), 那你
        应该要确定在 make kernel 的时候, 你有回 'y':

        IP forwarding/gatewaying (CONFIG_IP_FORWARD) [y] y

        Olaf  Kirch's  Network  Administrators   Guide  讨论网路设计及
        routing项目,   你可以读看看,   有更多的资料,  参考书目在文件的
        "Releated Documentation" 那一节。


  12.  实验中及发展中的 modules

        现在有许多人为 linux 网路程式码在发展新的特色及 modules 。之中
        有些还很先进, 这些也是我想要包含到这节的, 直到变成标准版程式码
        。他们将会被往前搬移。


  12.1.  AX.25 - 业馀无线电玩家的通讯协定

        AX.25 protocol 是用在全球业馀无线电玩家。 它同时提供 connected
        及 connectionless 的运作模式, 并且可使用来做点对点的连线, 或用
        来运送 TCP/IP 的封包。

        这跟 X.25 level 2 在结构上很类似。更可延伸到业馀无线电环境, 使
        它更有用。

        Alan Cox 也发展了一些以 AX.25 软体为基础的 kernel, 支援 linux,
        这些也可在  ALPHA form 取得, Alan's code 支援 KISS based TNC's
        (Terminal Node Controllers), 及 the Z8530 SCC driver.

        User programs 包含一个 P.M.S.  (Personal Message System), 一个
        信号灯机构  (facility), 一个  line  mode  connect  program, 及
        `listen'如何去撷取所有在 RAW 界面层的 AX.25 封包例子

        确定要去读 /usr/local/ax25/README 这个档, 内容包含更多、更完整
        的资讯。


  12.1.1.  何处取得 AX.25 软体。

        ftp 至:

        sunacm.swan.ac.uk

             /pub/misc/Linux/Radio/*

        你会发现有许多的目录,    每个包含不同版本的程式码,    因为它与
        kernel code 相互的关系很密切, 所以你要选择一个与你的 kernel 较
        适合的版本,互相的对应大概是这样:

        AX25007                 Prehistoric
        AX25010                 Obsolete
        AX25012                 for release 1.0.* kernels and higher
        AX25016                 for release 1.1.5 kernels
        AX25017                 for release 1.1.6 kernels
        AX25018
        AX25021
        AX25022                 for release 1.1.28 kernels

        每个目录中你会发现只少两个档案, 一个叫做 krnl022.tgz 之类的,另
        一个叫做  user022.tgz  。 这些是 kernel 软体, 及相对应的  user
        program.


  12.1.2.  安装 AX.25 软体

        这讨软体包含两大部分, kernel drivers, 及 user programs.


  12.1.2.1.  The kernel drivers.

        安装 kernel drivers, 请打:

             # cd /usr/src
             # gzip -dc krnl022.tgz | tar xvf -

        有需要也可   uncomment(  定义上去  )  /usr/src/linux/config.in
        CONFIG_AX25 这个 define 。

        然后:

             # cd /usr/src/linux
             # make config
             # make dep;make

        备注: 如果你应该包含 AX.25 support, 在 make config 被问到的时候,
              记得回 `yes', 如果你要 AX.25 code 支援 KISS TNC, 也要回 'yes'


  12.1.2.2.  The user programs.

        安装 user programs 请下:

             # cd /
             # gzip -dc user022.tgz | tar xvvof -

        然后:

             # cd /usr/local/ax25/src
             # make install


  12.1.3.  设定及使用 AX.25 软体

        设定 AX.25 port 跟设定 slip device 很像。  AX.25 软体已被设计,
        用来在 kiss mode 下与 TNC 一起运作, 你需要事先设定  TNC 并连线
        。

        使用 axattach 就像在使用 slattach, 例如:

             # /usr/local/ax25/bin/axattach -s 4800 /dev/cua1 VK2KTJ &

        上面这一行会把你的  /dev/cua1 serial device 设定成 4800 bps 的
        kiss interface, 使用 hardware address VK2KTJ.

        你可以使用  ifconfig  来设定  ip address  and  netmask  就像对
        ethernet device 一样:

             # /sbin/ifconfig sl0 44.136.8.5
             # /sbin/ifconfig sl0 netmask 255.255.255.0
             # /sbin/ifconfig sl0 broadcast 44.136.8.255
             # /sbin/ifconfig sl0 arp mtu 257 up

        以下列命令来测试:

             /usr/local/ax25/bin/call VK2DAY via VK2RVT

        call program 是个 linemode  terminal  program  用来产生  ax.25
        call.以空白开头来表示命令列 ` ', `.' 来结束连线:

        你也需要设定一些项目, 例如: 使用的视窗。 这只需要修改一个档案,
        编辑  /usr/local/ax25/etc/ports  档, 这是一个  ascii  档, 每个
        AX.25  port  一行。  档案中必须要有这几行,  与你设定的   AX.25
        interface 一样的顺序。

        格式为:

        callsign baudrate window frequency

        在这个地方并没用到许多资讯, 它将会在以后的发展中被用到。

        我没机会亲自来  try 这个程式, 请参考在 /usr/local/ax25/man  的
        man page 及在 /usr/local/ax25 中的 README 档, 查询更多的资讯。


  12.2.  Z8530 SCC driver.

        Zilog Z8530  SCC 提供 Synchronous/Asynchronous, HDLC, NRZI编码
        及其他功能。 有许多的卡也使用 Z850 当作设计的基础。这个 driver
        已由 Joerg  Reuter, <dl1bke@melaten.ihf.rwth-aachen.de>,可在下
        列节点取得:

        ftp.ucsd.edu

             /hamradio/packet/tcpip/incoming/sccdrv-1.4a.dl1bke.tar.gz

        详情请看 README。


  12.3.  Ottawa PI/PI2 card driver.

        Ottawa PI card 是一个在 IBM PC 机器上, 以 Z8530 SCC 为基础的卡
        。  通常用在全球业馀无线电的工作者  (Amateur  Radio  operators
        worldwide).在它被无线电业馀者广泛的使用的同时,  他也能提供别的
        领域的服务这些领域需要 Z8530 的特性。

        它支援一个高速的半双工   (half   duplex)   port  (single   DMA
        channel),及一个慢速的全双工 (full duplex) port ( 小于 19.2kbps
        interrupt  driven) 。  PI2 是个较新版本的卡支援母版内建  radio
        modem, 并改善硬体设计。

        这张卡的 driver 已由 David Perry <dp@hydra.carleton.edu>  撰写
        完成。可在以下节点取得:

        hydra.carleton.ca

             /pub/hamradio/packet/tcpip/linux/pi2-0.5ALPHA.tgz

        详情请读 README 档。


  12.4.  NIS - Sun Network Information System.

        事实上有两个版本的 NIS 已经分散出来。首先有个使用标准的 libc的
        雏型版本, 不过 libc 要求在使用前先透过 ypbind 做一些对 servers
        的 binding 工作。 更乾净的版本趋向于 NIS+ 的撰写方式,叫做 NYS,
        由 Peter Eriksson, <pen@lysator.liu.se> 撰写, 可在以下节点取得
        :

        ftp.funet.fi

             /pub/OS/Linux/BETA/NYS/nys-0.26.tar.gz

        NIS 型态的 server 可在以下节取得点:

        ftp.funet.fi

             /pub/OS/Linux/BETA/NYS/ypserv-0.5.tar.gz

        确定那里没有更新的版本, 因为这个资讯现在可能已经有点儿旧了。

        这两个都功能强大, 而且与 Sun NIS information  servers 也相安无
        事,  如: passwd/hosts/group  等等。 也不要求对任意  server  的
        binding 。 事实上它们允许以指定提供 services 的 server, 并可以
        选择 yp/dns/file 选项来做指定 name/passwd/etc  的 resolution工
        作。

        这些都很容易设定起来  (set up), 而且强烈建议需要整合进大网路的
        client  机器。 明显地, 你的网路  daemons  及 clients  需要重新
        compile 来与 shared library libnsl.so 以便使用 YP 功能。这些都
        是很稀松平常的事, 所有网路  NYS package 的 clients  & daemon都
        compile 过了。

        如果你有更详细的 NIS 资讯, 请寄给我(给原作者, 不是译者哦)。


  12.5.  snmp agent.

        linux 有个实验的 snmp agent, 由 Erik Schoenfelder,
        <schoenfr@ibr.cs.tu-bs.de> 做系统转移。

        可在以细节点取得:
          ftp.ibr.cs.tu-bs.de

             /pub/local/cmu-snmp2.1.2l2.tar.gz

        请先读  cmu-snmp2.1.2l2.README, 因为它包含了你需要的资讯, 可以
        帮助你了解这个 packge 。

        这个 package 提供一个近似完全的 MIB-II variable set.  在现在的
        状况下, 你只能读这些变数, 不能设定它们。

        nstat.tar.gz  包含一个  /proc/net/snmp  输出的 formatter, 叫做
        nstat 。

        你需要跑新的  kernel 并对 kernel 做 patch, 详情请看明日各大报!
        啊! 不! 不! 请看 README 档。


  12.6.  Experimental ARCNet driver

        许多人在寻找  ARCNet 网路卡的 driver 。  ARCNet 只提供约 2Mbps
        的传输率, 但可提供比 10base2(thinnet)  LAN 更长的连线距离。 而
        ARCNet cards 也较便宜, 也因为这样许多公司用  ARCNet 取代别的网
        路卡。

        Avery Pennarun <apenwarr@tourism.807-city.on.ca>  已经撰写了一
        个 linux 的 ARCNet driver, 但是还在做 ALPHA 测试, 当然这中间还
        会有许多 error 也可能会造成 kernel 挂住...

        source code 及 kernel patch 可在以下节点取得:

        sunsite.unc.edu

             /pub/Linux/system/Network/drivers/arcnet-0.12.tar.gz

        备注: 为了简化 patching 的工作, 用 kernel version 1.1.51 因为
              driver 就是针对这个版本的来做 patch
              的, 不过也可在 1.1.45+ 来跑。

        有一些已知的虫虫, 你可以读 arcnet.c 档获得细节的说明。 Avery他
        现在需要人来帮他抓臭虫, 或还没发现的问题, 并 guage  在其他环境
        下跑的情形。 Avery 将会很高兴接受任何透过网路的报告, 或 e-mail
        到:
             <apenwarr@tourism.807-city.on.ca> 或 <Avery.Pennarun@NorLinK.Com>

        Avery 在 News 方面有问题, 所以透过任何 newsrroups 可能无法让他
        收到... Avery 不只想要知道你是否有问题, 也想知道你是否有试成功
        。


  12.7.  实验中的 Token Ring driver

        实验中的 Token Ring driver 由 Peter De Schrijver
        <stud11@cc4.kuleuven.ac.be>所发展, 最新的版本可在以下节点取得:

        sunsite.unc.edu

             /pub/Linux/Incoming/linux-1.1.44-TR.tar.gz


  12.8.  V.35 界面板(interface board)

        V.35 是一个 C.C.I.T.T. 的标准界面, 用来提供高速平衡的串列界面,
        可高达 2 Mbps 。 使用 differential  pair balanced transmission
        允许 V.35 界面支援较长的线, 与 V.24/RS232C  相类似, 但提供更高
        的传输率。

        Pete Kruckenberg  <kruckenb@sal.cs.utah.edu>  开了一家公司供应
        ISA  bus 机器的  V.35  界面硬体, 这家公司亦为这个卡开发  Linux
        driver, 也进入了 Beta 测试。 这个允许你直接用 leased line 连到
        Linux machine, 速度可达 48/56kbps synchronous  的同步的传输.这
        张卡支援多种 protocols 并允许速度达到 12 Mbps 。

        更多的资讯可在以下节点取得:

        ftp.std.com

             pub/sdl/n2

        不然你可以 mail 给 Dale Dhillon <sdl@world.std.com>


  12.9.  Slip 套餐软体

        Matthew Dillon, dillon@apollo.west.oic.com  已经将程式组合成一
        套处理  SLIP 连线 (incoming  & outgoing)  的 package, 一些这个
        S/W的特色会自动拨号, 自动重新拨号, 也会在单一的 serial port 上
        做 shifting.

        Matt 已经用  kernel 1.1.x 测试过程式码了, 但是他说程式码应该也
        要在 1.0.x 的 kernel 上跑没问题才可以。

        请到以下节点抓 S/W:
        ftp://ftp.west.oic.com
             /pub/linux/dillon_src/dslip203.tgz
        ftp://sunsite.unc.edu
             /pub/Linux/system/Network/serial/dslip203.tgz


  12.10.  tcpdump 工具程式

        Adam Caldwell <acaldwel@103mort2.cs.ohiou.edu>  已经将 tcpdump
        转至 linux. tcpdump 允许你追踪网路活动, 拦截流经你的机器的网路
        封包。这对侦测网路问题很有用。

        执行档或原始程式码都可取得, 3.0 版已经在 kernel 0.99.15, 1.0.8
        及 1.1.28 测试过。

        程式可在下列节点取得:

        ftp://103mort2.cs.ohiou.edu
             /linux/tcpdump-3.0-linux-src.tar.gz
        ftp://sunsite.unc.edu
             /pub/Linux/system/Network/tcpdump-3.0-linux-src.tar.gz


  13.  一些 FAQ 及简要的答案

        以下是一些常问的问题及答案


  13.1.  一般问题

           我只有一条对网路上一个机器的 dialin terminal access, 我可以
           使用当作网路连线 ?"

              当然可以,  看看  TERM,  TERM  允许你透过正常的  terminal
              session连上网路。 它需要修改一些网路应用软体。但是最普通
              的 binaries及 sources 已经可以取得。看看 TERM-HOWTO:

                      http://sunsite.unc.edu/mdw/HOWTO/Term-HOWTO.html

           我想架设自己的独立网路, 我的 addresses 要怎么设定 ?

              RFC1597 已经指定一些 IP addresses 给私人的网路。你应该使
              用这些位址以免产生一些不必要的困扰,     如果你决定要连上
              Internet. 以下 addresses 保留做特殊用途:

                10.0.0.0        -   10.255.255.255
                172.16.0.0      -   172.31.255.255
                192.168.0.0     -   192.168.255.255

           备注:保留的网路位址 addresses 是 classes A, B and C, 所以你
                自己的网路并不会受到设计或 size 的限制。既然你不打算连
                上 Internet, 那你根本不需要担心设定与其他 Internet上的
                节点相同的 IP address 会发生什么事情。 只要你使用的 IP
                address 是你自己网路上唯一的位址就可以了。

           如果 sunacm.swan.ac.uk 没开, 我如何取得这些指定的档案 ?
              `sunacm' 被 mirrored 在:

              ftp.Uni-Mainz.DE

                /pub/Linux/packages/Net2Debugged

           我如何知道我正在跑的 kernel/net code 的版本 ?
              network code 与 kernel 现在已经同步使用相同的版次, try:

              uname -a

              或:

              cat /proc/version


  13.2.  错误讯息

           一直出现 `eth0: transmit timed out' 耶 !!! 这是什么意思 ?

              通常是说你的  Ethernet  cable 没插好啦! 或者网路卡的参数
              (I/O address, IRQ, 等等 ) 没有设对。检查开机时出现的讯息
              ,确定一下你的 Ethernet address 能够被辨认出来。 如果没问
              题, 再检查有没有与其他的界面卡冲到。 如: soundblaster 的
              IRQ 与 I/O control port 。

           当我使用网路时, 遇到 `check Ethernet cable'

              你的 Ethernet card 可能设定不正确。
              再次检查 /usr/src/linux/drivers/net/CONFIG 中的设定。 如
              果没问题,问题可能出在网路线, 检查是否有断线。


  13.3.  Routing 的问题

         为何在我使用 route 命令时, 会出现 `obselete route request' ?

              你使用了比你的  kernel  更旧的  route  程式了。 你应该把
              route  upgrade   到更新的版本。  请参考这份文件的   "The
              network configuration tool suite" 那一节。他会告诉你何处
              取得 tool set 。

         为何会出现 `network unreachable' 的讯息 ?

              这个讯息是说你的机器或其他的机器, 不知道如何去  route 这
              个你想要连或 ping 的 host如果对所有的 host 都是这样的话,
              有可能你并没有内定的  route资料, 重新读 `routing' 那一节
              。

         我可以 ping 我的 server/gateway, 但是无法 ping 或连到其他的远
         端 host。

              可能是因为 routing 的问题, 重新读 `routing' 那一节。如果
              看起来都正常, 就检查你要连的机器是否能  route 到你的机器
              。如果你是 dialin user, 这就是一个普通的问题了, 确定你的
              server 有同时跑  routing program 像是 gated 或 routed,或
              者那是 `prox arping', 如果不是的话, 你将可以接到对方传来
              的封包。但是却不知道如何回传封包给你。


  13.4.  使用网路档案系统(NFS, Network File System):

           如何使用现有的 Novell fileserver 跟我的 Linux host 相连 ?

              如果你有 Novell NFS Daemon code 那就容易多了, 只要让 NFS
              mount  到你想要使用的  Novell  volume  。 如果你没有这个
              daemon  code, 而执意要做这个东西的话, 而你也有  sparc PC
              这种机器恣意让你挥霍, 那你就太幸运了。 你可以在 sparc PC
              跑一个叫  Stan's Own Server  的程式。 首先, 把 PC 设定为
              novell 的 workstation  将 nfs mount maps 到你要的目录中,
              然后跑   SOS, 并  export   这些   maps   。   SOS   可在
              spdcc.com:pub/sos/sossexe.zoo 取得。

           当跑在网路上 NFS 时, 档案烂掉(corrupted)了 ?

              某些厂商 ( 主要是 Sun) 承载 (shipped)  许多机器来跑  NFS
              而且并不做 UDP checksums 。 在 ethernet 表现极好, 在其他
              环境下就等于在自杀。   UDP  checksums  在大部分的   file
              server 可以启动  (enabled), Linux 内定从 pl13 onwards 启
              动, 但双边都要启动。

           为何所有 NFS 档案都是 read only ?

              Linux NFS server 内定是 read only 。  RTFM the `exports'
              and nfsd man pages.  如果是非 Linux servers 的话你可能也
              需要修改 /etc/exports 。


  13.5.  SLIP 的问题:

           我如果不知道 SLIP server 的 address 怎么办 ?

              dip 并不需要知道 SLIP server 的 address, remote option只
              是用来使 dip 能自动替你执行 ifconfig 及 route 时, 方便一
              点罢了。 如果你不知道, 也找不到  slip server 的 address,
              Peter D. Junger Junger@samsara.law.cwru.edu 有个建议: 不
              管 dip script 什么时候被  call, 要求送上 remote address,
              他都使用他自己的 address 。这是一个小小的酷拉吉 (kludge=
              离合器 )但能正常工作, 就像不管如何  server 的 address 从
              来就没有真正出现在 slip 的 header 中。

           `dip' 只能给 root 使用, 我如何把他弄成大家都可使用 ?

              dip 在执行一些必要的  task 时需要执行 suid 到 root, 所以
              请 check dip 的 permissions  是否为 6750 。 在某些系统中
              dip  实际上只是   symbolic   link  到另一个档案,  (  如:
              dip.uri),  如果这就是你的设定, 那就修改最原始的那个档案,
              像 `chmod 6750 dip' 应该可以正常地工作, ownership 也要是
              root `chown root:dip dip' 。

           使用 SLIP, 我可以 ping 到我的 server 及其他的 host, 但是却不
           能做 telnet 及 ftp.

              这样的状况最常发生在    server    与你的机器的    header
              compression不一致, 请确定两边都使用 compression 。必须一
              样。

           当我使用完 SLIP 后如何挂上电话 (hang up) ?

              如果你使用  dip 拨到 SLIP line, 只要使用 `dip -k' 就可做
              得到啦。 如果不是, 试试砍掉正在执行的 dip process 。 dip
              死掉的时候, 理论上它应该会  hang up 电话, 要给它最好的机
              会在它结束的时候来清除, 试试看下列的步骤:

                      `kill <pid>'
                      `kill -hup <pid>'

              如果最后 dip 还「死皮赖脸」地挂在上面的话, 试试:

                      `kill -9 <pid>'

              这跟你砍其他 process 的道理一样。

           我在我的 SLIP port 上发现一些 overrun errors, why ?

              旧的 network tools 会不正确地把  crompressed  的 packets
              数秀得跟 overrun 的 packets 数一样。这个部份已经更正了。
              不会在新的版本的 kernel 及 tools 上出槌。 如果它还是说你
              的机器不能维持资料流入的比率, 如果你使用的不是  16550AFN
              UARTs 那你可能要提升到 16650AFN UARTs 。

              16450, or 8250 会对每个它收到的 character 都产生一次中断
              ,因此会非常依赖 processor 来寻找时间, 然后停止它正在收集
              字元的工作, 并确定没有资料 loss 。

              16500AFN 有一个 16 character 的 FIFO, 而只有在 FIFO 快要
              满的时候, 或当他在等待字元时才会产生中断, 也就是说对相同
              的资料量会会产生较少的中断。      且会花较少的时间来处理
              serial port的工作。

              如果你一定要使用  multiple serial ports 那你就要勉强自己
              ( 的荷包 ) upgrade 到 16550AFN UARTs 。

           我能使用两个 SLIP 界面吗 ?

              可以的。如果你有三台机器想做连线 (interconnect) 那你当然
              要在同一台机器上使用两个  slip interface, 将其他两台连上
              来。  只要设定第二个   interface,  跟你设定第一个   slip
              interface 一样。

              备注:  第二个  slip  interface  要使用跟第一个不同的  IP
              address你可能需要与 routing 周旋一番以便完成你想要的, 但
              它应该能工作。

           我有一个 multiport i/o 卡, 我要怎么使用超过 4 个 SLIP ports ?

              kernel 中 slip 的部份内定最大可设定 4 个 slip device, 都
              定义在 /usr/src/linux/drivers/net/slip.h 中。 若要增加到
              16 个的话, 只要修改 #define SL_NRUNIT  到 16 就可以啦!你
              还需要编辑  /usr/src/linux/drivers/net/Space.c并为  sl4,
              sl5...  增加 sections,你可以拷贝以存在的 driver 定义当作
              样板。 你还要重新  compile  kernel  作出支援  16 个 slip
              session 的 kernel 。


  14.  已知的 Bugs

        Linux networking code 仍然是逐渐发展的东西, 它仍然有许多  bugs
        虽然现在已经很少有人提出了。 The Linux Networking News

               (http://iifeak.swan.ac.uk/NetNews.html)

        是个 Alan Cox 维护的 WWW 的 page, 包含了许多  NET-3 networking
        code 的资讯, 你可以得到哪些 bug 已经被发现了, 哪些还没有。参考
        :

                /usr/src/linux/net/inet/README

        随 kernel source 附送的档案, 或加入 ET channel。


  15.  著作权声明

        NET-2-HOWTO 的著作权属于 Terry Dawson 及 Matt Welsh 所有. 任何
        人可以逐字拷贝  (verbatim copy) 这份文件, 并可以不经作者的同意
        用任何媒体 ( 实体或电子 ) 重制及发散出去。翻译也同样地可以在未
        经允许下翻译 ( 如果该翻译文章中包含一些注明该文章的译者、 该文
        章是翻译文章 ),也可以商业性的散布 ( 我们也鼓励 ), 不过作者必须
        要被知会有这样的转用。

        简短的引用文字, 而不需事先经过作者同意, 引申及部份散布这份文件
        必须同时包括逐字拷贝  (verbatim copy) 这个档案, 或使逐字拷贝可
        取得。如有以上的状况, 必须在明显的地方注明逐字拷贝

        简单的说,  我们希望尽量透过许多管道散布。 不过我们也希望在这份
        HOWTO文件上保留著作权, 并想被知会任何散布的计画。 再者, 我们渴
        望所有文件上提供的资讯可以散布出去。

        如果你有关于这些著作权的任何问题, 请与  Matt  Welsh(the  Linux
        HOWTO coordinator) 联络:

              mdw@sunsite.unc.edu


  16.  其他 及 Acknowledgements.

        这份 HOWTO 已经经过  Matt Welsh 使用 smgl 工具完全重写, 这个工
        具跑起来还算正常, 也很容易上手。有许多已经赞助文章及建议来更新
        的人, 我忘了你们是谁, 一并感谢。

        如果你有任何的文章或建议请寄来给我。我最近相当地忙, 所以可能无
        法马上给您答覆, 但是我当然会考虑你所提供的意见。

        Linux networking code 已经走了一段很长的路了, 也不是一条很容易
        走的路。但是所有的发展者, 在收集方面做得不错 (excellent), 提供
        大家免费的、功能强大的、多功能的、有弹性的应用程式。我们欠他们
        太多感谢了。  Linus, Ross, Fred, Alan, Alpha/Beta 这些测试员、
        工具发展者及那些提供精神上的支持已经奉献给了 linux, 才造就了今
        天的局面。

        给那些想要贴来贴去(scratch)的人,

                          happy hacking !

        就这样。

        73

        Terry Dawson, vk2ktj.

        <terryd@extro.ucc.su.oz.au>, or <terry@orac.dn.telecom.com.au>


  17. 翻译跋

  17.1. 关于翻译:

          除了增加目录之外,  其馀在尽量维持原文意思下翻译。
          原则上「专业名词」都不翻译。
          不知道如何翻译的句子在句子前面会加个 {?}
          版次与原文版同步。

  17.2. 翻译字(英文字在此文件中的中文翻译):

          install    安装
          configure  设定(不过意思较接近建构)
          setup      设定起来
          enable     启动
          disable    取消
          distribute 分散

--

████████████████████
█ 曼桢有这么个脾气,一样东西一旦属于她█
█ 了, 她总是越看越好,以为它是世界上最█
█ 好的,...他知道,因为他曾经是属于她的█
████████████████████

※ 来源:.郁金香 BBS bbs.stu.edu.cn.[FROM: energy-lx.stu.ed]
--
※ 转寄:.郁金香 BBS bbs.stu.edu.cn.[FROM: 202.96.151.222]
--
※ 转载:.BBS 荔园晨风站 bbs.szu.edu.cn.[FROM: 192.168.0.141]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店