精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>电脑技术>>● Linux>>Linux之安装篇>>Linux中文HOWTO>>[转载] [CLDP] PPP-HOWTO

主题:[转载] [CLDP] PPP-HOWTO
发信人: [email protected].()
整理人: samuel(1999-03-25 10:44:59), 站内信件
出  处: clinux.ml.org

【 以下文字转载自 twlinux 讨论区 】
【 原文由
 [email protected] 所发表 】










       PPP HOWTO 中译版

   作者: Robert Hart [email protected]

 译者: Asd L. Chen & C.W.Huang

  v3.0, 31 March 1997. 翻译日期: 25 August - 9 October 1997



   Abstract

     这份文件展示如何把你的 Linux PC 连接到一台 PPP 伺服器上, 如何使用
     PPP 把区域网路连结在一起并且提供一种把你的 Linux 电脑设定为 PPP
     伺服器的方法. 本文同时提供帮助侦错无法正常运作的 PPP 连结.



版权声明

本文件的散布必须依据 GPL (GNU Public License).

散布

一旦这份文件有新的版本产生就会贴到 comp.os.linux.answer 讨论群. 也可以在此取得
HTML 格式的文件:

   □Linux Howto Index1

   □PPP-HOWTO2

其它格式(SGML, ASCII, postscript, DVI)的文件可以从这里取得: Howtos - other
formats3 .

因为 sunsite.unc.edu  的负载非常地重,请使用最靠近你的适当映射(mirror)节点.

感谢

不断地有许多人提供我写作此文件的协助. 特别感谢 Al Longyear 对 PPP
本身的指导(如果这里有任何错误,那是我的而不是他的), Greg Hankins(Linux HOWTOs
的维护人)以及 Debi Tackett (MaximumAccess.com)
许多在形式,内容顺序,逻辑与解释清晰度的有用建议.

最後,对於许多以电子邮件提供我意见的人,感谢您. 就像所有 HOWTO
的作者一样,帮助他人所获得的满足感就是我们所收到的报酬,而这已足够.

____________________

1. <URL:http://sunsite.unc.edu/mdw/linux.html#howto>

2. <URL:http://www.interweft.com.au/other/ppp-howto/ppp-howto.html>

3. <URL:ftp://sunsite.unc.edu/pub/Linux/docs/HOWTO/other-formats>

PPP HOWTO 中译版       1





PPP HOWTO 中译版       2



经由写作这份 HOWTO 文件我偿还一小部份人情债,这是我,以及所有其馀 Linux
的使用者, 所积欠给为我们撰写与维护这个作业系统的人的.


1.  简介

PPP (点对点协定)是在串列连结上跑 IP
(网际网路协定)以及其它网路协定的一种机制, 串列连结可以是直接的串列连接(使用
null-modem 缆线)或是使用数据机以及电话线路所造出的连结 (当然也包括如 ISDN
的数位线路).

使用 PPP, 你可以把你的 Linux PC 连接到一台 PPP
伺服器上并存取该伺服器所连接的网路资源(几乎)就如同你是直接连接在该网路上一般.

你也可以把你的 Linux PC 设为一台 PPP
伺服器,这样一来其它电脑就可以拨入你的电脑并且存取在你区域网路里的资源.

因为 PPP  是一种点对点 (peer-to-peer) 的系统,因此你也可以使用两台 Linux PC
上的 PPP  把网路连结在一起(或是把区域网路连结到网际网路上).

最主要的差异当然是速度 - 标准的乙太网路连线是以 10
Mbps(每秒百万位元)这个理论上的最大贯通量在动作, 而在数据机这方面最大是以 56
kbps(每秒千位元)的速度在动作.

同时,依据 PPP 连线的型态,某些应用以及服务在使用上可能会有些限制.

1.1  客户端以及伺服端

PPP
是一种完完全全是点对点的协定;拨接的机器以及接受拨接的机器之间(在技术上)并没有差异.
然而,为了清楚明白的缘故,以伺服端与客户端的方式来思考是很有用的.

当你拨入一个节点要建立 PPP  连线时,你是客户端.你所连线的那台机器是伺服端.

当你在设定一台 Linux 机器使其接收并处理拨入的 PPP 连线时,你正在设立一台 PPP
伺服端.

任何 Linux PC 都可以是 PPP  伺服端以及客户端 -
甚至於如果你有一个以上的串列埠(以及数据机,如果有必要)的话还可以同时扮演这两种角色.
如同前面所说的,就 PPP
而言,一旦连线建立那麽客户端与伺服端之间并不真的有什麽差异.

为了清楚明白的关系,这份文件把启始呼叫(即 "拨入")的那台机器称作客户端,
而把回应电话,核对拨入请求之验认(利用使用者代号,密码以及其它可能的机制)的那台机器称作伺服端.

使用 PPP
做为客户端把某个地方的一台或多台机器连结到网际网路上可能是大部份人都感兴趣的一点
- 这是将他们的 Linux 机器作为一客户端.

在这份文件中所描述的程序将会让你能够建立并自动化你的网际网路连线.

这份文件也将在把你的 Linux PC 设为 PPP 伺服器以及使用 PPP
来连结两个区域网路(有完整的递送设定)这些方面给你指引(这常常被称作建立广域网路连结).









PPP HOWTO 中译版       3



1.2  不同 Linux 套件间的差异

有这多不同的 Linux 套件,他们有自己的特质与行为模式.

特别地,Linux (以及 Unix)电脑有两种不同的起始方式,界面设定等等.

这两种分别是 BSD system initialisation 与 System V system initialisation.
如果你进入某些 Unix 的新闻讨论群,你会发现经常有双方支持者的战争.
如果你觉得有趣,就加入这个浪费网路频宽的行列!

最普遍使用的套件可能是

   □Slackware

     使用 BSD 形式的系统起始

   □Red Hat (and its former associate Caldera)

     使用 SysV 系统起始(有些许的修改)

   □Debian

     使用 SysV 系统起始

BSD 形式的系统起始通常将它的启动档案放在 /etc/...,这些档案是:

  /etc/rc
  /etc/rc.local
  /etc/rc.serial
       (也可能有其它档案)

最近,一些 BSD 系统的起始模式将使用 /etc/rc.d...
做为启动档案的存放目录,而不是将所有的东西都丢到 /etc 下.

System V 起始模式将启动档案存放在 /etc/... 或 /etc/rc.d/...
及其下的一堆子目录中:

     drwxr-xr-x   2 root     root   1024 Jul  6 15:12 init.d
     -rwxr-xr-x   1 root     root   1776 Feb  9 05:01 rc
     -rwxr-xr-x   1 root     root    820 Jan  2  1996 rc.local
     -rwxr-xr-x   1 root     root   2567 Jul  5 20:30 rc.sysinit
     drwxr-xr-x   2 root     root   1024 Jul  6 15:12 rc0.d
     drwxr-xr-x   2 root     root   1024 Jul  6 15:12 rc1.d
     drwxr-xr-x   2 root     root   1024 Jul  6 15:12 rc2.d
     drwxr-xr-x   2 root     root   1024 Jul 18 18:07 rc3.d
     drwxr-xr-x   2 root     root   1024 May 27  1995 rc4.d
     drwxr-xr-x   2 root     root   1024 Jul  6 15:12 rc5.d
     drwxr-xr-x   2 root     root   1024 Jul  6 15:12 rc6.d

如果你尝试寻找你的乙太网路卡及网路递送设定真正的配置地方,你需要追踪到这些档案里找出配置指令的所在.

1.3  套件相关的 PPP 配置工具

在某些安装套件(如 Red Hat 与 Caldera),有一个以 X window 设定的 PPP 拨接系统.








PPP HOWTO 中译版       4



这份 HOWTO
并未包含这种与最件相关的工具.如果你在使用上有问题,直接和套件的发行人询问.

对於 Red Hat 4.x 的使用者,可以在 Linux 的资源区找到 Red Hat PPP-TIP4 ,
也可在支援区找到 Red Hat Software5 .


2.  IP 号码

每一个连上网际网路的设备都必须拥有它们自己的,唯一的 IP
号码.这些是由每个国家的有关单位集中指定的.

如果你要把区域网路连上网际网路,在你的区域网路里你所拥有的所有电脑及设备都必须使用从指定给你的网路范围里分配的
IP 号码. 即使连接另一个区域网路(在网际网路之外)你也绝不能凭空取用 IP 号码.
如果你'偷来'的 IP 号码开始干扰其它已经使用这个 IP
的电脑的话,最糟时不仅不会动,还将会引起全体性的大破坏.

请注意在这整份文件里所使用的 IP
号码(有一些个例外)都是从保留给没有(不曾)连上网际网路的网路所使用的‘未连线网路号码’系列来的.

有一些特别留给不连接网际网路的网路使用的 IP 号码.这些 IP 号码依序是:

   □1 个 A-等级 的位址

     10.0.0.0 (netmask 255.0.0.0)

   □16 个 B-等级 的位址

     172.16.0.0 - 172.31.0.0 (netmask 255.255.0.0)

   □256 个 C-等级 的位址

     192.168.0.0 - 192.168.255.0 (netmask 255.255.255.0)

如果你的网路还没从你国家的权责单位分配到 IP
号码,那麽你的机器应该使用前面所列这些网路号码中的一个.

这些号码永远不该使用在网际网路上.

然而,它们仍可使用在一部连接在网际网路的机器上的内部乙太网路卡上. 因为 IP
号码是分配给网路界面,而不是电脑本身的. 因此虽然你的乙太网路界面使用 10.0.0.1
(例如),当你以 PPP 连上网际网路时,你的 PPP 界面将由伺服器分配给另一个(合法的)
IP 号码. 你的 PC 将有网际网路的连接能力,但其它区域网路内的电脑则没有.

不过,使用 Linux  以及 ipfwadm 软体的 IP 伪装能力(也叫做 NAT - Network address
Translation 网路位置转换), 你就可以把你的区域网路上不具合法 IP
号码的机器连上网际网路(提供的服务会有些限制).

想得到更多资讯请参考 Linux IP Masquerade mini HOWTO6 .

____________________

4. <URL:http://www.interweft.com.au>

5. <URL:http://www.Red Hat.com>







PPP HOWTO 中译版       5



对於大部分的使用者,经由 PPP  连接单一机器到网际网路服务提供者(Internet Service
Providers: ISP), 取得一个 IP 号码(或更正确的说,一个网路号码)是没有必要的.

