在本章中,我们将讨论网络——如何配置连接,使用 TCP/IP、SLIP、PPP 或 UUCP,以及电子邮件和新闻。
Linux 支持 TCP/IP(传输控制协议/互联网协议)网络协议的完整实现。TCP/IP 已成为全球计算机联网最成功的机制。借助 Linux 和以太网卡,您可以将您的机器连接到局域网,或者(通过适当的网络连接)连接到互联网——全球 TCP/IP 网络。
连接小型 UNIX 机器局域网非常容易。它只需要每台机器都配备以太网控制器,以及适当的以太网电缆和其他硬件。或者,如果您的企业或大学提供互联网访问,您可以轻松地将您的 Linux 机器添加到此网络。
当前 Linux 上 TCP/IP 及相关协议的实现被称为“NET-3”,在此之前称为“NET-2”。这与所谓的 BSD UNIX 的 NET-2 版本无关;相反,“NET-3”在此上下文中指的是 Linux 的 TCP/IP 的第二次实现。
Linux NET-3 也支持 SLIP——串行线路互联网协议和 PPP——点对点协议。SLIP 和 PPP 允许您使用调制解调器进行拨号互联网访问。如果您的企业或大学提供 SLIP 或 PPP 访问,您可以拨号连接到 SLIP 或 PPP 服务器,并通过电话线将您的机器连接到互联网。或者,如果您的 Linux 机器也通过以太网访问互联网,您可以将您的 Linux 机器设置为 SLIP 或 PPP 服务器。
有关在 Linux 下设置 TCP/IP 的完整信息,我们建议您阅读 Linux NET-3 HOWTO,可通过匿名 FTP 从以下地址获取:sunsite.unc.edu。NET-3 HOWTO 是关于配置 TCP/IP 的完整指南,包括以太网和 SLIP 或 PPP 连接,在 Linux 下。Linux 以太网 HOWTO 是一个相关文档,描述了 Linux 的各种以太网卡驱动程序的配置。《Linux 网络管理员指南》来自 Linux 文档项目,也可供参考。有关这些文档的更多信息,请参阅附录 A。
另一本值得关注的书是 Craig Hunt 撰写的《TCP/IP 网络管理》。它包含了关于在 UNIX 系统上使用和配置 TCP/IP 的完整信息。
您可以在没有任何网络硬件的情况下使用 Linux TCP/IP——配置“环回”模式允许您与自己通信。这对于某些使用“环回”网络设备的应用和游戏是必要的。
但是,如果您想将 Linux 与以太网 TCP/IP 网络一起使用,您需要一块以太网卡。常见的网卡,例如 3com 3c503、HP PCLAN(27245 和 27xxx 系列)、Western Digital WD80x3 和 Novell NE2000/NE1000 都被支持,以及更多。有关详细信息,请参阅 Linux 以太网和硬件 HOWTO。
您应该注意一些关于受支持网卡的常见情况:1) 有几款网卡被支持,但性能很差或有其他限制。例如,3Com 3C501 可以工作,但性能非常糟糕,Racal-Interlan NI6510 使用 am7990 lance 芯片,在超过 16 兆字节的 RAM 时无法工作。同样,许多网卡是 NE1000/NE2000 兼容克隆卡,可能存在各种问题。有关 Linux 以太网硬件兼容性的更完整讨论,请参阅 Linux 以太网 HOWTO。
Linux 还支持 SLIP 和 PPP,这允许您使用调制解调器通过电话线访问互联网。在这种情况下,您需要一个与您的 SLIP 或 PPP 服务器兼容的调制解调器——大多数服务器至少需要一个 14.4bps V.32bis 调制解调器。使用 33.6bps 或更高的调制解调器,性能会大大提高。
在本节中,我们将讨论如何在您的系统上配置以太网 TCP/IP 连接。请注意,此方法应该适用于许多系统,但肯定不是全部。本讨论应该足以让您走上配置机器网络参数的正确道路,但这里没有提及许多注意事项和细微细节。我们建议您参阅《Linux 网络管理员指南》和 NET-3-HOWTO 以获取更多信息。
首先,我们假设您的 Linux 系统已安装 TCP/IP 软件。这包括基本的客户端,例如telnet和ftp,系统管理命令,例如ifconfig和route(通常位于/etc),以及网络配置文件(例如/etc/hosts)。上面描述的其他与 Linux 相关的网络文档解释了如果您尚未安装 Linux 网络软件,如何安装它。
我们还假设您的内核已配置并编译,并启用了 TCP/IP 支持。有关编译内核的信息,请参阅第 4.9 节。要启用网络,您必须在make config步骤中对相应的问题回答“yes”,并重新构建内核。
完成此操作后,您必须修改 NET-3 使用的许多配置文件。在大多数情况下,这是一个简单的过程。然而,不幸的是,Linux 发行版之间对于各种 TCP/IP 配置文件和支持程序应该放在哪里存在广泛的分歧。大多数时候,它们可以在/etc/etc中找到,但在其他情况下,可能在, /usr/etc/usr/etc/inet或其他奇怪的位置。在最坏的情况下,您必须使用find
命令来定位系统上的文件。另请注意,并非所有发行版都将 NET-3 配置文件和软件保存在同一位置——它们可能分布在多个目录中。
您的网络配置。
IP 地址。这是点分十进制格式的唯一机器地址。例如 128.253.153.54。您的网络管理员将为您提供此号码。
如果您仅配置环回模式(即没有 SLIP,没有以太网卡,只有到您自己机器的 TCP/IP 连接),则您的 IP 地址为 127.0.0.1。
您的网络掩码(“netmask”)。这是一个点分四段格式,类似于 IP 地址,它确定 IP 地址的哪个部分指定子网号,哪个部分指定该子网上的主机。(如果您对这些 TCP/IP 网络术语不太熟悉,我们建议您阅读一些关于网络管理的入门材料。)网络掩码是一个位模式,当覆盖到您网络上的地址时,将告诉您该地址位于哪个子网上。这对于路由非常重要,如果您发现,例如,您可以愉快地与您网络外部的人交谈,但不能与您网络内部的某些人交谈,则很可能您指定的掩码不正确。
您的网络管理员将在设计网络时选择网络掩码,因此他们应该能够为您提供要使用的正确掩码。大多数网络是 C 类子网,使用 255.255.255.0 作为其网络掩码。B 类网络使用 255.255.0.0。如果您不指定掩码,NET-3 代码将自动选择一个假设没有子网划分的掩码作为默认值。
这也适用于环回端口。由于环回端口的地址始终为 127.0.0.1,因此此端口的网络掩码始终为 255.0.0.0。您可以显式指定此项,也可以依赖默认掩码。
您的网络地址。这是您的 IP 地址与网络掩码进行按位与运算的结果。例如,如果您的网络掩码是 255.255.255.0,并且您的 IP 地址是 128.253.154.32,则您的网络地址是 128.253.154.0。如果网络掩码为 255.255.0.0,则为 128.253.0.0。
如果您仅使用环回,则您没有网络地址。
您的广播地址。广播地址用于将数据包广播到您子网上的每台机器。因此,如果子网上机器的主机号由 IP 地址的最后一个字节(网络掩码 255.255.255.0)给出,则您的广播地址将是您的网络地址与 0.0.0.255 进行或运算的结果。
例如,如果您的 IP 地址是 128.253.154.32,并且您的网络掩码是 255.255.255.0,则您的广播地址是 128.253.154.255。
请注意,由于历史原因,某些网络设置为使用网络地址作为广播地址,如果您有任何疑问,请咨询您的网络管理员。(在许多情况下,复制您子网上其他机器的网络配置,并替换您自己的 IP 地址就足够了。)
如果您仅使用环回,则您没有广播地址。
您的网关地址。这是您的“网关”到外部世界(即不在您子网上的机器)的机器地址。在许多情况下,网关机器的 IP 地址与您的地址相同,但主机地址为“.1”;例如,如果您的 IP 地址是 128.253.154.32,则您的网关可能是 128.253.154.1。您的网络管理员将为您提供您的网关的 IP 地址。
实际上,您可能有多个网关。网关 只是一个位于两个不同网络(在不同的子网上具有 IP 地址)的机器,并在它们之间路由数据包。许多网络都有一个通往“外部世界”(直接与您自己的网络相邻的网络)的单一网关,但在某些情况下,您将有多个网关——每个相邻网络一个。
如果您仅使用环回,则您没有网关地址。如果您的网络与所有其他网络隔离,情况也是如此。
的配置完全是另一个问题;我们目前的首要任务是让您与网络通信。您可以稍后处理名称解析问题。
如果您仅使用环回,则您没有域名服务器地址。
SLIP/PPP 用户:您可能需要或可能不需要上述任何信息,除了域名服务器地址。当使用 SLIP 时,您的 IP 地址通常通过以下两种方式之一确定:(a) 您有一个“静态”IP 地址,每次连接到网络时该地址都相同,或者 (b) 您有一个“动态”IP 地址,当您连接到服务器时,该地址是从可用地址池中分配的。在下面关于 SLIP 配置的部分中,将更详细地介绍这一点。route和ifconfigNET-3 支持完整的路由、多条路由、子网划分(目前仅限于字节边界)、所有功能。以上描述了最基本的 TCP/IP 配置。您的配置可能完全不同:如有疑问,请咨询您的本地网络专家并查看
文件。网络 文件是系统范围的配置文件脚本,在启动时由init执行,它启动所有基本系统守护进程(例如, sendmail、cron网络等),并配置网络参数、系统主机名等。文件通常位于目录/etc/rc.d/etc中,但在其他系统上可能位于/etc中。一般来说,Slackware 发行版在文件通常位于目录/etc/rc.d
中使用文件网络rc.inet1/etc和等,而 RedHat 发行版使用一系列目录. /etc/etc/rc.d/init.d等,而 RedHat 发行版使用一系列目录 在这里,我们将描述用于配置 TCP/IP 的文件。其中有两个, rc.inet1和
rc.inet2。rc.inet1用于配置基本网络参数(例如 IP 地址和路由信息),rc.inet2网络启动 TCP/IP 守护进程(文件是系统范围的配置文件脚本,在启动时由inetd、telnetd网络、/etc和等,而 RedHat 发行版使用一系列目录ftpd、.
等等)。/etc 许多系统将这两个文件合并为一个,通常称为ifconfig和routerc.inet/etc.
或ifconfigrc.net。给您的文件命名的名称并不重要,只要它们执行正确的功能并在启动时由
init/etc执行即可。为了确保这一点,您可能需要编辑
/etc/inittab
并取消注释行以执行相应的等,而 RedHat 发行版使用一系列目录文件。在最坏的情况下,您将不得不从头开始创建文件,并将它们的条目添加到. /etc/inittab。正如我们所说,telnetrc.inet1文件,并将它们的条目添加到配置基本网络接口。这包括您的 IP 和网络地址,以及您网络的路由表信息。路由表用于将传出的(和传入的)网络数据报路由到其他机器。在大多数简单配置中,您有三条路由:一条用于将数据包发送到您自己的机器,另一条用于将数据包发送到您网络上的其他机器,另一条用于将数据包发送到您网络外部的机器(通过网关机器)。两个程序用于配置这些参数:telnetifconfig文件,并将它们的条目添加到和route。这两个程序通常都可以在文件。其中有两个, rc.inet1/etc文件,并将它们的条目添加到中找到。
ifconfig用于使用其运行所需的参数(例如 IP 地址、网络掩码、广播地址等)配置网络设备接口。route. 用于在路由表中创建和修改条目。 对于大多数配置,如下所示的用于在路由表中创建和修改条目。rc.inet1
文件应该可以工作。当然,您必须根据自己的系统编辑此文件。不要 将此处列出的示例 IP 和网络地址用于您自己的系统;它们对应于互联网上的实际机器。等,而 RedHat 发行版使用一系列目录同样,您可能需要稍微调整此文件才能使其工作。以上内容对于大多数简单的网络配置应该足够了,但肯定不是全部。
启动 TCP/IP 套件使用的各种服务器。其中最重要的是
inetd等,而 RedHat 发行版使用一系列目录。您的域名服务器地址。网络上的大多数机器都有一个域名服务器,它可以将主机名转换为它们的 IP 地址。您的网络管理员会告诉您您的域名服务器的地址。您也可以通过运行. Inetd在后台运行并监听各种网络端口。当一台机器尝试连接到某个端口时(例如,传入的您的域名服务器地址。网络上的大多数机器都有一个域名服务器,它可以将主机名转换为它们的 IP 地址。您的网络管理员会告诉您您的域名服务器的地址。您也可以通过运行telnetInetd端口),
telnet/etc/hosts端口的情况下,/etc/hostsinetd
启动in.telnetd)。这比运行许多独立的守护进程(例如,/etc/hostsftpd
、/etc/hoststelnetd等等的单独副本)更简单——inetd
仅在需要时才启动守护进程。Syslogdroute是系统日志守护进程——它从各种应用程序累积日志消息,并根据
/etc/syslogd.confroute中的配置信息将它们存储到日志文件中。/etcrouted仅在需要时才启动守护进程。.
是一个用于维护动态路由信息的服务器。当您的系统尝试将数据包发送到另一个网络时,可能需要额外的路由表条目才能执行此操作。
负责在不需要用户干预的情况下操作路由表。
我们的示例/etc/hostsrc.inet2(如下所示)仅启动最少的服务器。还有许多其他服务器——其中许多与 NFS 配置有关。当尝试在您的系统上设置 TCP/IP 时,通常最好从最小的配置开始,并在您使事情正常工作后添加更复杂的部分(例如 NFS)。请注意,在下面的文件中,我们假设所有网络守护进程都保存在/etc/hosts.
中。与往常一样,请根据您自己的配置编辑此文件。in.telnetd 在您可能想要在.
启动rc.inet2中启动的各种附加服务器中,有/usr/etcftpd
named。Named是一个域名服务器——它负责将(本地)IP 地址转换为名称,反之亦然。如果您在网络上的其他地方没有域名服务器,或者想为您的域中的其他机器提供本地机器名称,则可能需要运行.
。(但是,对于大多数配置来说,这不是必需的。)named配置有些复杂,需要规划;我们将感兴趣的读者推荐给一本关于 TCP/IP 网络管理的优秀书籍。Therc.inet1/etc/hosts文件。网络 in.telnetd/etc/hosts网络包含 IP 地址列表以及它们对应的主机名。一般来说,
/etc/hostsnamed仅包含您本地机器的条目,以及可能其他“重要”机器(例如您的域名服务器或网关)。您的本地域名服务器将透明地为网络上的其他机器提供地址到名称的映射。例如,如果您的机器是loomer.vpizza.com
/etc/hosts
将如下所示:如果您仅使用环回,则/etc/hosts如果您仅使用环回,则中唯一的行应该是针对 127.0.0.1 的,并在其后同时包含telnetlocalhostroute和您的主机名。/etc/networks
/etc/networks
文件列出了您自己的网络和其他网络的名称和地址。它被
route
route命令(通常从和rc.inet1——见上文)添加到路由的每个网络必须在/etc/networks中有一个条目。ifconfig和route例如,命令(通常从和rc.inet1/etc/host.conf
命令(通常从 此文件用于指定您的系统将如何解析主机名。它应该包含两行rc.inet1这些行告诉解析库首先检查命令(通常从/etc/hosts
命令(通常从文件以查找任何要查找的名称,然后询问域名服务器(如果存在)。命令(通常从multi
条目允许您在
/etc/hosts命令(通常从/etc/resolv.conf
此文件配置名称解析器,指定您的域名服务器的地址(如果有)和您的域名。您的域名是您的完全限定主机名(例如,如果您是互联网上的注册机器),并删除了主机名。也就是说,如果您的完整主机名是
,您的域名就是/etc/hostsnorelco.com等,而 RedHat 发行版使用一系列目录, 。如果您的机器是loomer.vpizza.com是一个域名服务器——它负责将(本地)IP 地址转换为名称,反之亦然。如果您在网络上的其他地方没有域名服务器,或者想为您的域中的其他机器提供本地机器名称,则可能需要运行.
,并且域名服务器地址为 128.253.154.5,则您的/etc/etc/resolv.confifconfig和route将如下所示:命令(通常从您可以指定多个域名服务器——每个域名服务器都必须在ifconfig和route/etc/resolv.confrc.inet1中拥有自己的ifconfig/routenameserver/etc行。
命令(通常从 设置您的主机名。命令(通常从 您应该使用ifconfigrc.inet1routehostname命令(通常从命令设置您的系统主机名。这通常从命令(通常从/etc/rc命令(通常从或
ifconfig/etc/rc.local调用;只需搜索您的系统rc命令(通常从文件以确定它在哪里被调用。例如,如果您的(完整)主机名是
loomer.vpizza.com/etc/networks,请编辑相应的命令(通常从rcifconfig文件以执行命令
请注意,ifconfig和routehostname可执行文件可能在您的系统上的, /bin中找不到。试用。, 设置完所有这些文件后,您应该能够重新启动您的新内核并尝试使用网络。有很多地方可能会出错,因此最好测试网络配置的各个方面(例如,通过基于网络的 X 连接启动 Mosaic 来测试您的网络配置可能不是一个好主意)。 您可以使用
netstat命令(通常从命令来显示您的路由表;这通常是大多数问题的根源。
手册页详细描述了此命令的确切语法。为了测试网络连接,我们建议使用客户端,例如命令(通常从telnetrc.inet1,连接到本地子网和外部网络上的机器。这将有助于缩小问题来源。(例如,如果您无法连接到本地机器,但可以连接到其他网络上的机器,则很可能您的网络掩码和路由表配置存在问题)。您还可以直接调用
route命令(以root
rc.inet1身份)来操作您的路由表中的条目。可执行文件可能在您的系统上的, /bin您还应该通过直接指定 IP 地址而不是主机名来测试网络连接。例如,如果您在使用命令
telnet loomer.vpizza.comrc.inet1时遇到问题,原因可能是域名服务器配置不正确。尝试使用相关机器的实际 IP 地址;如果有效,那么您就知道您的基本网络设置(很可能)是正确的,问题出在您对域名服务器地址的指定上。调试网络配置可能是一项艰巨的任务,我们无法在此处开始介绍它。如果您无法从本地专家处获得帮助,我们强烈建议阅读 LDP 的《Linux 网络管理员指南》。和6.1.2 SLIP 配置。. SLIP(串行线路互联网协议)允许您通过串行线路使用 TCP/IP,可以是电话线(使用拨号调制解调器),也可以是某种租用的异步线路。当然,要使用 SLIP,您需要访问您所在地区的拨号 SLIP 服务器。许多大学和企业以适度的费用提供 SLIP 访问。 有两个主要的 SLIP 相关程序可用——6.1.2 SLIP 配置。dip6.1.2 SLIP 配置。和调试网络配置可能是一项艰巨的任务,我们无法在此处开始介绍它。如果您无法从本地专家处获得帮助,我们强烈建议阅读 LDP 的《Linux 网络管理员指南》。.
slattachroute。
kermit/etc/hosts之类的通信程序)并发出
ifconfig
命令(通常从命令是不够的。这是因为
dip命令(通常从命令来显示您的路由表;这通常是大多数问题的根源。
slattach命令(通常从发出特殊的 ioctl() 系统调用,以获取要用作 SLIP 接口的串行设备的控制权。命令(通常从dip
可以用于拨号连接 SLIP 服务器,执行一些握手操作以登录服务器(例如,交换您的用户名和密码),然后通过打开的串行线路启动 SLIP 连接。命令(通常从slattach
另一方面,除了获取串行设备以供 SLIP 使用之外,几乎不做任何其他事情。如果您有连接到 SLIP 服务器的永久线路,并且启动连接不需要调制解调器拨号或握手,则它非常有用。大多数拨号 SLIP 用户应该使用命令(通常从dip,而不是和slattach。命令(通常从详情请参阅手册页。
命令(通常从自动执行ifconfig和route基于变量值的命令,而不是和slattach。 在这里,这些变量是使用get...remote命令分配的,该命令从 SLIP 服务器获取文本并将其分配给指定的变量。
如果ifconfig和route为您运行的命令命令(通常从不起作用,您可以选择在执行命令(通常从后在 shell 脚本中运行正确的命令,或者修改命令(通常从自身的源代码。运行命令(通常从时使用-v选项将打印调试信息,以便在建立连接时帮助您确定问题可能出在哪里。
现在,为了运行命令(通常从并打开 SLIP 连接,您可以使用如下命令
其中各种命令(通常从文件和聊天脚本 (mychat.dip) 存储在/etc/dip中。
上述讨论应该足以让您顺利地通过以太网或 SLIP 与网络通信。再次强调,我们强烈建议您查阅有关 TCP/IP 网络配置的书籍,特别是如果您的网络有任何特殊的路由考虑,而不是此处提到的那些。
Linux 支持 PPP(点对点协议)网络协议的完整实现。PPP 是一种通过串行连接(使用零调制解调器电缆)、通过已建立的 telnet 链路或使用调制解调器和电话线(当然也使用数字线路(如 ISDN))建立的链路来创建和运行 IP(互联网协议)和其他网络协议的机制。本节仅介绍如何配置 PPP 作为客户端,通过模拟调制解调器连接到提供 PPP 拨号服务的远程机器。
有关在 Linux 下设置 PPP 的完整信息,我们鼓励您阅读 Linux PPP HOWTO,可通过匿名 FTP 从以下地址获取:sunsite.unc.edu。 PPP HOWTO 是配置 Linux 下 PPP 的完整指南,包括调制解调器、ISDN 和零调制解调器电缆。本节中的大部分信息都来自该文档。《Linux 网络管理员指南》也由 Linux 文档项目提供。有关这些文档的更多信息,请参阅附录 A。
我们假设您的内核已配置并编译,并启用了 TCP/IP 支持。有关编译内核的信息,请参阅第 4.9 节。要启用网络,您必须在make config步骤中对相应问题回答“是”,然后重新构建内核。我们还假设 ppp 已在您的系统上编译和安装。我们假设您正在使用 Linux 1.2.x 内核和 PPP 2.1.2 软件或 Linux 1.3.X/2.0.x 和 PPP 2.2.0。在撰写本文时,Linux 可用的最新官方 PPP 版本是 ppp-2.2f。如果您计划使用模块将 ppp 加载到内核中,请参阅 kerneld mini-HOWTO。强烈建议您使用已知彼此稳定的 Linux 内核版本和相应的 PPP 版本。
您还应该阅读
设置您的系统以使用 PPP 需要几个步骤。我们建议您在尝试实际建立 PPP 连接之前,通读所有这些步骤。稍后将详细讨论这些步骤中的每一个步骤。
Linux PPP 操作分为两个部分:1) PPP 守护进程和内核对 PPP 的支持。大多数发行版似乎在其默认安装内核中提供 PPP 内核支持,但其他发行版则不提供。您应该确保 TCP/IP 已编译到您的内核中。您可以通过发出以下命令来做到这一点
如果您得到类似于
的行,则表示您已编译了 TCP/IP 支持。您还可以在 Linux 启动时在控制台上查找上述信息。在许多快速机器上,此信息滚动得太快。您可以使用 Shift-PageUp 向上滚动屏幕并查看此信息。
如果在启动时您的内核报告类似如下的消息
,则表示您的内核具有 PPP 支持。您还可以发出命令
如果您得到类似于
,这意味着存在 PPP 支持。
您应确保您的调制解调器已正确设置,并且您知道它连接到的串行端口。
从历史上看,Linux 使用 cuax 设备进行拨出,使用 ttySx 设备进行拨入。内核版本 2.0.x 中更改了需要此操作的内核代码,您现在应该使用 ttySx 进行拨入和拨出。cuax 设备名称很可能在未来的内核版本中消失。
如果您正在使用高速(外部)调制解调器(14,400 波特或更高),则您的串行端口需要能够处理此类调制解调器能够产生的吞吐量,尤其是在调制解调器压缩数据时。
这要求您的串行端口使用现代 UART(通用异步接收器/发送器),例如 16550A。如果您正在使用旧机器(或旧串行卡),则您的串行端口很可能只有 8250 UART,这会在与高速调制解调器一起使用时给您带来相当大的问题。
使用命令
让 Linux 向您报告您拥有的 UART 类型。如果您没有 16550A 类型 UART,请购买新的串行卡(售价低于 50 美元)。您需要为 PPP 正确配置您的调制解调器——为此,请阅读您的调制解调器手册!大多数调制解调器都带有出厂默认设置,该设置选择 PPP 所需的选项。推荐的配置指定(在标准 Hayes 命令中)
有一个站点提供针对各种调制解调器品牌和型号的示例配置,网址为调制解调器设置信息 (http://www.in.net/info/modems/index.html),这可能会对您有所帮助。
使用您的通信软件(例如 minicom 或 seyon)来了解您的调制解调器配置,并将其设置为 PPP 所需的配置。许多调制解调器会响应 AT&V 报告其当前设置,但您应该查阅您的调制解调器手册。
如果您完全搞砸了设置,您可以通过发出 AT&F——恢复出厂设置来(通常)恢复正常。(对于我遇到的大多数调制解调器调制解调器,出厂设置包括 PPP 所需的一切——但您应该检查)。
一旦您确定了所需的调制解调器设置字符串,请将其写下来。您现在可以做出决定:您可以将这些设置存储在调制解调器的非易失性存储器中,以便可以通过发出相应的 AT 命令来调用它们。或者,您可以将正确的设置作为 PPP 拨号过程的一部分传递给您的调制解调器。
如果您仅从 Linux 使用调制解调器呼叫您的 ISP 或公司服务器,则最简单的设置是将您的调制解调器配置保存在非易失性 RAM 中。
另一方面,如果您的调制解调器被其他应用程序和操作系统使用,则最安全的方法是在每次呼叫时将此信息传递给调制解调器,以确保调制解调器处于正确的呼叫状态。(这还具有记录调制解调器设置字符串的额外优势,以防调制解调器丢失其 NV-RAM 的内容,这确实可能发生)。
在您可以与远程服务器建立 PPP 连接之前,您需要从 ISP 的系统管理员或技术支持人员处获取以下信息。
大多数互联网服务提供商都使用动态 IP 号码。如上所述,这在您可以使用的服务方面有一些影响。
但是,即使您使用静态 IP 号码,大多数 PPP 服务器也永远不会(出于安全原因)允许客户端指定 IP 号码,因为这是一种安全风险。您仍然需要知道此信息!
这里可能存在问题。MS Windows 95 PPP 设置允许在连接过程中将 DNS 地址传递给客户端。因此,您的 ISP(或公司帮助台)很可能会告诉您您不需要 DNS 服务器的 IP 地址。
对于 Linux,您确实需要至少一个 DNS 的地址。Linux 的 PPP 实现不允许在连接时动态设置 DNS IP 号码——并且很可能永远不会这样做。
连接到互联网的每个设备都必须有自己唯一的 IP 号码。这些号码由每个国家/地区的指定机构集中分配。因此,要使用 PPP 连接,必须为您分配 IP。由于互联网上的机器数量增加(部分原因是大量 PPP 用户),因此为 PPP 开发了一种动态方案,该方案在您的机器首次建立 PPP 连接时即时为其提供 IP。这意味着每次连接到远程 PPP 拨号服务时,您都会获得不同的 IP 地址。这是大多数 ISP 最常用的方法。另一种方法是使用静态 IP。您不能只选择要使用的 IP。它必须由负责发布 IP 号码的中央机构分配。这可以防止两台计算机具有相同的 IP 地址并在 Internet 上引起问题。远程 PPP 拨号服务提供商将能够告诉您您是否正在使用静态或动态 IP,并且如果您正在使用静态方法,还会为您提供实际的 IP 号码。
重要的是要注意,如果您使用动态 IP 分配,则将很难提供任何永久性 Internet 服务,例如万维网服务器、gopher 服务或 Internet Relay Chat 服务器。您仍然可以使用其他机器上的此类服务,但无法在您的机器上提供此类服务,除非付出极大的努力。这样做超出了本文档的范围。
PAP 和 CHAP 是不同的常用身份验证方法。Linux 同时支持这两种方法。
现在您已经整理了串行端口和调制解调器设置,最好通过拨打您的 ISP 并查看是否可以连接来确保这些设置确实有效。
使用您的终端通信包(例如 minicom 或 seyon),设置 PPP 所需的调制解调器初始化,并拨号连接到您要使用 PPP 会话连接的 PPP 服务器。
(注意:在此阶段,我们不是在尝试建立 PPP 连接——只是要确定我们有正确的电话号码,并找出服务器发送给我们的确切信息,以便登录并启动 PPP)。
在此过程中,要么捕获(记录到文件)整个登录过程,要么仔细(非常仔细地)写下服务器给出的确切提示,以告知您何时输入用户名和密码(以及建立 PPP 连接所需的任何其他命令)。
如果您的服务器使用 PAP,您不应该看到登录提示,而应该在屏幕上看到链路控制协议(看起来像垃圾)的(文本表示)开始。
一些警告
值得拨入至少两次——一些服务器每次您登录时都会更改其提示(例如,使用时间!)。您的 Linux 机器每次拨入时需要能够识别的两个关键提示是
如果您必须发出命令才能在服务器上启动 PPP,您还需要找出服务器在您登录后给出的提示,以告知您可以输入命令来启动 PPP 了。
如果您的服务器自动启动 PPP,一旦您登录,您将开始在屏幕上看到垃圾——这是 PPP 服务器向您的机器发送信息以启动和配置 PPP 连接。
这应该看起来像这样
y}#.!}!}!} }8}!}}U}"}\&} } } } }}\& ...}'}"}(}"} .~~y}
在某些系统上,必须在服务器上显式启动 PPP。这通常是因为服务器已设置为允许使用相同的用户名/密码对进行 PPP 登录和 shell 登录。如果是这种情况,请在登录后发出此命令。同样,当 PPP 连接的服务器端启动时,您将看到垃圾。
如果您在连接后(以及登录并启动 PPP 服务器(如果需要))后没有立即看到此内容,请按 Enter 键查看是否启动了 PPP 服务器。
此时,您可以挂断调制解调器(通常,快速键入 +++,然后在您的调制解调器响应 OK 后发出 ATH0 命令)。
如果您的调制解调器无法工作,请阅读您的调制解调器手册、您的通信软件的手册页和 Serial HOWTO。一旦您解决了这个问题,请继续执行上述操作。
如果您正在使用动态 IP 号码(并且许多服务提供商只会为您提供动态 IP 号码,除非您为连接支付更多费用),那么您必须认识到这带来的限制。
首先,出站服务请求将正常工作。也就是说,您可以使用 sendmail 发送电子邮件(前提是您已正确设置 sendmail)、从远程站点 ftp 文件、finger 其他机器上的用户、浏览网页等。
特别是,您可以回复您在离线时下载到计算机上的电子邮件。邮件将简单地停留在您的邮件队列中,直到您拨回您的 ISP。
但是,您的机器不是 24 小时连接到互联网,并且每次连接时也没有相同的 IP 号码。因此,您无法接收定向到您机器的电子邮件,并且很难设置您的朋友可以访问的网站或 ftp 服务器!就互联网而言,您的机器作为一个唯一的、永久可联系的机器是不存在的,因为它没有唯一的 IP 号码(请记住——其他机器在拨入时将使用该 IP 号码)。
如果您设置了 WWW(或任何其他服务器),除非他们知道您的机器已连接并且其真实的(当前的)IP 号码,否则互联网上的任何用户都完全不知道它。他们可以通过多种方式获取此信息,从您打电话给他们、发送电子邮件告诉他们,到巧妙地使用您的服务提供商的 shell 帐户上的“.plan”文件(假设您的提供商允许 shell 和 finger 访问)。
对于大多数用户来说,这不是问题——大多数人想要的只是发送和接收电子邮件(使用您在服务提供商处的帐户)并与互联网上的 WWW、ftp 和其他服务器建立出站连接。如果您必须与您的服务器建立入站连接,您真的应该获得静态 IP 号码。
您现在需要以 root 用户身份登录才能创建目录并编辑设置 PPP 所需的文件。PPP 使用多个文件来连接和设置 PPP 连接。这些文件在 PPP 2.1.2 和 2.2 之间名称和位置有所不同。
对于 PPP 2.1.2,文件是
对于 PPP 2.2,文件是
Red Hat Linux 用户应注意,标准的 Red Hat 4.X 安装将这些脚本放在 /usr/doc/ppp-2.2.0f-2/scripts 中。
在您的/etc目录中应该有一个 ppp 目录
drwxrwxr-x 2 root root 1024 Oct 9 11:01 ppp
如果它不存在——使用这些所有权和权限创建它。
如果该目录已存在,则应包含一个名为 options.tpl 的模板选项文件。如果不存在,则在下面包含此文件。
打印出来,因为它包含了几乎所有 PPP 选项的解释(这些选项与 pppd 手册页结合阅读很有用)。虽然您可以使用此文件作为 /etc/ppp/options 文件的基础,但最好创建您自己的选项文件,其中不包含模板中的所有注释 - 它会更短且更易于阅读/维护。
某些 PPP 发行版似乎丢失了 options.tpl 文件。您应该查看 PPP-HOWTO 文档以获取完整版本。
嗯,就像所有事情一样,这取决于情况(叹气)。此处指定的选项应适用于大多数服务器。
但是,如果它不起作用,请阅读模板文件 (/etc/ppp/options.tpl) 和 pppd 手册页,并与运行您要连接的服务器的系统管理员/用户支持人员交谈。
您还应该注意,此处提供的连接脚本还使用了一些 pppd 命令行选项,以使事情更容易更改。
现在您已经创建了 /etc/ppp/options 和 /etc/resolv.conf 文件(以及,如果需要,/etc/ppp/pap|chap-secrets 文件),您可以通过手动建立 PPP 连接来测试设置。(一旦我们手动连接工作,我们将自动化该过程)。
为此,您的通信软件必须能够在不重置调制解调器的情况下退出。Minicom 可以使用 Control-A Q 序列来做到这一点
当然,要替换为您调制解调器连接到的设备的名称。
-d 选项启用调试——PPP 连接启动对话将记录到您的系统日志中——这对于稍后跟踪问题很有用。
此时,您可以通过发出命令来查看 PPP 接口
除了您拥有的任何以太网和环回设备之外,您还应该看到类似
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
的内容,其中
(Ifconfig 不会报告这些 IP 号码,而是您的 PPP 服务器使用的 IP 号码。)注意:ifconfig 还会告诉您链路已启动并正在运行!
您还应该能够看到到远程主机的路由(以及更远)。为此,请发出命令
您应该看到类似
的内容。这里特别重要的是,请注意我们有两个指向 PPP 接口的条目。
第一个是主机路由(由 H 标志指示),它允许我们查看我们连接到的主机——但仅此而已。
第二个是默认路由(通过为 pppd 提供选项 defaultroute 建立)。此路由告诉我们的 Linux PC 将任何不以本地以太网(我们对其具有特定网络路由)为目标的数据包发送到 PPP 服务器本身。然后,PPP 服务器负责将我们的数据包路由到 Internet 上,并将返回的数据包路由回我们。
如果您没有看到带有两个条目的路由表,则说明有问题。特别是,如果您的 syslog 显示一条消息,告知您 pppd 没有替换现有默认路由,则说明您有一个指向您的以太网接口的默认路由——必须将其替换为特定的网络路由:您只能有一个默认路由!!!
您将需要浏览您的系统初始化文件,以找出在哪里设置此默认路由(它将使用 route add default... 命令)。将此命令更改为类似于 route add net.... 的命令。
现在通过“ping”服务器的 IP 号码(如 ifconfig 输出报告的那样)来测试链路,即
您应该收到类似如下的输出
此列表将永远持续下去——要停止它,请按 Control-C,此时您将收到更多信息
现在尝试按名称 ping 主机(不是 PPP 服务器本身的名称),而是 ping 另一个站点的主机,您知道该主机可能会启动并运行。例如
这次会有一点停顿,因为 Linux 从您在 /etc/resolv.conf 中指定的 DNS 获取您“ping”的完全限定主机名的 IP 号码——所以不用担心(但您会看到您的调制解调器指示灯闪烁)。很快您将收到类似如下的输出
再次,按 Control-C 停止输出并获取统计信息...
如果您没有收到任何响应,请尝试 ping 您的 ISP 站点的 DNS 服务器的 IP 地址。如果您从中获得结果,那么看起来您的 /etc/resolv.conf 存在问题。
如果这不起作用,则说明您有路由问题,或者您的 ISP 在将数据包路由回您时遇到问题。检查您的路由表(如上所示),如果路由表正常,请联系您的 ISP。测试 ISP 的一个好方法是使用另一个操作系统进行连接。如果您可以使用该操作系统超越您的 ISP,则问题出在您这边。
如果一切正常,请通过键入
关闭连接。短暂的暂停后,调制解调器应自行挂断。
如果这不起作用,您可以关闭调制解调器,或者启动您的通信软件并使用 +++ 中断调制解调器,然后在您收到调制解调器的 OK 提示后使用 ATH0 挂断。
您可能还需要通过键入以下命令来清理 pppd 创建的锁文件
您可以继续像上面显示的那样手动登录,但设置一些脚本来自动执行此操作会更简洁。
一组脚本自动化了登录和 PPP 启动,因此您所要做的(以 root 用户身份或作为 PPP 组的成员)就是发出一个命令来启动您的连接。
如果您的 ISP 不需要使用 PAP/CHAP,则这些脚本适合您。
如果 PPP 包安装正确,您应该有两个示例文件。对于 PPP 2.1.2,它们位于 /usr/sbin 中,对于 PPP 2.2,它们位于 /etc/ppp/scripts 中。它们被称为
对于 PPP-2.1.2
ppp-on ppp-off
和对于 PPP-2.2
ppp-off ppp-on ppp-on-dialer
现在,如果您正在使用 PPP 2.1.2,我强烈建议您删除示例文件。这些文件存在潜在问题——不要告诉我它们工作正常——我也使用它们很长时间了(并在本 HOWTO 的第一个版本中推荐了它们)!
为了 PPP 2.1.2 用户的利益,这里提供了更好的模板版本,取自 PPP 2.2 发行版。我建议您复制并使用这些脚本来代替旧的 PPP-2.1.2 脚本。
15.2. ppp-on 脚本
这是实际启动连接的一对脚本中的第一个。
这是 ppp-on-dialer 脚本
对于 PPP-2.2,ppp-off 脚本如下所示
由于新脚本分为两部分,我们将依次编辑它们。
您需要编辑 ppp-on 脚本以反映您在 ISP 处的用户名、您在 ISP 处的密码、您的 ISP 的电话号码。
像 TELEPHONE= 这样的每一行实际上都设置了包含“=”右侧信息(当然,不包括注释)的 shell 变量。因此,编辑这些行中的每一行,使其对您的 ISP 和连接是正确的。
另外,由于您正在 /etc/ppp/options 文件中设置 IP 号码(如果需要),请删除显示
$LOCAL_IP:$REMOTE_IP \
的行。另外,请确保 shell 变量 DIALER_SCRIPT 指向您实际要使用的拨号器脚本的完整路径和名称。因此,如果您已移动或重命名此脚本,请确保您在 ppp-on 脚本中正确编辑此行!
这是实际建立我们的 ppp 链路的第二个脚本。
注意:聊天脚本通常都在一行上。反斜杠用于允许跨越多行物理行(为了便于人类阅读),并且不构成脚本本身的一部分。
然而,详细查看它非常有用,以便我们理解它实际上(应该)在做什么!
聊天脚本是一系列“期望字符串”“发送字符串”对。 特别注意,我们总是先期望一些东西,然后再发送一些东西。
如果要发送一些东西而没有先接收任何东西,我们必须使用一个空的期望字符串(用“”表示),对于期望一些东西而不发送任何东西也是如此! 此外,如果一个字符串由几个单词组成(例如 NO CARRIER),您必须引用该字符串,以便 chat 将其视为单个实体。
我们模板中的聊天行是
调用 chat,-v 告诉 chat 将其所有 I/O 复制到系统日志中(通常是 /var/log/messages)。 一旦您确信聊天脚本工作可靠,请编辑此行以删除 -v,以节省系统日志中不必要的混乱。
这会将接收预期输入的超时时间设置为三秒。 如果您使用的是非常慢的调制解调器,您可能需要将其增加到 5 或 10 秒!
如果收到字符串 BUSY,则中止操作。
如果收到字符串 NO ANSWER,则中止操作
期望调制解调器没有任何响应,并发送字符串 AT。
这一个有点复杂,因为它使用了一些 chat 的错误恢复功能。
它的意思是...期望 OK,如果没有收到(因为调制解调器不在命令模式),则发送 +++(标准的 Hayes 兼容调制解调器字符串,将调制解调器返回到命令模式)并期望 OK。 然后发送 ATH0(调制解调器挂断字符串)。 这允许您的脚本处理调制解调器卡在线上的情况!
将脚本剩余部分的超时时间设置为 30 秒。 如果您在使用聊天脚本时遇到因超时而中止的问题,请将其增加到 45 秒或更长时间。
期望 OK(调制解调器对 ATH0 命令的响应)并拨打我们要呼叫的号码。
期望 CONNECT(当远程调制解调器应答时,我们的调制解调器会发送此消息)并且不发送任何回复。
同样,我们在这里内置了一些错误恢复。 期望登录提示符(...ogin:),但如果我们在超时时间内没有收到它,则发送一个回车符,然后再次查找登录提示符。 当收到提示符时,发送用户名(存储在 shell 变量 $ACCOUNT 中)。
期望密码提示符并发送我们的密码(同样,存储在 shell 变量中)。
此聊天脚本具有合理的错误恢复能力。 Chat 具有比此处演示的更多的功能。 有关更多信息,请查阅 chat 手册页 (man 8 chat)。
虽然ppp-on-dialer脚本适用于在您登录后自动在服务器端启动 pppd 的服务器,但某些服务器要求您在服务器上显式启动 PPP。
如果您需要发出命令以在服务器上启动 PPP,您确实需要编辑 ppp-on-dialer 脚本。
在脚本的末尾(密码行之后)添加一个额外的期望发送对——这将查找您的登录提示符(注意在 Bourne shell 中具有特殊含义的字符,例如
一旦 chat 找到 shell 提示符,chat 必须发出 ISP 的 PPP 服务器所需的 ppp 启动命令。
在一位作者的情况下,PPP 服务器使用标准的 Linux Bash 提示符
这需要响应
以在服务器上启动 PPP。
在这里允许一些错误恢复是一个好主意,所以使用
这表示,如果我们在超时时间内没有收到提示符,则发送一个回车符并再次查找提示符。
一旦收到提示符,则发送字符串 ppp。
注意:不要忘记在前一行的末尾添加一个 ,以便 chat 仍然认为整个聊天脚本都在一行上!
不幸的是,某些服务器产生一组非常多变的提示符! 您可能需要使用 minicom 多次登录以了解发生了什么并选择稳定的“期望”字符串。
如果连接到的服务器需要 PAP 或 CHAP 身份验证,您需要做更多的工作。
在上面的 options 文件中,添加以下行
Microsoft Windows NT RAS 可以设置为使用 CHAP(质询/握手身份验证协议)的变体。 在您的 PPP 源代码中,您会找到一个名为 README.MSCHAP80 的文件,其中讨论了这一点。 您可以通过启用 pppd 的调试来确定服务器是否正在请求使用此协议进行身份验证。 如果服务器正在请求 MS CHAP 身份验证,您将看到如下行
这里的关键信息是auth chap 80。
为了使用 MS CHAP,您需要重新编译 pppd 以支持它。 请参阅 PPP 源文件中的 README.MSCHAP80 文件中的说明,了解如何编译和使用此变体。
如果您使用 pap 或 chap 身份验证,那么您还需要创建 secrets 文件。 这些文件是 1)/etc/ppp/pap-secrets 和 2)/etc/ppp/chap-secrets。
为了安全起见,它们必须由用户 root 和组 root 拥有,并且文件权限为 740。 关于 PAP 和 CHAP 的第一个需要注意的点是,它们被设计为验证计算机系统而不是用户。 换句话说,一旦您的计算机与服务器建立了 PPP 连接,您系统上的任何用户都可以使用该连接——而不仅仅是您。
PAP 可以(并且对于 CHAP 确实)需要双向身份验证——也就是说,每台相关计算机上都需要有效的名称和密钥才能用于另一台计算机。 但是,这并非大多数提供拨号 PPP PAP 身份验证连接的 PPP 服务器的运行方式。
话虽如此,您的 ISP 可能会给您一个用户名和密码,以便您连接到他们的系统,然后连接到互联网。 您的 ISP 根本不关心您的计算机名称,因此您可能需要使用 ISP 给您的用户名作为您计算机的名称。 这是通过使用 pppd 的 name 用户名选项完成的。 因此,如果您要使用 ISP 给您的用户名,请添加以下行
name your_user name_at_your_ISP
到您的 /etc/ppp/options 文件。
从技术上讲,您真的应该使用user our_user name_at_your_ISP对于 PAP,但 pppd 非常智能,可以解释 name 为 user,如果需要使用 PAP。 使用 name 选项的优势在于,这也对 CHAP 有效。
由于 PAP 用于验证计算机,因此从技术上讲,您还需要指定远程计算机名称。 但是,由于大多数人只有一个 ISP,因此您可以在 secrets 文件中使用通配符 (*)作为远程主机名。
inetd/etc/ppp/pap-secrets文件看起来像
# Secrets for authentication using PAP # client server secret acceptable_local_IP_addresses
这四个字段用空格分隔,最后一个字段可以为空(这正是您希望从 ISP 获得动态和可能是静态 IP 分配的方式)。
假设您的 ISP 给您的用户名是 fred,密码是 flintstone,您将在/etc/ppp/options中设置 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 地址。 即使您尝试这样做,它也不太可能有效,因为大多数 PPP 服务器(出于安全原因)不允许远程系统设置要分配给它们的 IP 号码。
这要求您具有相互身份验证方法——也就是说,您必须允许您的机器验证远程服务器,并且允许远程服务器验证您的机器。
因此,如果您的机器是 fred,而远程机器是 barney,则您的机器将在其各自的 /etc/ppp/options.ttySx 文件中设置 name fred remotename barney,而远程机器将设置 name barney remotename fred。
inetd/etc/chap-secretsfred 的文件看起来像
# Secrets for authentication using CHAP # client server secret acceptable local IP addresses fred barney flintstone barney fred wilmabarney 的文件看起来像
# Secrets for authentication using CHAP # client server secret acceptable local IP addresses barney fred flintstone fred barney wilma
特别注意,两台机器都必须具有用于双向身份验证的条目。 这允许本地机器向远程机器验证自身,并允许远程机器向本地机器验证自身。
如果您的 ISP 使用 PAP/CHAP,那么您的聊天脚本会简单得多。 您的聊天脚本只需要拨打电话,等待连接,然后让 pppd 处理登录!
正如我们已经看到的,您可以使用 pppd 的 -d 选项打开调试信息日志记录。“debug”选项与此等效。
由于我们正在使用新脚本建立新连接,因此暂时保留 debug 选项。(警告:如果您的磁盘空间紧张,记录 pppd 交换可能会迅速扩展您的系统日志文件并给您带来麻烦——但要做到这一点,您必须连接失败并持续尝试几分钟)。
一旦您确信一切正常运行,您就可以删除此选项。
打开一个新的 root Xterm(如果您在 X 中)或打开一个新的虚拟控制台并以 root 身份登录。
在此新会话中,发出命令
许多系统将输出记录到/var/log/messages。 如果它在您的系统上具有不同的名称,请在上面的命令中替换您的系统日志文件的名称。
在第一个窗口(或虚拟控制台)中,发出命令
(或您调用的编辑版本的任何名称/usr/sbin/ppp-on)。 如果您没有通过在命令末尾指定 & 将脚本放入后台,您将不会在 ppp 退出(链接终止时)之前获得终端提示符。
现在切换回跟踪您的系统日志的窗口。
当您完成 PPP 链接后,使用标准的ppp-off命令将其关闭(请记住,您必须是 root 用户或ppp组的成员!)。
您会发现的一个问题是,许多服务提供商只支持他们分发给新帐户的连接软件包。 这(通常)是针对 Microsoft Windows 的(——并且许多服务提供商帮助台似乎对 Unix(或 Linux)一无所知。 因此,请为他们提供的有限帮助做好准备!
当然,您可以帮个人一个忙,并教育他们了解 Linux(任何 ISP 帮助台人员都应该在互联网方面相当“时髦”,这意味着他们应该有一个家用 Linux 盒子——当然是这样)!
好的——您的 PPP 连接已启动并正在运行,您可以按 IP 号码 ping PPP 服务器(由 ifconfig ppp0 显示的第二个或“远程”IP 号码),但您无法访问超出此范围的任何内容。
首先,尝试 ping 您在 /etc/resolv.conf 中指定为名称服务器的 IP 号码。 如果这有效,您可以查看超出 PPP 服务器的范围(除非这与您的连接的“远程”IP 号码相同)。 所以现在尝试 ping 您的服务提供商的完整 Internet 名称
当然,替换为您实际 ISP 的名称。 如果这不起作用,则您的名称解析存在问题。 这可能是因为您的/usr/etc文件中存在拼写错误。 仔细检查此文件与示例/etc/resolve.conf文件(在第 6.1.1 节中)。
如果它仍然不起作用(并且您的服务提供商确认其名称服务器已启动并正在运行),则您在其他地方遇到了问题——并仔细检查您的 Linux 安装(尤其要注意文件权限)。
如果您仍然无法ping通过 IP 号码 ping 您的服务提供商的 IP 名称服务器,则要么它们已关闭(给他们打个电话并检查),要么您的服务提供商端存在路由问题。
一种可能性是“远程端”是一个 Linux PPP 服务器,其中未在内核中指定 IP 转发选项!
您的连接不起作用的原因有很多——chat 未能正确完成,您的线路很脏等等。 因此,请检查您的系统日志以获取指示。
一个非常常见的问题是,人们将 PPP 支持编译到内核中,但是当他们尝试运行 pppd 时,内核会抱怨它不支持 ppp! 发生这种情况的原因有很多。
以及其他许多原因。 查看 PPP FAQ(这实际上是一系列问题和答案)。 这是一个非常全面的文档,答案就在那里! 如果您的问题的答案不在那里,则问题不是 ppp 的错!
如果您无法使您的 PPP 链接工作,请回顾本文档并检查所有内容——结合您的系统日志中“chat -v...”和“pppd -d”创建的输出。
另请查阅 PPP 文档和 FAQ 以及此处提及的其他文档!
如果您仍然遇到困难,请尝试 comp.os.linux.misc 和 comp.os.linux.networking 新闻组,这些新闻组会定期被可以帮助您解决 PPP 问题的人员扫描,comp.protocols.ppp 也是如此
如果您选择在美国新闻组中寻求帮助,请不要发布包含调试输出的非常长的消息。 这会浪费大量的网络带宽。 最好描述问题,并可能包含几行调试输出(绝对不超过一屏幕)。