在 Linux 中配置 pppd,第一部分

作者:Tony Mobily
掌握命令

在 Linux 中配置 pppd,第一部分

连接到互联网可能比您想象的更容易;Tony 在这个分为两部分的文章系列中首先介绍如何配置您的调制解调器。

作者:Tony Mobily

今天,许多人在他们的桌面电脑上安装 Linux。不幸的是,似乎有相当多的人在他们尝试做一件显然没有人准备放弃的事情时就卡住了:连接到互联网。他们为什么会卡住?原因有几个,但主要原因是,没有像 Windows 的 “远程访问” 或 Mac 的 ConfigPPP 这样的官方等效程序。因此,许多用户最终在他们的系统上安装了一些类似的程序(GNOME 拨号,Linuxconf,KDE 拨号器等),却对它们一无所知。

也很可能没有可用的自动配置程序(例如,如果用户在安装系统时选择不安装 GNOME 或 KDE)。那么,为什么不接受挑战,学习如何手动建立互联网连接呢?本文解释了如何在您的 Linux 系统上设置调制解调器 - 这是一个许多用户似乎难以处理的关键步骤。在下一篇文章中,我将讨论如何在假设调制解调器已正确配置的情况下配置 pppd 本身。

您需要了解的内容

为了充分利用本文,您应该首先相当熟悉使用 shell 的基础知识(如何更改目录,列出目录中的文件等),使用任何编辑器编辑文件,运行程序以及在 X Window 系统中使用虚拟控制台或多个终端。

本文将假定您有一个真正的调制解调器,而不是 Winmodem。配置 Winmodem 是可能的,但可能很繁琐,并且超出本文的范围。

查找调制解调器

您要做的第一件事是知道您的调制解调器在哪里。我们正在寻找的是调制解调器连接到的串行端口。即使您使用的是内置调制解调器,这也是正确的,因为调制解调器卡本身将包含一个串行端口。您的计算机可能有两个串行端口。很可能,其中一个正被您的鼠标使用(除非您有 PS/2 或 USB 鼠标)。在 UNIX 中,每个设备都表示为目录 /dev 中的一个文件。此目录包含您可能在计算机上安装的每个设备的条目。串行端口称为 ttyS,后跟 0 到 3 之间的数字。让我们看一下

cd dev
ls -l ttyS*
crw-------  1 merc   tty    4,  64 Aug  3 10:24 ttyS0
crwxr-xr-x  1 root   tty    4,  65 Aug  3 10:25 ttyS1
crw-------  1 root   tty    4,  66 May  6  1998 ttyS2
crw-------  1 root   tty    4,  67 May  6  1998 ttyS3

调制解调器连接到哪个端口?答案是,这取决于您将调制解调器插入的位置(或者,如果您有内置调制解调器,则取决于它的配置方式)。如果您习惯于调用串行端口 COM1,COM2 等等,您应该知道这里的等效项是 COM1 = ttyS0,COM2 = ttyS1,COM3 = ttyS2 和 COM4 = ttyS3。而且,如果您不知道您的调制解调器插在哪个串行端口(或配置为哪个端口),请不要担心,因为我们稍后会找到答案。

通常,有一个名为 “modem” 的符号链接(或多或少相当于 Windows 快捷方式),它指向其中一个串行端口。例如,在我的系统上,我有

ls -l modem
lrwxrwxrwx  1 root  root  5 Feb  7  2000 modem -> ttyS1

在我的情况下,调制解调器连接到第二个串行端口 ttyS1(您可以在上面看到的符号链接基本上意味着任何使用文件 /dev/modem 的程序实际上都在处理 /dev/ttyS1)。

请记住,您的系统可能有所不同,您可能没有指向 ttyS1 或 ttyS0 的符号链接。实际上,本节的目标是在 /dev 中创建一个名为 modem 的符号链接,该链接指向正确的串行端口(即您的调制解调器连接到的端口)。

首先,我们将确定您的调制解调器连接到哪个串行端口。输入命令 minicom。要查看 minicom 是否已经在与您的调制解调器通信,只需键入 at 并按 Enter 键。如果您看到 “OK” 响应,则 minicom 正在使用 /dev 中的正确文件来访问调制解调器。否则,由于某种原因,minicom 无法与调制解调器通信。