如果你希望连接一个小型的区域网路到网际网路上,许多网际网路服务提供者可以从他们已有的
IP 位址空间中提供给你一个次网路(特定的一段 IP 号码). 或者,使用 IP
伪装能力. 

对於经由 ISP  连接单一 PC 到网际网路上的使用者,大部分的提供者使用动态的 IP
指定. 这是说,连线程序的一部份中,你所联系的 PPP
服务将会告诉你的机器这次连线的期间里该 PPP 界面应该使用什麽 IP 号码.
每次你连上 ISP 所得到的号码不会一样.

使用动态的 IP 号码,你每次的连线不会都取得相同的 IP 号码. 这对在你 Linux
机器上的伺服型态应用程式像是 sendmail, ftpd, httpd
以及诸如此类的软体而言会产生问题. 这些服务根基於这部提供服务的电脑能以同样的
IP 号码取用.

由於动态的 IP
号码指定而有所限制的服务(以及解决的方法,可能的话)稍後会在这份文件中讨论.


3.  这份文件的目的

3.1  设立 PPP 客户端

这份文件提供想要使用 Linux 以及 PPP 拨接到某一台 PPP 伺服器并且使用 PPP 设立 IP
连线的人们一些指引. 文件中假设 PPP  已经编译好并且安装在你的 Linux
机器上(但简短地涵盖重新配置/重新编译你的核心以便包含 PPP  支援的部份).

虽然 DIP(建立 SLIP 连线的标准方式)可以用来创造 PPP  连线,但 DIP
指令稿一般都相当地复杂. 因为这个缘故,这份文件并不涵盖使用 DIP 来建立 PPP
连线的部份.

取而代之的是,这份文件描述标准的 Linux PPP  软体(chat/pppd).

3.2  使用 PPP  连结两个区域网路或连结一个区域网路到网际网路上

这份文件提供关於连结两个区域网路或连结一个区域网路到网际网路上的(基本)资讯.

3.3  设立 PPP 伺服器

这份文件提供如何配置你的 Linux PC 做为 PPP  伺服器的指引(允许其他人拨接到你的
Linux PC 并且建立 PPP  连线).

你应该注意的是设定 Linux  作为 PPP
伺服器的方法有无数种.这份文件(目前)给你一种方式 - 作者用来它设立一台小型
PPP  伺服器(共有 16 台数据机).

这个方式已知运作良好.不过,它不一定是最好的方式.



____________________

6. <URL:http://sunsite.unc.edu/mdw/HOWTO/mini/IP-Masquerade>







PPP HOWTO 中译版       6



3.4  使用 PPP 於直接缆线(direct null modem)连结

本文件提供使用 PPP 连结於两部 Linux PCs 於 null modem 缆线的简短描述.
以此法连结其它作业系统於 Linux 也是可能的.
如果要这样做,你必须参考你要连结的作业系统的文件.

3.5  这份文件目前尚未涵貌□..

   □编译 PPP 软体

     参见随附你使用的 pppd 版本而来的文件.

   □连接以及配置数据机到 Linux 上(细节)

     请参阅 Serial-HOWTO,以及数据机相关的起始设定,参阅 Modem Setup
     Information7  里的资讯可能对你设定数据机有所帮助.

   □使用 DIP  创造 PPP  连线

     使用 chat 取代...

   □使用 socks  或是 IP Masquerade

     已经有涵盖这两个套件的绝佳文件.

   □使用 diald 以建立自动连线

     请参阅 diald 文件里的资讯.

   □使用 EQL 将两部数据机合成单一 PPP 连结.

   □与套件相关的 PPP 连线方法(例如 Red Hat 4.x 网路设定工具)

     请参阅该套件中的文件.

   □不断增加的自动建立 PPP 工具

     请参阅适当的文件.


4.  涵貌熙n体版本

这份使用说明假设你使用 Linux 1.2.x  核心配合 PPP 2.1.2 软体或 Linux 1.3.X/2.0.x
以及 PPP 2.2  版.

在本文件撰写之时,Linux 的 PPP 软体最新正式版本是 ppp-2.2f.
最新的版本(ppp-2.3)还在 beta 阶段.

使用 PPP 2.2.0 配合核心 1.2.13 是有可能的.然而,要这样做需要核心修补.
建议核心 1.2.13 版本的使用者升级到 ppp-2.2 因为它包含了许多错误修正及功能加强.


____________________

7. <URL:http://www.in.net/info/modems/index.html>







PPP HOWTO 中译版       7



还有,你应特别注意不能将 PPP 2.1.2 与 Linux 核心 2.0.X 合用.

请注意这份文件不包括使用 Linux 核心 2.0.x  的可载入模组所引起的问题. 请参阅
kerneld mini-HOWTO 以及核心/模组 2.0.x  的文件(在 Linux 2.0.x  的原始程式目录
/usr/src/linux/Documentation/... 里).

因为这份文件是设计来协助新手的,强烈建议你使用已知能稳定地共同运作的 Linux
版本及适当的 PPP 版本.


5.  其它有用的/重要的文件

鼓励使用者阅读:-

   □随附於 PPP 套件的文件;

   □pppd 以及 chat 的线上使用手册;

     (使用 man chat 以及 man pppd 来阅读)

   □Linux 网路管理指引 (NAG);

     参阅 The Network Administrators' Guide8

   □Net-2/3 HOWTO;

     参阅 Linux NET-2/3-HOWTO9

   □在 /usr/src/linux/Documentation 里的 Linux 核心文件;

   □数据机设定资讯 - 参阅 Modem Setup Information10

   □由 O'Reilly and Associates 出版的最佳 Unix/Linux 书籍(参阅 O'Reilly and
     Associates On-Line Catalogue11  里的目录). 如果你是 Unix/Linux
     的新手,立刻跑(不要用走的)到离你最近的电脑书店去投资几样这些资料.

   □由 Al Longyear 所维护的 PPP-FAQ,可在 Linux PPP-FAQ12  取得.

     里面包括了大量有用的资讯以问答的形式出现,在试图找出为何 PPP
     不能(正常)工作时相当有用.

   □不断新增由不同出版社与作者出品的书籍;


____________________

8. <URL:http://sunsite.unc.edu/mdw/LDP-books/nag-1.0/nag.html>

9. <URL:http://sunsite.unc.edu/mdw/HOWTO/NET-2-HOWTO.html>

10.<URL:http://www.in.net/info/modems/index.html>

11.<URL:http://www.ora.com/>

12.<URL:ftp://sunsite.unc.edu/pub/Linux/docs/faqs>







PPP HOWTO 中译版       8



     鼓励你去查阅这些流通的书籍.Linux
     的发展与套件的演进相当快速,而书籍的改版速度(一般来说)相当的慢!
     买一本已经过期的好书(现在有许多)可能使得新使用者感到困惑与失望.

Linux 文件的最佳起点就是 The Linux Documentation Project Home Page13 . HOWTOs
倾向於定期地更新.

虽然即使不必阅读这些资料中的任何一份你也可以使用这份文件来建立你的 PPP 连结,
但是如果你去阅读这些文件那麽你对於你所做的究竟发生了些什麽将会了解更多!
你将能够精确的提出自己的问题(或至少在 comp.os.linux... 新闻讨论群或 Linux mail□
ing lists 中问出较有深度的问题).

这些文件(与各种其它文件,包括相关的 RFCs
等)提供额外的以及比这份使用说明所能包含的更多细节解释.

如果你要使用 PPP 连接区域网路到网际网路上,那麽你将得知道一些关於 TCP/IP
网路运作的知识. 补充一点这份文件前面提到的资料,你将会发现 O'Reilly 出版的
"TCP/IP Network Administration"  以及 "Building Internet Firewalls" 很有好处!

5.1  有用的 Linux 电子邮递列表

有许多在不同使用者等级之间流通的电子邮递列表(mailing lists).
选择你有兴趣以及对你专业知识及观点有所帮助的列表来订阅.

一些忠告: 有些列表是给那些"专家级"使用者或是特殊主题的.
虽然没有人会抱怨你"潜伏"(订阅但不发表文章)在里面,
不过如果你在不适合的列表中提出"新手"的问题你可能会收到一些愤怒的意见.

这并不是因为专家级的使用者讨厌新进的使用者,而是因为这些列表是用来处理具有一定困难度的特殊主题的.

加入那些可以公开订阅的列表,但请局限你的意见於列表的相关主题上面.

Linux 电子邮递列表一个很好的起点是 Linux Mailing List Directory14 .


6.  将 PPP 设定为客户端的工作概要

这份文件包含了许多资讯 - 而且每次改版又不断增加!

因此,本节的目的在於提供一简短的概要说明要将你的 Linux 系统作为客户端连接到 PPP
伺服器所需的工作.

6.1  取得/安装软体

如果你的 Linux 套件并未包含 PPP 软体,你可从此取得: the Linux PPP daemon15 .

这是本文件撰写的时候最新正式版本.然而,尽量从该站取的最新的版本(本文件撰写时

____________________

13.<URL:http://sunsite.unc.edu/mdw/>

14.<URL:http://summer.snu.ac.kr/~djshin/linux/mail-list/index.shtml>

15.<URL:ftp://sunsite.unc.edu/pub/Linux/system/network/serial/ppp/ppp-2.2.0g.tar.gz>







PPP HOWTO 中译版       9



ppp-2.3 尚在 beta 阶段而且应该很快会发行).

这份 PPP 套件包含了如何编译及安装所需的指引,因此本文并不包含此部份!

6.2  编译核心加入 PPP 支援

Linux 的 PPP 运作包含两部份

   □上面提到的 PPP daemon

   □PPP 的核心支援

许多套件似乎在它们预设的安装核心中提供 PPP 的支援,但其馀则否.

如果在启动时核心报告这样的讯息

     PPP Dynamic channel allocation code copyright 1995 Caldera, Inc.
     PPP line discipline registered.

你的核心已编译 PPP 支援在内.

那就是说,不论你使用什麽套件你可能希望自行编译核心以在你的特定硬体配置之下得到最有效的系统资源利用.
请记住核心不能被置换出记忆体因此尽量让核心保持最小在记忆体有限的机器上相当有用.

本文件在 配置你的 Linux  核心 (section configuration-hn], page configuration-
pn]) 一节提供了重新编译核心的最少说明.

细节部份请参阅 The Linux Kernel HOWTO16 .

