出 处: 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% |
|