如果调制解调器没有返回 OK 响应,那么首先要做的是找出调制解调器在哪里(即,调制解调器连接到哪个串行端口)。这可以很容易地从 minicom 完成:按 Ctrl-A 然后 O。请注意,有时 minicom 配置为使用 Alt 键。如果是这种情况,您应该记住,每次我写 Ctrl-key 时,您都应该按 Alt-key(例如,而不是 Ctrl-A 然后 O,您应该按 Alt 然后 O)。

minicom 配置屏幕将弹出。选择 “Serial port setup”(串行端口设置)并按 Enter 键。现在,按 A 并选择一个不同的串行端口。例如,如果当前端口是 /dev/ttyS0,则将其更改为 /dev/ttyS1(图 1)。现在您必须退出 minicom 并再次运行它。按 Enter 键并选择 “Save default as dfl”(将默认设置保存为 dfl)。然后选择 “Exit”(退出)(您将退出配置屏幕)并退出 minicom(Ctrl-A 然后 Q)。

Configuring pppd in Linux, Part I

图 1. 从此屏幕,您可以告诉 minicom 它应该使用哪个串行端口与调制解调器通信。

现在,再次运行它。minicom 将与您选择的串行端口通信。键入 at 并按 Enter 键。如果您收到 OK 作为响应,则您已找到调制解调器(参见图 2)。否则,您将不得不重复本节中概述的步骤,直到找到串行端口(也就是说,当您在运行 minicom 后键入 at 时,收到来自调制解调器的 OK 响应)。请记住,当您尝试找出调制解调器在哪里时,应遵循正常的调试程序。特别是,确保您的调制解调器已打开,已连接到计算机,正在使用正确的电源,并且其与计算机的连接牢固。

Configuring pppd in Linux, Part I

图 2. 这是当调制解调器响应 OK 时 minicom 应该显示的样子。

它们似乎是微不足道的检查,但正是由于它们的微不足道,它们经常被忽略。结果,您可能会花费数小时尝试配置实际上未连接或未打开的调制解调器。

如果调制解调器返回 OK 响应,则一切正常,只需整理一些事项即可。从 minicom,按 Ctrl-A 然后 O。minicom 配置屏幕将弹出。选择 “Serial port setup”(串行端口设置)并按 Enter 键。

在第一行,您将能够看到 minicom 正在使用哪个文件与调制解调器通信。如果是 /dev/modem,则您的系统上的一切配置正确,您可以跳到本文的下一节(“与调制解调器对话”)。

如果您收到 OK 响应,但 minicom 配置为使用不同的端口(例如 /dev/ttyS0),那么您必须在 /dev 中创建一个名为 modem 的符号链接,以确保您的系统中有一个可用的 /dev/modem 条目(记住,这是本节的主要目标)。记下 minicom 实际使用的端口(假设它是 /dev/ttyS0)。退出配置屏幕(按 Enter 键并选择 “Exit”(退出)),然后退出 minicom(按 Ctrl-A 然后 Q)。现在您回到了您的 shell。进入 /dev 目录并创建 “modem” 的符号链接,如下所示

cd /dev
ln -sf ttyS0 modem
ls -l modem
lrwxrwxrwx  1 root  root  5 Aug  3 12:32 modem -> ttyS0

当然,您必须将 ttyS0 替换为您在 minicom 配置屏幕中找到的端口。

现在,再次运行 minicom。通过键入 at 并按 Enter 键,确保一切仍然正常工作。您应该收到令人放心的 OK 响应(参见图 2)。再次转到 minicom 配置屏幕(Ctrl-A 和 O)并选择 “Serial port setup”(串行端口设置)。现在,通过按 A 并将 /dev/ttyS0 替换为 /dev/modem(参见图 1)来更改默认设备。按 Enter 键,然后选择 “Save setup as dfl”(将设置保存为 dfl)并选择 “Exit”(退出)以退出配置屏幕。为了使 minicom 使用新配置,您必须退出 minicom(Ctrl-A 和 Q)并再次运行它。

现在 minicom 正在使用设备 /dev/modem。键入 at。您应该收到 OK 响应(参见图 2)。如果是这样,恭喜您!