6.3  从你的 ISP 取得资讯

几乎有无数种设定 PPP 伺服器的方法. 为了连上你的 ISP, 你必须取得 PPP
伺服器如何运作的资讯.

因为你用的是 Linux, 在一些仅知道 MS Windows 客户端的 ISP
谘询部门可能会遭遇困难.

然而,愈来愈多的 ISP 使用 Linux 提供服务 - 而且 Linux
也渗入公司环境,如果你真的遇到问题你也可能会很幸运.

取得你所需的 PPP 伺服器资讯 (section info-hn], page info-pn])
一节告诉你需要知道你连接的 PPP 伺服器的什麽资讯 - 以及如何找出这些资讯.

6.4  设定你的数据机及串列埠

为了连上 PPP 伺服器并取得最佳的资料传输速率,你的数据机必须设定正确.

同样地,连接数据机及电脑的串列埠也必须正确地设定.

设定你的数据机及串列埠 (section 9., page 16) 一节提供这方面的资讯.


____________________

16.<URL:Kernel-HOWTO.html>







PPP HOWTO 中译版      10



6.5  建立名称到位址解析(DNS)

除了执行 PPP 及自动签入 PPP 伺服器的档案之外,还有一些文字配置档案必须设定,
以便让你的电脑能将像这样的名称 www.interweft.com.au 解析为 IP
位址以便真正与那台电脑连线. 这些档案是:-

   □/etc/resolv.conf

   □/etc/host.conf

建立名称到位址解析 (section 10., page 20) 一节提供这方面的设定细节.

特别地,你并不需要在你的 Linux PC
上执行名称伺服器以连接到网际网路上(虽然或许你会想这麽做).
你所需的只是知道至少一部你能使用的名称伺服器 IP 位址(最好是你的 ISP 所提供的).

6.6  PPP 与 root 权限

因为在你的 Linux 电脑与另一个 PPP 伺服器建立连结需要操作网路界面(PPP
界面是一个网路界面)与核心的路由表,pppd 需要使用 root 的权限.

细节部份,参阅 使用 PPP 与 root 权限 (section 11., page 22) 一节.

6.7  检查你的 PPP 套件档案及设定 PPP 选项

有好几个配置及拨号档案需要建立以便让 PPP 运作.在 PPP
套件中有一些范例,而本节告诉你应有的这些档案是什麽:-

     /etc/ppp/options
     /etc/ppp/scripts/ppp-on
     /etc/ppp/scripts/ppp-on-dialer
     /etc/ppp/options.tpl

看你想用 PPP 达到的目标是什麽你可能需要一些额外的档案:-

     /etc/ppp/options.ttyXX
     /etc/ppp/ip-up
     /etc/ppp/pap-secrets
     /etc/ppp/chap-secrets

除此之外,PPP daemon 有大量的线上选项,正确地使用是很重要的;
因此本节带你看这些标准 PPP 选项并帮助你选择你应使用的选项.

细节部份,请参阅 设定 PPP 连接档案 (section 12., page 23) 一节.

6.8  如果你的 PPP 伺服器使用 PAP 认证(Password Authentication Protocol)

许多 ISP 设立 PPP 伺服器使用 PAP 认证.如果你的伺服器并不使用 PAP
(如果你可以用手动签入并收到标准的使用者名称/密码提示符号那麽它并未使用
PAP),那麽你可以跳过此节.

取代在进入伺服器时出现提示符号输入使用者名称及密码的是,使用 PAP 的 PPP
伺服器并不需要文字模式的签入方式.









PPP HOWTO 中译版      11



使用者认证是连接控制协定(link control protocol, LCP)的一部份,在建立 PPP
连线之初期交换的资讯.

如果你的 PPP 伺服器使用 PAP 认证(Password Authentication Protocol) (section
13., page 30) 一节提供你使用 PAP 建立 PPP 连结所需档案的资讯.

6.9  以手动方式连接至 PPP 伺服器

已经建立完基本的档案之後,透过手动(使用 minicom 或 seyon)的方式连接及启动你
Linux PC 的 pppd 来测试是个不错的主意.

参见 以手动方式建立 PPP 连结 (section 14., page 33) 说明设定的细节部份.

6.10  使你的 PPP 连结自动化

一旦你成功地用手动方式签入,你可以试著建立一指令稿以自动建立此连结.

使你的连结自动化 - 创造连结指令稿 (section 15., page 36)
一节包含了建立所需的指令稿,以及相当多的注意力集中在 chat 命令於 PPP
伺服器的签入过程.

这节也讨论了使用指令稿於 PAP/CHAP 认证的伺服器上.

6.11  结束连结

一旦你的连结能够建立并正常正作,你必需能够结束连结.

这在 结束 PPP 连结 (section 17., page 44) 一节说明.

6.12  如果你遭遇问题

许多人无法让 PPP 正常地工作.PPP
伺服器的种类以及和它们建立连线的方法有非常多种. 类似地,PPP 有许多的选项 -
而有些选项是不能一起用的.

除了签入并起始 PPP 服务的问题之外,数据机本身及电话线路也可能会有问题.

解决问题 (section 18., page 45)
一节提供一般错误的基本资讯,以及如何分离并解决的方法.

这里提供的不过是基本的资讯.Al Longyear 所维护的 PPP-FAQ
包含了更多这一方面的资讯!

6.13  建立连结之後

一旦 PPP 连结可以运作了(特别地,一旦 IP 层可以运作),Linux 的 PPP
可以自动执行(以 root 身份)一指令稿完成任何你想达成的功能.

建立连结之後 (section 23., page 51) 一节提供 /etc/ppp/ip-up 指令稿的资讯,
它如何接收 PPP 传来的参数以及如何利用它来做一些像自 ISP 取回你的电子邮件,
送出在你机器伫列中存放的邮件等等工作.











PPP HOWTO 中译版      12



6.14  动态 IP 连接提供标准 IP 服务的问题

就像在简介一节里指出的,动态 IP 号码影响你的 Linux PC
作为网际网路伺服器的能力.

动态 IP 连接提供标准 IP 服务的问题 (section 21., page 49)
一节提供(主要)受影响的服务以及你所能做(如果有的话)的克服办法.


7.  配置你的 Linux 核心

为了要能够使用 PPP,你编译的 Linux  核心必须包含 PPP 的支援. 如果你还没有
Linux  的原始程式码请先取得 - 在 Linux  的档案系统标准中它是放在
/usr/src/linux 里面.

检查这个目录 - 许多的 Linux 套件会在安装过程中安装此原始程式码(档案及次目录).

在启动时,你的 Linux 核心会印出大量的讯息.如果核心支援 PPP
的话会包含此一讯息. 要观看这些讯息的话,看看你的系统记录档或用 dmesg | less
指令将这些讯息显示在萤幕上. 如果核心支援 PPP 的话你将会看到像这样的几行

     PPP Dynamic channel allocation code copyright 1995 Caldera, Inc.
     PPP line discipline registered.

(这是 Linux 2.0.x 系列核心的讯息).

Linux 核心的原始程式可以从 sunsite.unc.edu 或其映射节点取得.

7.1  安装 Linux 核心原始程式码

下面是简短的取得及安装 Linux 核心原始程式码的指示.详细的资讯可以在 The Linux
Kernel HOWTO17 中找到.

为了安装及编译核心,你必须以 root 的身份签入.

  1.  切换到 /usr/src 目录下

      cd /usr/src

  2.  检查 /usr/src/linux 看看你是否已经安装了原始程式码.

  3.  如果没有的话,由 Linux kernel source directory18
      或离你最近的映射节点取回.

      如果你想找更旧版本的核心(例如 1.2.X),可到 Old Linux kernel source
      directory19  找找.


____________________

17.<URL:Kernel-HOWTO.html>

18.<URL:ftp://sunsite.unc.edu/pub/Linux/kernel/v2.0>

19.<URL:ftp://sunsite.unc.edu/pub/Linux/kernel/old>







PPP HOWTO 中译版      13



  4.  选择适当的核心 - 通常是最近的版本.取回後将此 'tar' 压缩档放在 /usr/src.

      注意: 一个 'tar' 档案是一种压缩档 -
      可能压了许多档案和目录在里头.它相当於 DOS 下的 zip 档案.

  5.  如果你已经安装了原始程式,但想要升级到新版的核心,你必须先移除旧的程式码.用这个指令

      rm -rf /usr/src/linux

  6.  用这个指令解压缩

      tar xzf linux-2.0.XX.tar.gz

  7.  然後,cd /usr/src/linux 并看看 README
      档.里头包含了完整的解释如何配置及编译新核心.
      仔细阅读这个档案(将它印出来放在手边是个好主意,直到你已做了足够多次知道怎麽办).

7.2  □解你的硬体

如果你要重新编译你的核心你必须知道在你 PC 里面的界面卡/设备!!
对於某些设备(像是音效卡)你也得知道各种设定(像是硬体中断号码,输出入位址以及诸如此类的资讯).

7.3  编译核心 - Linux 1.2.13 核心

要开始配置程序,首先依照在解说档里的说明适当地安装原始程式码.然後以下面的指令开始核心的配置程序

     make config

为了要能够使用 PPP  ,你必须配置核心包含 PPP  的支援(使用 PPP 需要 pppd
以及核心的 PPP 支援两者).

       PPP (point-to-point) support (CONFIG_PPP) [n] y

根据在你 PC 里面的硬体以及你想要的 Linux
作业系统特色回答其它的配置问题.然後继续依照该解说档来编译并安装你的新核心.

核心 1.2.13 只要制造四个 PPP 装置.对於多埠卡(multi-port serial
cards)来说,你必须修改核心 PPP 的原始程式以便得到更多埠的支援. (参见随附
PPP-2.1.2 套件而来的 README.linux 档案说明你需要做的细节部份).

注意: 核心 1.2.13 的配置对话不允许你回头 - 因此如果你在 make config
对话中答错问题,用 CTRL-C 跳出来重新开始.

7.4  编译核心  - Linux 1.3.x 及 2.0.x 核心

对於 Linux 2.0.x  的核心,你可以使用类似 Linux 1.2.13 的程序.
再一次,依照在解说档里的说明适当地安装原始程式码.然後以下面的指令开始核心的配置程序

     make config

然而,你也有另外的选择

     make menuconfig









PPP HOWTO 中译版      14



这提供一个以选单为基础配合线上辅助的配置系统,允许你在配置程序中随意所之.

也有一个以 X windows  为基础的配置界面

     make xconfig

你可以直接编译 PPP  的支援到核心里去或者是做成可载入模组.

如果你只在你 Linux  机器运作的一部份时间里使用 PPP  的话,那麽建议你把 PPP
的支援编译为可载入模组. 使用 'kerneld',你的核心将会在你开始你的 PPP
连结程序时自动载入提供 PPP  支援所需的模组.
这节省了宝贵的记忆体空间(因为核心没有任何一个部份可以被置换到记忆体外,但可载入模组在未使用时会自动被移除).

要这样做的话,你需要打开可载入模组的支援:

  Enable loadable module support (CONFIG_MODULES) [Y/n/?] y

要加入 PPP  的核心支援,回答下列这个问题:-

  PPP (point-to-point) support (CONFIG_PPP) [M/n/y/?]

要做成可载入模组的话,回答 M 即可,否则就编译成核心的一部份,回答 Y 就是.

与 1.2.13 的核心不同的是,2.0.x 的核心视需要自动建立 PPP
设备并且一点都不需要去研究原始程式码以增加可用的 PPP  设备.

7.5  PPP-2.2 与 /proc/net/dev 的注意事项

如果你在使用 PPP-2.2,你会发现建立 PPP 装置的一个副作用就是如果你观察 /proc/net
档案系统看不到 PPP 的装置, 直到开始使用 pppd 装置才会被建立起来:-

     [hartr@archenland hartr]$ cat /proc/net/dev
     Inter-|   Receive |  Transmit
      face |packets errs drop fifo frame|packets errs drop fifo colls carrier
 lo:  92792    0    0  0    0    92792    0  0    0     0  0
       eth0: 621737   13   13  0   23   501621    0  0    0  1309  0

一旦你有一个(或更多) PPP 服务启动後,你会看到像这样的项目(从一部 PPP
伺服器上取得):-

     [root@kepler /root]# cat /proc/net/dev
     Inter-|   Receive |  Transmit
      face |packets errs drop fifo frame|packets errs drop fifo colls carrier
 lo: 428021    0    0  0    0   428021    0  0    0     0  0
       eth0:4788257  648  648  319  650  1423836    0  0    0  4623  5
       ppp0:   2103    3    3  0    0     2017    0  0    0     0  0
       ppp1:  10008    0    0  0    0     8782    0  0    0     0  0
       ppp2: 305    0    0  0    0      297    0  0    0     0  0
       ppp3:   6720    7    7  0    0     7498    0  0    0     0  0
       ppp4: 118231  725  725  0    0   117791    0  0    0     0  0
       ppp5:  38915    5    5  0    0    28309    0  0    0     0  0











PPP HOWTO 中译版      15



7.6  配置核心的一般考量

如果你要把你的 Linux PC 设为一台 PPP  伺服器的话,那麽你必须把 IP forwarding
的支援编译进去. 如果你想使用 Linux
连接两个区域网路或将区域网路连接到网际网路上的话这个选项也是需要的.

如果你要连接一个区域网路到网际网路上(或者甚至只是连接两个区域网路),你应该要关心安全上的问题.在核心中加入
IP firewalls 的支援可能是必须的!

如果你想要用 IP 伪装连接使用前述任何一个‘未连线’IP
网路号码的区域网路那麽你也需要这个配置.

要使用 IP 伪装与 IP firewalling,你必须在 make config 过程中的第一个问题上回答
yes:-

     Prompt for development and/or incomplete code/drivers (CONFIG_EXPERIMENTAL)?

虽然这听起来对新使用者有些困难,许多人仍愉快地使用 Linux 2.0.X 核心的 IP 伪装与
IP firewalling 功能而没有问题.

一旦你完成新核心的安装以及重新启动之後,你就可以开始配置并测试你的 PPP 连结.


8.  取得你所需的 PPP 伺服器资讯

在你可以建立到某台伺服器的 PPP 连线之前,你需要取得下列的资讯(从 PPP
伺服器的系统管理/使用者支援人员取得):-

   □拨接服务的电话号码

     如果你是在私用交换机(PABX)系统下,你还需要拨出外线信号的私用交换机号码 -
     通常是 0 或 9.

   □伺服器使用动态或静态的 IP 号码?

     如果伺服器使用静态的 IP 号码,那麽你需要知道在 PPP  连线中你这端要使用哪个
     IP 号码. 如果你的 ISP 提供你一合法 IP 号码的次网路,你需要知道你能使用的
     IP 号码及网路遮罩.


     大部分的网际网路服务提供者都使用动态的 IP
     号码.如前述,这对於你可以使用的服务会有些限制.


     然而,即使你使用静态的 IP 号码,大部份的 PPP
     伺服器也不允许(为了安全理由)客户端自行指定 IP 号码,因为这有安全风险.
     你仍然必须知道这些资讯.

   □ISP 的领域名称伺服器 IP 号码是什麽?

     虽然只需要一个但最少应该得要有两个.


     这里可能会有一个问题.微软的 Windows 95 PPP 设定允许让 DNS








PPP HOWTO 中译版      16



     的地址在连线过程中传到客户端. 因此你的 ISP
     (或公司的谘询室)可能会告诉你不需要知道 DNS 伺服器的 IP 位址.


     对於 Linux 来说,你必须至少知道一个 DNS 的位址. 目前 Linux 的 PPP
     实作中不允许在连立连线之时动态地指定 DNS 的 IP 号码 - 很可能将来也不会.


     注意: 虽然,Linux (作为 PPP 的客户端)不能从伺服器中接受 DNS
     的位址,然而,作为 PPP 伺服器时, 它可以用 pppd 的选项 dns-addr
     为客户端指定这个资讯.

   □该伺服器是否需要使用 PAP/CHAP?

     如果是这样你需要知道你用来连线 "id" 以及 "secret" .(这大概会是你的在这个
     ISP 的使用者名称以及密码).

   □伺服器会自动起动 PPP  或者在一旦你签入之後需要发出任何指令来起动伺服端的
     PPP?

     如果你必须下某个指令来起动 PPP  的话,它是什麽?

   □如果伺服器是微软的 Windows NT 系统,它是否使用微软的 PAP/CHAP 系统?

     许多公司的区域网路似乎是使用 Windows NT 的系统以增加安全性.
仔细地注意这些资讯 - 你马上要使用它们!


9.  设定你的数据机及串列埠

你应该确认你的数据机设定正确而且你知道它连接到哪个串列埠.

谨记:-

   □DOS com1: = Linux /dev/cua0 (and /dev/ttyS0)

   □DOS com2: = Linux /dev/cua1 (and /dev/ttyS1)

     等等

还要提醒你就是如果你有四个串列埠,标准 PC 上让 com1 与 com3 共用 IRQ4 且让 com2
与 com4 共用 IRQ3.

如果你有其它机装置和串列埠共用一个 IRQ 的话可能会有问题.
你必须确定你的数据机串列埠拥有它自己,唯一的一个
IRQ.许多现在的串列埠卡(与品质较佳的主机板上的串列埠)允许你将串列埠上的 IRQ
移开.

如果你在用 Linux 2.0.X 核心,你可以用 cat /proc/interrupts 检查使用中的
IRQ,你会看到像这样的输出结果












PPP HOWTO 中译版      17



      0:    6766283   timer
      1:      91545   keyboard
      2:   0   cascade
      4:     156944 + serial
      7:     101764   WD8013
     10:     134365 + BusLogic BT-958
     13:   1   math error
     15:    3671702 + serial

这里显示了一个串列埠在 IRQ4 (一个滑鼠)与一个串列埠在 IRQ15. (也有一串列埠在
com2, IRQ3 与 com4 是在 IRQ14,但并未使用,没有显示出来).

请小心 - 如果你要调你的 IRQ 的话你要确实知道你在做些什麽!
你不只需要打开你的电脑外壳,将界面卡拔下并调整 jumper,你还需要知道那个占用什麽
IRQ. 以我的例子来说,这完全是以 SCSI 为主的 PC,因此我将主机板上的通常会占用
IRQ14 与 15 的 IDE 界面关掉.

你还需要注意如果你的 PC 还跑了其它的作业系统,更动 IRQ
的位址可能使那个作业系统启动不正常,或根本开不了机!

如果真的将串列埠移到了非标准的 IRQ,那麽你需要告诉 Linux 每一个埠所用的 IRQ
位址. 这可以用 setserial 指令达成,而且最好将它放到 rc.local,或在 SysV
系统中由 rc.local 所呼叫的 rc.serial 里面成为开机过程的一部份.
以我上面所列的机器来说,用这样的指令

     /bin/setserial -b /dev/ttyS2 IRQ 11
     /bin/setserial -b /dev/ttyS3 IRQ 15

然而,如果你使用由 kerneld
行程所负责的动态载入串列模组,你不能像这样每次开机时设定一次 IRQ 後就把它忘了.
这是因为如果串列模组被移除,Linux 就会忘了这些特殊的设定.

因此,如果你以动态方式载入串列模组,你必须要在每入载入模组时重新设定 IRQ 才行.

9.1  串列埠与速度相容性的注意事项

如果你使用高速(外接式)数据机(14,400 baud
或更高),你的串列埠速度必须能够处理这种数据机所产生的资料量,特在是当数据机在压缩资料时.

你的串列埠需要一种新型的 UART (Universal Asynchronous Receiver Transmit□
ter),像是 16550(A).
如果你在使用一部旧的机器(或旧的串列卡),很可能串列埠上只有旧的 8250
UART,这在你使用高速数据机时可能会发生问题.

使用这个指令

     setserial -a /dev/ttySx

让 Linux 回报你使用的 UART 类型.如果你没有 16550A 型的
UART,去买一块新的串列卡(不到 $50). 当你买一块新卡时,确定你能调整上面的 IRQ!

注意: 最早版本的 16550 UART
晶片上有瑕疵.这点很快就被发现了而且也发行了新版的晶片 - 16550A UART.
但仍有少部份有瑕疵的晶片流入了市面.虽然不太可能刚好就让你买到,但你还是应该看一下晶片类型是不是








PPP HOWTO 中译版      18



16550A,特别是在一些较早期的串列卡上.

9.2  串列埠名称

以前,Linux 用 cuaX 表示拨出的串列埠名而 ttySx 表示拨入的名称.