当您尝试连接到互联网时,配置调制解调器是最关键的步骤。许多用户不知道他们的调制解调器连接到哪个串行端口。如上一节所示,很明显调制解调器已经配置好;您只需要找出它在哪里,并在 /dev 中创建一个指向正确设备文件的符号链接。

与调制解调器对话

有趣的是,minicom 本身对 at 命令或 OK 响应没有任何概念。实际上,minicom 的主要任务非常简单:显示来自串行端口的字符,并将用户通过键盘键入的字符发送到串行端口。

从某种意义上说,调制解调器就像一个机器人,它使用串行端口与计算机对话。这就是为什么使用 minicom 可以让您,从某种意义上说,与调制解调器进行您自己的私人对话。例如,在上一节中,您向调制解调器发送了字符串 at<Enter>,调制解调器响应了字符串 OK<Enter>。

您可以与调制解调器进行什么样的对话?事实上,每个调制解调器都理解基于 at 命令集的 Hayes 命令集。一些制造商还提供了一些非常有趣的扩展。如果您想知道它们是什么,您只需在您的调制解调器手册中查找适用于您的调制解调器的命令即可。例如,命令 ATL-1,ATL-2 和 ATL-3 在每个调制解调器中都很常见;它们将扬声器音量设置为低、中或高。

即使您不需要知道很多这些命令也能有效地使用调制解调器,您可能也想尝试一些命令,以更多地了解您的调制解调器是如何工作的。请记住,如果您向调制解调器发送了一些不安全的命令,这些命令会损害其配置并阻止其连接,则始终可以键入命令 at&fat&w 将调制解调器重置为制造商的配置。

命令 ATDT93355100 用于拨打电话号码,在本例中为 93355100。DT 代表拨号音,与 DP(代表拨号脉冲)相反。如果您住在农村地区并连接到模拟电话交换机,则可能必须使用后者。尝试向调制解调器发送命令 ATDT,后跟您的互联网服务提供商的号码,看看会发生什么。

在我的情况下,连接看起来像图 3 中的那样。如您所见,在硬件握手(双方都有很多呼啸声)之后,调制解调器响应了一条不错的 CONNECT 52500 消息,这意味着连接已顺利建立。当然,您可能会收到其他消息作为响应:NO DIALTONE(没有连接到调制解调器的电话线),BUSY(线路忙),NO ANSWER(无人接听)等等(参见图 4)。

Configuring pppd in Linux, Part I

图 3. 我成功连接到我的 ISP 后我的屏幕。

Configuring pppd in Linux, Part I

图 4. 我拨打两个号码后的屏幕。第一个号码占线,另一个号码无人接听。

在我的情况下,连接已成功建立,我的 ISP 在我连接后立即向我发送了神秘的字符串(以 ~}#.!}!±} }4}``}&} }*} } }% 开头的那个)。实际上,我的 ISP 希望与我的 PPP 守护程序进行对话,而我只运行 minicom,它将准确显示我的 ISP 会发送给我的 PPP 守护程序的内容。

非常重要的是要记住,从现在开始,调制解调器将停止响应任何 at 命令;发送到串行端口的所有信息都将被调制并发送到线路的另一端。同时,来自线路另一端的所有信息都将被解调并发送到串行端口(因此,单词调制解调器)。计算机(或者,更好的是,串行端口)并不知道这一切。它的运行方式就像有一根串行电缆从您的计算机连接到另一端的计算机一样。事实上,如果您在家中有两台 PC,您可以使用 pppd 将它们轻松地连接在一起,并将它们的串行端口用串行电缆连接起来(您必须确保它是反向电缆,以便第一台计算机的发送引脚连接到第二台计算机的接收引脚,反之亦然)。

结论

下个月我将讨论如何配置您的计算机,以便您可以在不使用任何高级工具的情况下连接到互联网。敬请期待!

Configuring pppd in Linux, Part I
Tony Mobily (merc@mobily.com) 是意大利计算机杂志 Login 的技术编辑。他是一名 Linux 认证讲师 (www.linuxcertification.com)、系统管理员,并且正在接受舞蹈演员培训。他知道如何使用英语、意大利语、C、Perl 和其他几种语言。
加载 Disqus 评论