自核心 2.0.X 之後这样的要求已经改变了,所以你应该可以用 ttySx
同时表示拨入及拨出的名称. 据我了解 cuaX
的装置名称在未来版本的核心中可能会取消.

9.3  配置你的数据机

为使用 PPP 你将得正确地配置你的数据机 -
要完成这件工作请阅读你的数据机使用手册!  大部分的数据机都有 PPP
所需求的的出厂预设选项. 最基本的配置是:-

   □硬体流量控制 (RTS/CTS) (&K3 在许多采用 Hayes 指令集的数据机)

你应该要研究的其它设定(使用标准 Hayes 指令)是:

   □E1 开启指令的本地回应 (chat 运作所需)

   □Q0 回报执行结果代码 (chat 运作所需)

   □S0=0 关闭自动回应 (除非你想让你的数据机接听电话)

   □&C1 只在连线之後侦测载波

   □&S0 Data Set Ready (DSR)永远设为开启

   □(看情况) Data Terminal Ready

有一个站台提供你不断增加的数据机款式的设定,可能会对你有所帮助,在 Modem setup
information20 .

在你的电脑与数据机之间的数据机串列面界面如何运作也值得研究了解.
大部分现代的数据机都允许你以固定的速度使用串列界面,即使电话线路界面切换到最高的速度它跟远端数据机都能够处理.

这称为 split speed opera□
tion.如果你的数据机能支援这项功能,把数据机的串列界面锁定在它的最高速度(通常是
115,200 baud ,但对 14,400 数据机来说可能是 38,400 baud).

使用你的通讯软体(例如 minicom)找出关於你数据机的配置资讯并且设为 PPP
所需的设定. 许多数据机会在 AT&V
指令的回应中回报它们目前的设定状况,但是你应该查看一下你的数据机使用手册.

如果你把设定全都弄乱了,那麽你可以藉由发出 AT&F 指令回到稳定状态(通常可以) -
回到出厂设定. (在我遇过的大部分现代数据机中,出厂的设定包含所有使用 PPP
所需的设定 - 但是你应该做个检查).

一旦你找出了必要的设定字串就把它写下来.然後你必须做个决定:

____________________

20.<URL:http://www.in.net/info/modems/index.html>







PPP HOWTO 中译版      19



你可以将这些设定值存在数据机上的非挥发性记忆体中这样可以用适当的 AT
指令就可叫出. 另一个做法是将这些正确的设定在 PPP 的拨号过程中传入.

如果你只从 Linux 下使用数据机连接到 ISP
伺服器,最简单的做法就是将这些设定值存入数据机上的非挥发性记忆体(non-volatile
RAM).

另一方面,如果你要还在其它的应用程式或作业系统上使用数据机,最保险的做法是在每次拨号时才将这些资讯传入,
如此可以确保在每次拨号时数据机总是在正确的状态.(记下这些设定字串还有个好处就是在数据机遗失了记忆体的内容时,这确实可能发生).

9.4  串列流量控制注意事项

当资料在串列通讯线路上流动的时候,可能会发生资料到达的比电脑能处理的还要快这种情况(电脑可能忙著做其它的事
- 记得,Linux 是一个多使用者,多工的作业系统).
为了确保资料不会漏失(在缓冲区中的资料不会超载而因此漏失掉),需要某些控制资料流量的方法.

有两种方法可以在串列线路上达成这个目的:-

   □使用硬体信号(Clear To Send/Request to Send - CTS/RTS)

   □使用软体信号(control S and control Q, also known as XON/XOFF).

虽然後者用在终端机(文字)连结上可能很好,但是在 PPP  上的资料使用整个 8 bits
编码空间 - 而且在资料中的某个地方相当可能存在会被转成 control S  以及 control
Q  的位元组. 所以,如果数据机设成使用软体流量控制的话,那麽传输很容易被扰乱!

对於使用 PPP 的高速连结(使用 8 bits
资料编码)来说硬体流量控制是很重要的,因此你必须使用硬体流量控制.

9.5  测试你的数据机的拨出弁□

在你完成了串列埠与数据机的设定之时试著拨到你的 ISP
上看看能否连上以确定设定是否有误.

使用你的终端机通讯软体(像是 minicom),拨到你想使用 PPP  连线的那台 PPP
伺服器.

(注意: 在这个阶段我们并不尝试建立 PPP 连线 -
只是要证实我们拥有正确的电话号码以及为了签入并且起动 PPP
而确实地找出伺服器究竟传送给我们什麽讯息).

在这个过程中,可以截取(记录到一个档案里)整个签入的过程或者是小心地(非常小心地)确实写下远端伺服器所给你提示输入你的使用者名称以及密码的讯息(以及任何建立
PPP  连线需要下达的指令).

如果你的伺服器使用
PAP,你可能不会看见签入的提示符号,而是(以文字表示的)连结通讯协定(看起来像是垃圾)出现在你的萤幕上.

一些警告:-

   □某些伺服器相当聪明: 你可以用文字模式的使用者名称/密码方式或使用 PAP 签入.
     因此如果你的 ISP 或公司站台使用 PAP
     但你没有立刻在萤幕上看到垃圾,也并不表示你做错了.










PPP HOWTO 中译版      20



   □某些站台要求你先输入一些起始的文字然後才启动标准的 PAP 程序.

   □某些 PPP 伺服器是被动的 -
     它们就坐在那里等待而不送出任何资料,直到客户端拨入并送出合法的连结控制协定.
     如果你要连接的 PPP 伺服器是被动模式的,你将不会看到任何垃圾!

   □某些伺服器在你按下 ENTER 前不会启动 PPP -
     因此如果你正确签入但未看到垃圾的话可以试试!

这最少值得拨接两次 - 某些伺服器会在每次你签入时改变提示(例如依时间改变!).
你的 Linux 机器在每次你拨入的时候要能够辨认的两个主要的提示是:-

   □要求你输入使用者名称的提示;

   □要求你输入密码的提示;

如果你必须发出某个指令来起动伺服端的
PPP,那麽你也需要找出一旦你签入之後伺服器所给你输入指令以启动 PPP 的提示.

如果你的伺服器自动起动 PPP  的话,一旦你签入完成,你将开始见到萤幕上出现垃圾 -
这是 PPP  伺服端传送给你的机器以起动并且配置 PPP 连线的资讯.

这看起来应该会是像这样的东西:-

     ~y}#.!}!}!} }8}!}$}%U}"}&} } } } }%}& ...}'}"}(}"} .~~y}

(而且它还会一直进来! )

在某些系统中 PPP
必须在伺服端上明确地加以起动.这通常是因为该伺服器被设定成允许使用相同使用者名称/密码配对来做
PPP  签入及一般使用界面(shell) 的签入.
如果是这样,一旦你签入就发出该指令.再一次,你将会见到 PPP
连线伺服端起动的垃圾资讯 - 所以现在你可以挂断了.

如果你没有在连上时立即在萤幕上看到这些垃圾(如果必要的话先签入并启动 PPP
伺服器), 按下 Enter 试试能否启动 PPP 伺服器...

这个时候,你就可以挂断你的数据机(通常是,快速地键入 +++ 一旦你的数据机回应 OK
然後接著下 ATHO 指令).

如果你不能使你的数据机运作的话,阅读你的数据机使用手册,你通讯软体的线上使用手册以及
Serial HOWTO!  一旦你解决该问题,继续进行前面所说的.


10.  建立名称到位址解析(DNS)

虽然我们人类喜欢给事物取个名称,电脑喜欢数字. 在 TCP/IP
网路上(这也就是网际网路),我们藉由特定的名称呼叫某台机器,而且每台机器都存在於一个特定的领域标记里面.
举例而言,我的 Linux 工作站称为 archenland 而它是存在於 interweft.com.au
这个领域里. 所以它在人们心目中的位址就是 archenland.hedland.edu.au. (称为
FQDN - fully qualified domain name.)

然而,为了使网际网路上的其它电脑找的到这台机器,事实上电脑在网际网路上沟通时它是藉由其
IP 号码来认知的.








PPP HOWTO 中译版      21



把机器(以及领域)的名称转译(解析)成为在网际网路上所实际使用的 IP
号码是提供领域名称服务之机器的工作.

它是这样子运作的:-

   □你的机器需要知道某部特定电脑的 IP 位址.需要这项资讯的应用程式向你的 Linux
     PC 上的'名称解析器'询问此资讯;

   □名称解析器查询机器内部的主机名称档案(可能是 /etc/hosts
     以及/或是知道这项资讯的领域名称伺服器,而名称解析器实际的行为由
     /etc/host.conf 档案决定);

   □如果答案在主机名称档案中,就以此答案回答;

   □如果是在指定的领域名称伺服器中,你的 PC 就向该机器询问;

   □如果这部领域名称伺服器已经知道被询问名称的 IP
     号码,就以此回答.否则,它会透过网际网路向其它的名称伺服器找寻资讯.
     最後这部名称伺服器会将资讯传回给原来询问的名称解析器,然後传给要求此资讯的应用程式.

当你创造出 PPP 连线时,你需要告诉你的 Linux
机器它可以在哪里找到主机名称对照到 IP
号码(位址解析)的资讯,如此你就可以使用机器的名称而你的电脑可以把这些名称转译成它运作所需的
IP 号码.

一个方法是输入所有你想联络的主机到 /etc/hosts
档案里(如果你是连上网际网路的话这真的是完全不可能的事);
另一个方法是使用相对於机器名称的 IP 号码(要记得全部的 IP
位址是不可能的除非在最小的区域网路上).

最好的方法是设定你的 Linux  使它知道该到哪取得这项名称到号码的资讯 - 自动地.
这项服务是由领域名称伺服器系统所提供.需要做的全部工作是把 IP 号码输入到你的
/etc/resov.conf 档案里.

10.1  /etc/resolv.conf 档案

你的 PPP  伺服器系统管理/使用者支援人员应该要提供给你两个 DNS 的 IP
号码(只需要一个 - 但是两个在出问题时可以多些帮助).

如前所述,Linux 不能以像 MS Windows 95 一样的方式来设定它的名称伺服器的 IP
号码. 所以你必须(有礼貌地)坚持你的 ISP 提供你这项资讯!

你的 /etc/resolv.conf 看起来应该会像这样:

     domain your.isp.domain.name
     nameserver 10.25.0.1
     nameserver 10.25.1.2

编辑这个档案(如果没有的话就建一个新的)以呈现你的 ISP
提供的资讯.它的拥有者以及权限应该像下面这样:-

     -rw-r--r--   1 root     root     73 Feb 19 01:46 /etc/resolv.conf

如果你因为本来就在区域网路上所以已经设立 /etc/resolv.conf








PPP HOWTO 中译版      22



档案的话,只要简单的把 PPP 连线的 DNS 伺服器 IP 号码加到你已有的档案里即可.

10.2  /etc/host.conf 档案

你也应该检查你的 /etc/host.conf 档案是否设定正确.它看起来应该像这样

     order hosts,bind
     multi on

它告诉你的名称解析器在向名称伺服器询问之前先使用主机名称档案中的资讯.


11.  使用 PPP 与 root 权限

因为 PPP 需要设定网路设备,变更核心递送表格以及诸如此类的动作,所以它需要以
root 的权限来做这些事.

如果 root 以外的使用者要能建立 PPP  连线,那麽 pppd 程式应该设为以 root
的身分执行(setuid):-

     -rwsr-xr-x   1 root     root  95225 Jul 11 00:27 /usr/sbin/pppd

如果 /usr/sbin/ppd 不是设定为这样,那麽以 root 的身分下这个指令:

     chmod u+s /usr/sbin/pppd

这样是让 pppd 以 root 的权限执行,即使是由一般使用者所执行的.
这能让一般使用者执行的 pppd 具有必要的权限建立网路界面及核心递送表格.

以 root 的身分执行的程式在安全上是潜在的漏洞,所以你对於设定为 'setuid'
的程式必须非常地小心. 许多地程式(包括 pppd)已经被小心地撰写以将用 root
的身分执行的危险降到最低,所以这样做应该是安全地(不过不保证).

根据你希望你的系统如何运作而定,特别是如果你希望你系统里的任何使用者都能启始
PPP 连结,你应该把你的 ppp-on/off
指令稿设定为全部的人都可以读取/执行.(如果你的 PC
只由你使用那麽这样大概不错).

然而,如果你不希望任何人都能起始 PPP  连线(例如,你的孩子在你的 Linux PC
上有帐号而你不希望他们在没有你的监督下连上网际网路),你将得建立一个 PPP
群组(编辑 /etc/group 档案)并且:

   □将 pppd 设定为以 root 的权限执行,拥有者是 root 而群组是
     PPP,而其它的权限都关闭.它看起来应该像这样

  -rwsr-x---   1 root   PPP      95225 Jul 11 00:27 /usr/sbin/pppd




   □使 ppp-on/off 指令稿由使用者 root 以及群组 PPP  所拥有

   □使 ppp-of/off 指令稿能由群组 PPP 读取/执行









PPP HOWTO 中译版      23



    -rwxr-x---  1 root     PPP    587 Mar 14  1995 /usr/sbin/ppp-on
    -rwxr-x---  1 root     PPP    631 Mar 14  1995 /usr/sbin/ppp-off



   □关闭其它的存取权限

   □把能够起动 PPP  的使用者加入 /etc/group 档案的 PPP 群组里

即使如此,一般使用者仍然无法以软体的方式中止连结. 执行 ppp-off 指令稿需要 root
的权限.然何,任何使用者都可以关掉数据机(或将电话线由内接式数据机拔下).

另外一种(更好的)办法,允许使用者使用 sudo 来起动 ppp 连结.
这样可以提供更佳的安全性并且可以让你设定让任何(可信任的)使用者使用指令稿来启动/结束连结.
使用 sudo 可以让一位可信任的使用者乾净而安全地启动/结束 PPP 连结.


12.  设定 PPP 连接档案

你必须以 root 身份签入来建立这些目录并且编辑这些设立 PPP
连线所需的档案,即使你想让所有的使用者都能使用 PPP.

PPP 使用几个档案来建立并设定 PPP 连结.这些档案在 PPP 2.1.2 与 2.2
中的名称与位置都不同.

在 PPP 2.1.2 中这些档案是:-

     /usr/sbin/pppd       # PPP 执行档
     /usr/sbin/ppp-on       # 拨号/连线指令稿
     /usr/sbin/ppp-off       # 断线指令稿
     /etc/ppp/options       # 所有连线所使用的选项
     /etc/ppp/options.ttyXX   # 给某一特定通讯埠使用的选项

在 PPP 2.2 中这些档案是:-

     /usr/sbin/pppd      # PPP 执行档
     /etc/ppp/scripts/ppp-on      # 拨号/连线指令稿
     /etc/ppp/scripts/ppp-on-dialer  # 拨号的 chat 指令稿部份
     /etc/ppp/scripts/ppp-off      # 断线指令稿
     /etc/ppp/options      # 所有连线所使用的选项
     /etc/ppp/options.ttyXX      # 给某一特定通讯埠使用的选项

Red Hat Linux 的使用者应注意标准的 Red Hat 4.X 安装将这些指令稿放在
/usr/doc/ppp-2.2.0f-2/scripts.

在你的 /etc 目录里应该要有个目录:

     drwxrwxr-x   2 root     root   1024 Oct  9 11:01 ppp

如果它不存在的话 - 以这样的权限建立它.

如果这个目录已经存在,它应该会包含一个称为 options.tpl
的选项档案样板.这个档案包括在下面.









PPP HOWTO 中译版      24



因为它包含所有 PPP 选项的解释所以请你把它印出来(配合 pppd
的线上使用手册来阅读将会是很有用的). 虽然你可以使用这个档案作为
/etc/ppp/options
档案的基础,但是建立你自己的,没有包含所有在这个样板里的指令的选项档案可能会更好
- 它会短得多而且比较容易阅读/维护.

如果你有多个串列线路/数据机(典型的例子是 PPP 伺服器),那麽建立一个一般化的
/etc/ppp/options
档案,其中包含每个你提供支援拨入的串列埠所使用的共同选项并且为每一个需要个别设定以建立
PPP 连线的串列线路设立个别的选项档案.

这些档案名为 options.ttyx1, options.ttyx2 依此类推(其中 x
是你串列埠的适当代码).

然而,对於单一 PPP  连线,你可以直接使用 /etc/ppp/options
这个档案.另外一种办法,你可以把所有的选项放进 pppd 指令作为参数.

使用 /etc/ppp/options.ttySx 档案的设定方式会比较容易加以维护. 如果你使用 PPP
来连线到好几个不同的节点去的话,那麽你就可以在 /etc/ppp/options.site
里面为每个节点建立选项档案然後在你连线时指定选项档案作为 PPP 指令的参数. (使用
file option-file 参数於 pppd 的指令列).

12.1  替代的 options.tpl 档案

某些个 PPP  的发行套件似乎漏失了 options.tpl
这个档案,所以在这里有个完整的档案. 我建议你不要直接编辑这个档案来建立你自己的
/etc/ppp/options.
把它拷贝到一个新的档案然後编辑该档案比较好.如果你弄乱了你编辑的档案,你可以回头从原始档案再度开始.


































PPP HOWTO 中译版      25



     # /etc/ppp/options -*- sh -*- general options for pppd
     # created 13-Jul-1995 jmk
     # autodate: 01-Aug-1995
     # autotime: 19:45

     # Use the executable or shell command specified to set up the serial
     # line.  This script would typically use the "chat" program to dial the
     # modem and start the remote ppp session.
     #connect "echo You need to install a connect command."

     # Run the executable or shell command specified after pppd has
     # terminated the link.  This script could, for example, issue commands
     # to the modem to cause it to hang up if hardware modem control signals
     # were not available.
     #disconnect "chat -- \d+++\d\c OK ath0 OK"

     # async character map -- 32-bit hex; each bit is a character
     # that needs to be escaped for pppd to receive it.  0x00000001
     # represents '\x01', and 0x80000000 represents '\x1f'.
     #asyncmap 0

     # Require the peer to authenticate itself before allowing network
     # packets to be sent or received.
     #auth

     # Use hardware flow control (i.e. RTS/CTS) to control the flow of data
     # on the serial port.
     #crtscts

     # Use software flow control (i.e. XON/XOFF) to control the flow of data
     # on the serial port.
     #xonxoff

     # Add a default route to the system routing tables, using the peer as
     # the gateway, when IPCP negotiation is successfully completed.  This
     # entry is removed when the PPP connection is broken.
     #defaultroute

     # Specifies that certain characters should be escaped on transmission
     # (regardless of whether the peer requests them to be escaped with its
     # async control character map).  The characters to be escaped are
     # specified as a list of hex numbers separated by commas. Note that
     # almost any character can be specified for the escape option, unlike
     # the asyncmap option which only allows control characters to be
     # specified.  The characters which may not be escaped are those with hex
     # values 0x20 - 0x3f or 0x5e.
     #escape 11,13,ff

     # Don't use the modem control lines.
     #local

     # Specifies that pppd should use a UUCP-style lock on the serial device
     # to ensure exclusive access to the device.
     #lock








PPP HOWTO 中译版      26



     # Use the modem control lines.  On Ultrix, this option implies hardware
     # flow control, as for the crtscts option.  (This option is not fully
     # implemented.)
     #modem

     # Set the MRU [Maximum Receive Unit] value to <n> for negotiation.  pppd
     # will ask the peer to send packets of no more than <n> bytes. The
     # minimum MRU value is 128.  The default MRU value is 1500.  A value of
     # 296 is recommended for slow links (40 bytes for TCP/IP header + 256
     # bytes of data).
     #mru 542

     # Set the interface netmask to <n>, a 32 bit netmask in "decimal dot"
     # notation (e.g. 255.255.255.0).
     #netmask 255.255.255.0

     # Disables the default behaviour when no local IP address is specified,
     # which is to determine (if possible) the local IP address from the
     # hostname. With this option, the peer will have to supply the local IP
     # address during IPCP negotiation (unless it specified explicitly on the
     # command line or in an options file).
     #noipdefault

     # Enables the "passive" option in the LCP.  With this option, pppd will
     # attempt to initiate a connection; if no reply is received from the
     # peer, pppd will then just wait passively for a valid LCP packet from
     # the peer (instead of exiting, as it does without this option).
     #passive

     # With this option, pppd will not transmit LCP packets to initiate a
     # connection until a valid LCP packet is received from the peer (as for
     # the "passive" option with old versions of pppd).
     #silent

     # Don't request or allow negotiation of any options for LCP and IPCP
     # (use default values).
     #-all

     # Disable Address/Control compression negotiation (use default, i.e.
     # address/control field disabled).
     #-ac

     # Disable asyncmap negotiation (use the default asyncmap, i.e. escape
     # all control characters).
     #-am

     # Don't fork to become a background process (otherwise pppd will do so
     # if a serial device is specified).
     #-detach

     # Disable IP address negotiation (with this option, the remote IP
     # address must be specified with an option on the command line or in an
     # options file).
     #-ip








PPP HOWTO 中译版      27



     # Disable magic number negotiation.  With this option, pppd cannot
     # detect a looped-back line.
     #-mn

     # Disable MRU [Maximum Receive Unit] negotiation (use default, i.e.
     # 1500).
     #-mru

     # Disable protocol field compression negotiation (use default, i.e.
     # protocol field compression disabled).
     #-pc

     # Require the peer to authenticate itself using PAP.
     # This requires TWO WAY authentication - do NOT use this for a standard
     # PAP authenticated link to an ISP as this will require the ISP machine
     # to authenticate itself to your machine (and it will not be able to).
     #+pap

     # Don't agree to authenticate using PAP.
     #-pap

     # Require the peer to authenticate itself using CHAP [Cryptographic
     # Handshake Authentication Protocol] authentication.
     # This requires TWO WAY authentication - do NOT use this for a standard
     # CHAP authenticated link to an ISP as this will require the ISP machine
     # to authenticate itself to your machine (and it will not be able to).
     #+chap

     # Don't agree to authenticate using CHAP.
     #-chap

     # Disable negotiation of Van Jacobson style IP header compression (use
     # default, i.e. no compression).
     #-vj

     # Increase debugging level (same as -d).  If this option is given, pppd
     # will log the contents of all control packets sent or received in a
     # readable form.  The packets are logged through syslog with facility
     # daemon and level debug. This information can be directed to a file by
     # setting up /etc/syslog.conf appropriately (see syslog.conf(5)). (If
     # pppd is compiled with extra debugging enabled, it will log messages
     # using facility local2 instead of daemon).
     #debug

     # Append the domain name <d> to the local host name for authentication
     # purposes.  For example, if gethostname() returns the name porsche,
     # but the fully qualified domain name is porsche.Quotron.COM, you would
     # use the domain option to set the domain name to Quotron.COM.
     #domain <d>

     # Enable debugging code in the kernel-level PPP driver.  The argument n
     # is a number which is the sum of the following values: 1 to enable
     # general debug messages, 2 to request that the contents of received
     # packets be printed, and 4 to request that the contents of transmitted








PPP HOWTO 中译版      28



     # packets be printed.
     #kdebug n

     # Set the MTU [Maximum Transmit Unit] value to <n>. Unless the peer
     # requests a smaller value via MRU negotiation, pppd will request that
     # the kernel networking code send data packets of no more than n bytes
     # through the PPP network interface.
     #mtu <n>

     # Set the name of the local system for authentication purposes to <n>.
     # This will probably have to be set to your ISP user name if you are
     # using PAP/CHAP.
     #name <n>

     # Set the user name to use for authenticating this machine with the peer
     # using PAP to .
     # Do NOT use this if you are using 'name' above!
     #user 

     # Enforce the use of the host name as the name of the local system for
     # authentication purposes (overrides the name option).
     #usehostname

     # Set the assumed name of the remote system for authentication purposes
     # to <n>.
     #remotename <n>

     # Add an entry to this system's ARP [Address Resolution Protocol]
     # table with the IP address of the peer and the Ethernet address of this
     # system.
     #proxyarp

     # Use the system password database for authenticating the peer using
     # PAP.
     #login

     # If this option is given, pppd will send an LCP echo-request frame to
     # the peer every n seconds. Under Linux, the echo-request is sent when
     # no packets have been received from the peer for n seconds. Normally
     # the peer should respond to the echo-request by sending an echo-reply.
     # This option can be used with the lcp-echo-failure option to detect
     # that the peer is no longer connected.
     #lcp-echo-interval <n>

     # If this option is given, pppd will presume the peer to be dead if n
     # LCP echo-requests are sent without receiving a valid LCP echo-reply.
     # If this happens, pppd will terminate the connection.  Use of this
     # option requires a non-zero value for the lcp-echo-interval parameter.
     # This option can be used to enable pppd to terminate after the physical
     # connection has been broken (e.g., the modem has hung up) in
     # situations where no hardware modem control lines are available.
     #lcp-echo-failure <n>

     # Set the LCP restart interval (retransmission timeout) to <n> seconds








PPP HOWTO 中译版      29



     # (default 3).
     #lcp-restart <n>

     # Set the maximum number of LCP terminate-request transmissions to <n>
     # (default 3).
     #lcp-max-terminate <n>

     # Set the maximum number of LCP configure-request transmissions to <n>
     # (default 10).
     # Some PPP servers are slow to start up. You may need to increase this
     # if you keep getting 'serial line looped back' errors and your are SURE
     # that you have logged in correctly and PPP should be starting on the server.
     #lcp-max-configure <n>

     # Set the maximum number of LCP configure-NAKs returned before starting
     # to send configure-Rejects instead to <n> (default 10).
     #lcp-max-failure <n>

     # Set the IPCP restart interval (retransmission timeout) to <n>
     # seconds (default 3).
     #ipcp-restart <n>

     # Set the maximum number of IPCP terminate-request transmissions to <n>
     # (default 3).
     #ipcp-max-terminate <n>

     # Set the maximum number of IPCP configure-request transmissions to <n>
     # (default 10).
     #ipcp-max-configure <n>

     # Set the maximum number of IPCP configure-NAKs returned before starting
     # to send configure-Rejects instead to <n> (default 10).
     #ipcp-max-failure <n>

     # Set the PAP restart interval (retransmission timeout) to <n> seconds
     # (default 3).
     #pap-restart <n>

     # Set the maximum number of PAP authenticate-request transmissions to
     # <n> (default 10).
     #pap-max-authreq <n>

     # Set the CHAP restart interval (retransmission timeout for
     # challenges) to <n> seconds (default 3).
     #chap-restart <n>

     # Set the maximum number of CHAP challenge transmissions to <n>
     # (default 10).
     #chap-max-challenge

     # If this option is given, pppd will re-challenge the peer every <n>
     # seconds.
     #chap-interval <n>









PPP HOWTO 中译版      30



     # With this option, pppd will accept the peer's idea of our local IP
     # address, even if the local IP address was specified in an option.
     #ipcp-accept-local

     # With this option, pppd will accept the peer's idea of its (remote) IP
     # address, even if the remote IP address was specified in an option.
     #ipcp-accept-remote

12.2  我应该使用什麽选项? (无 PAP/CHAP)

嗯,完全视情况而定(唉).这里所提供的应该适用於大部份的伺服器.

然而,如果它无法运作的话,阅读样板档(/etc/ppp/options.tpl) 以及 pppd
的线上使用手册并且告诉你所连线之伺服器的系统管理/使用者支援人员.

你还应该注意这里所展示的连结指令稿也使用了一些给 pppd
的命令列选项以便让事情容易调整些.

     # /etc/ppp/options (NO PAP/CHAP)
     #
     # 避免 pppd 进入背景执行
     -detach
     #
     # 使用数据机控制线
     modem
     # 使用 uucp 形态的锁定档以避免它人取用串列装置
     lock
     # 使用硬体流量控制
     crtscts
     # 在递送表格中将此连结建立为预设递送装置
     defaultroute
     # 不使用任何"逸出"控制序列
     asyncmap 0
     # 最大传送封包大小为 552 bytes
     mtu 552
     # 最大接收封包大小为 552 bytes
     mru 552
     #
     #-------END OF SAMPLE /etc/ppp/options (no PAP/CHAP)


13.  如果你的 PPP 伺服器使用 PAP 认证(Password Authentication Protocol)

如果你连接的伺服器需要 PAP 或 CHAP 认证,你需要多一点的工作.

在上面的选项档案中,加上下面几行
















PPP HOWTO 中译版      31



     #
     # 告诉 pppd 使用你的 ISP 名称做为认证过程中的"主机名称"
     name <your ISP user name>    # 你需要改变这一行
     #
     # 如果你执行 PPP *伺服器* 并且需要使用 PAP 或 CHAP 认证,适当除去下面的
     # 注解.不要在你做为客户端连上伺服器时使用此选项(即使它使用 PAP 或 CHAP)
     # 因为这是告诉伺服器必须为它自己在你的机器上提供认证(这几乎是不可能的,
     # 所以连结会失败).
     #+chap
     #+pap
     #
     # 如果你使用在 /etc/ppp/pap-secrets 档案中经编码的密码,除去下面一行的注解.
     # 注意: 这和 Windows NT 上的远端存取服务里的微软编码密码是不同的.
     #+papcrypt

13.1  使用 MSCHAP

微软的 Windows NT 远端存取服务(RAS)可以被设定为使用一种 CHAP(Challenge/Hand□
shake Authentication Protocol) 的变种. 在你的 PPP
原始程式码中,你可以找到一个叫 README.MSCHAP80 的档案讨论这件事.

你可以开启 pppd 的侦错功能判断伺服器是否要求使用此认证协定. 如果伺服器使用 MS
CHAP 认证,你会看到这样的一行

     rcvd [LCP ConfReq id=0x2 <asyncmap 0x0> <auth chap 80> <magic 0x46a3>]

关键的讯息是 auth chap 80.

为了使用 MS CHAP,你必须重新编译 pppd 以支援此协定. 请参见 PPP 原始程式码中的
README.MSCHAP80 说明如何编译以使用此变种协定.

你还要注意这里的程式码只是让 Linux PPP 做为客户端连接上 MS Windows NT
伺服器用的. 它并不支援将 Linux 设立为让客户端使用 MSCHAP80 认证 PPP 伺服器.

13.2  PAP/CHAP 密码档案

如果你使用 PAP 或 CHAP 认证,你必须建立这些密码档案.它们是:

     /etc/ppp/pap-secrets
     /etc/ppp/chap-secrets

这些档案拥有者必须为 root,群组为 root,同时为了安全档案权限应为 740.

关於 PAP 与 CHAP 第一点要指出的是它们是设计用来认证电脑系统而不是使用者的.

"嗯? 有什麽不同呢?" 我听到你在问.

哦,一旦你的电脑建立与伺服器建立 PPP 连线,你系统上的任何使用者都可以使用此连线
- 不只是你而已. 这也是为何你可以使用 PPP
将两个区域网路(LAN)连接起来建立一广域网路(WAN)的原因.

PAP (还有 CHAP 也是)需要双向认证 -
也就是每一电脑需要一个合法的名称与密码在另一电脑上.
然而,这并不是大部份提供拨接式 PAP 认证连接的 PPP 伺服器运作的方式.








PPP HOWTO 中译版      32



也就是说,你的 ISP
可能会给你一个使用者名称与密码以允许你连接到他们的系统进而连接到网际网路上.
你的 ISP 对於你电脑的名称一点也不感兴趣,因此你可能必须使用你在 ISP
上的使用者名称做为你电脑的名称.

这点要使用 pppd 选项的 name user name 来达成. 因此,如果你使用你 ISP
给你的使用者名称,加上这一行

     name your_user name_at_your_ISP

到你的 /etc/ppp/options 档案中.

从技术上来说,PAP 其实应该要使用 user our_user name_at_your_ISP
这个选项,但是如果使用到 PAP 的话那麽 pppd 聪明的足以把 name 解译为 user. 使用
name 这个选项的好处是这对於 CHAP 也是有效的.

因为 PAP/CHAP 是用来验认电脑的,在技术上你也需要指定远端电脑的名称.
然而,大部分的人只接一家 ISP  所以你可以在密码档里的远端主机名称使用通用字元(*)


许多 ISP 有多个数据机拨接中心连接到不同的终端机伺服器 -
每个终端机伺服器都有不同的名称,但都从单一的(自动转线)号码拨接.
在某些情形下可能因此而很不容易预先知道远端电脑的名称!

13.3  PAP 密码档

/etc/ppp/pap-secrets 这个档案看起来像

     # Secrets for authentication using PAP
     # client      server   secret     acceptable_local_IP_addresses

这四个栏位是以空白分界而且最後一项可以是空白(如果你使用动态 IP 或由你的 ISP
所提供的静态 IP).

假定你的 ISP 给你的使用者名称是 fred 而密码是 flintstone 的话那麽你应该在
/etc/ppp/options[.ttySx] 里设定 name fred 这个选项并且把你的 /etc/ppp/pap-
secrets 档案设成下面这样

     # Secrets for authentication using PAP
     # client      server  secret      acceptable local IP addresses
     fred      *      flintstone

这是说对於 fred 这个本地机器名称(我们已经告诉过 pppd
使用这个名称,即使这不是我们本地机器的名称也一样)以及任何的伺服器,都使用
flintstone 这个密码(暗码).

注意到我们并不需要指定本地的 IP 位址,除非有要求要我们使用一个特定的,固定的 IP
位址. 即使你试著用一固定的 IP,这也不大可能行得通因为对於大部份的 PPP
伺服器(为了安全的理由)不允许远端系统自行指定 IP 号码.

13.4  CHAP 密码档

目前的 pppd 版本要求你要有互相验认的方法 -
这是说你必须能够让从你的机器到远端伺服器以及从远端伺服器到你的机器这两种验认都能进行.








PPP HOWTO 中译版      33



所以,如果你的机器是 fred 而远端是 barney 的话,则在它们个别的
/etc/ppp/options.ttySx 里你的设为 name fred remotename barney 而远端机器应设为
name barney remotename fred.

fred 这台机器的 /etc/ppp/chap-secrets 档案看起来会像

     # Secrets for authentication using CHAP
     # client      server  secret        acceptable local IP addresses
     fred      barney  flintstone
     barney      fred    wilma

而 barney 的是

     # Secrets for authentication using CHAP
     # client      server  secret        acceptable local IP addresses
     barney      fred    flintstone
     fred      barney  wilma

特别要注意的是双方机器都必须具有双向认证的项目.这允许本地的机器向远端机器认证它自己并且让远地机器向本地机器认证它自己.

13.5  处理多重 PAP 认证连接

一些使用者拥有多於一部使用 PAP 的伺服器可连线.
如果你的使用者名称在每部你想连接的机器上都不同,这并不是问题.

然而,许多使用者在两个系统(或者甚至是全部)上具有相同的使用者名称. 这在从
/etc/ppp/pap-secrets 中正确地选择适当一行时会有问题.

如你所料地,PPP 提供一种机制以克服此因难. PPP 允许你使用 remotename
选项为远端伺服器设定一个"假想名称".

假设你连接到两部 PPP 伺服器都使用名称 fred.你以此方式建立 /etc/ppp/pap-secrets
档案

     fred pppserver1  barney
     fred pppserver2  wilma

如此,在与 pppserver1 连线时你在 pppd 选项中使用 name fred remotename
pppserver1 并在连线 pppserver2 时使用 name fred remotename pppserver2.

因为你可以使用在 pppd 使用 file filename 以指定 ppp
选项,你可以建立一指令稿以连接到每部 PPP
伺服器,正确地取用选项档案并且选择正确的 remotename 选项.


14.  以手动方式建立 PPP 连结

现在你已经建立你的 /etc/ppp/options 以及 /etc/resolv.conf
档案(以及,如果有需要,还有 /etc/ppp/pap|chap-secrets
档案),你可以藉由手动设立 PPP
连线来测试这些设定(一旦我们使手动连线能运作,我们将会自动化该过程).

要做这件事,你的通讯软体必须能在不重置你的数据机的情况下结束. Minicom 可以做到
- ALT Q (或者在比较旧的 minicom  版本是使用 CTRL A Q).








PPP HOWTO 中译版      34



确定你以 root 签入.

启动你的通讯软体(像是 minicom),拨接到 PPP 伺服器并且像平常一样的签入.
如果你需要发出某个指令来起动伺服端上的
PPP,那麽就做吧.你将会看见你以前看过的垃圾.

如果你使用 PAP 或 CHAP 的话,那麽只是连线到远端系统应该就会起动在远端上的 PPP
而且你将在没有签入的情况下就见到这些垃圾(虽然这在某些伺服器上不会发生 -
试著按下 Enter 看看能否看到这些垃圾).

现在,在不要重置数据机的情况下结束通讯软体(在 minicom 使用 ALT Q 或 CTL A
Q)并且在 Linux 的提示符号下(以 root 的身分)键入

     pppd -d -detach /dev/ttySx 38400 &

-d 这个选项开启侦错功能 - ppp 连线起动时的”交谈”将会记录到你的系统记录里去
- 如果你遇上麻烦这会很有用的.

你数据机的灯现在应该要闪烁,因为要建立 PPP 连线.PPP 连线的建立将会花点时间.

此时你可以观察 PPP 界面,藉由发出这个指令

     ifconfig

在你所拥有的任何乙太网路以及回授设备之外,你应该会看见像这样的资讯:

     ppp0     Link encap:Point-Point Protocol
      inet addr:10.144.153.104 P-t-P:10.144.153.51 Mask:255.255.255.0
      UP POINTOPOINT RUNNING  MTU:552  Metric:1
      RX packets:0 errors:0 dropped:0 overruns:0
      TX packets:0 errors:0 dropped:0 overruns:0

其中

   □inet addr:10.144.153.10 是该连结中你这端的 IP 号码.

   □P-t-P:10.144.153.5 是伺服端的 IP 号码.

(自然, ifconfig 不会报告这些 IP 号码,而是你的 PPP 伺服器上使用的.)

注意:  ifconfig 也告诉你该连结已经起动并且正在执行!

如果没有 ppp 装置列出或得到的是像这样的资讯:

     ppp0     Link encap:Point-Point Protocol
      inet addr:0.0.0.0  P-t-P:0.0.0.0 Mask:0.0.0.0
      POINTOPOINT  MTU:1500  Metric:1
      RX packets:0 errors:0 dropped:0 overruns:0
      TX packets:0 errors:0 dropped:0 overruns:0

你的 PPP 连线并没有建立... 参阅稍後有关错误排除的章节!

你还可以看到这部远端机器(及其後的)的递送路径.要做到这点,下这个指令









PPP HOWTO 中译版      35



     route -n

你应该看到像这样的:-

     Kernel routing table
     Destination     Gateway      Genmask      Flags MSS   Window Use Iface
     10.144.153.3    *      255.255.255.255 UH    1500   0    1 ppp0
     127.0.0.0      *      255.0.0.0      U    3584   0   11 lo
     10.0.0.0      *      255.0.0.0      U    1500   0   35 eth0
     default      10.144.153.3    *      UG    1500   0    5 ppp0

特别注意这里,我们有两个项目指到我们的 ppp 装置.

第一项是主机递送(以 H 旗号表示)并且允许我们看到这部我们正在连接的主机 -
但再来就没有了.

第二项是预设递送路径(由 pppd 的 defaultroute 选项所建立的).
这份递送路径告诉我们的 Linux PC 将任何不在内部乙太网路的封包送到那里 -
到我们指定的网路 - 也就是到 PPP 伺服器本身. 而 PPP
伺服器有责任为我们将封包递送到网际网路并将回应的封包送回给我们.

如果你在递送表格中没看到两个项目,有些事不对劲. 特别是如果你的系统记录(sys□
log)显示一讯息告诉你 pppd
无法取代已存在的预设递送路径,那麽你已有一预设递送路径指向你的乙太网路界面 -
而这必须由指定的网路递送来取代: 你只能有一个预设递送路径!!!

你必须检查一下你系统的起始档案以找出预设递送是在那里建立的(这是由 route add
default... 指令指定的). 将它改成像这样的 route add net....

现在藉由 ifconfig 之输出所回报的 IP 号码来 'ping'
一下该伺服器以测试这个连结,像这样

     ping 10.144.153.51

你应该会接收到像这样的输出

     PING 10.144.153.51 (10.144.153.51): 56 data bytes
     64 bytes from 10.144.153.51: icmp_seq=0 ttl=255 time=328.3 ms
     64 bytes from 10.144.153.51: icmp_seq=1 ttl=255 time=190.5 ms
     64 bytes from 10.144.153.51: icmp_seq=2 ttl=255 time=187.5 ms
     64 bytes from 10.144.153.51: icmp_seq=3 ttl=255 time=170.7 ms

这将会一直列印下去 - 按下 CTRL C 终止它,那时你将会接收到更多讯息:

     --- 10.144.153.51 ping statistics ---
     4 packets transmitted, 4 packets received, 0% 

[关闭][返回]