For the complete documentation index, see llms.txt. This page is also available as Markdown.

31.3.PPP 连接的故障排除

本节介绍使用调制解调器进行 PPP 连接时可能出现的一些问题。某些 ISP 会显示 ssword 提示符,而另一些则会显示 password。如果 ppp 脚本没有相应设置,登录尝试将失败。调试 ppp 连接最常见的方法是手动连接,下面将详细说明。

31.3.1. 检查设备节点

使用定制内核时,请确保在内核配置文件中包含以下行:

device   uart

uart 设备已包含在 GENERIC 内核中,因此在这种情况下无需额外操作。只需通过以下命令检查 dmesg 输出中是否识别到了调制解调器设备:

# dmesg | grep uart

这应显示一些关于 uart 设备的相关输出。它们即我们所需的 COM 端口。如果调制解调器表现得像标准串口,它通常会列在 uart1,也就是 COM2。如果确实如此,就不需要重建内核。当设备为 uart1 时,其设备文件应为 /dev/cuau1

31.3.2. 手动连接

手动控制 ppp 连接到互联网是快速、简便、有效的调试方式,也有助于了解 ISP 是如何处理 ppp 客户端连接的。下面我们从命令行启动 PPP。以下示例中,运行 PPP 的主机名为 example

首先启动 ppp

# ppp

设置调制解调器设备:

ppp ON example> set device /dev/cuau1

设置连接速率为 115200 bps:

ppp ON example> set speed 115200

启用 DNS 配置功能:

这会让 ppp 配置解析器并将 nameserver 条目添加到 /etc/resolv.conf 中。如果 ppp 无法识别主机名,可稍后手动设置。

进入“终端”模式以手动控制调制解调器:

初始化调制解调器并拨号:

使用 at 初始化调制解调器,使用 atdt 加上 ISP 的电话号码发起拨号过程。

成功连接后,屏幕上会显示:

若存在与硬件无关的连接问题,通常会在此阶段显现。

输入 ISP 提供的用户名:

输入 ISP 提供的密码(输入时不会回显):

可能会出现询问是否使用 shell 或启动 ppp 的提示:

在此示例中选择 ppp 以建立互联网连接。

成功连接后提示符会显示为:

注意首字母 P 已大写,表示已成功连接 ISP。

等待分配 IP 地址:

成功完成连接后:

添加默认路由,让系统能访问外部网络:

请务必在连接外界前添加默认路由,否则系统当前只和对端建立了连接。如果由于已有路由而添加失败,可在 add 前加 ! 字符跳过错误。或者在建立连接前设置此命令,以便自动协商路由。

如果一切顺利,现在系统应已成功连接互联网。可通过 CTRL+z 将连接转入后台。

若提示符从 PPP 返回为 ppp,则说明连接已断开。这一点非常实用,因为提示符中大写 P 表示已连接 ISP,小写 p 则表示连接已丢失。

31.3.3. 调试

如果无法建立连接,可使用 set ctsrts off 关闭硬件流控 CTS/RTS。这个问题主要出现在连接某些支持 PPP 的终端服务器时,在这种情况下 PPP 在尝试向通信链路写入数据时会挂起,并等待永远不会到来的 CTS(Clear To Send)信号。使用此选项时,还应加上 set accmap,这在需要绕过依赖特定字符(如 XON/XOFF)端到端传输的硬件时非常有用。有关此选项及其使用方式的更多信息,请参阅 ppp(8)

对于老式调制解调器,可能需要使用 set parity even。默认情况下奇偶校验设置为 none,但在老式设备中可用作错误检测,尽管这会显著增加数据流量。

ppp 无法返回命令模式,通常是由于协商错误,ISP 正在等待协商开始。此时可输入 ~p 强制 ppp 开始发送配置信息。

如果始终未出现登录提示符,可能是需要 PAP 或 CHAP 认证。要启用 PAP 或 CHAP,可在进入终端模式前添加以下设置:

其中 用户名 应替换为 ISP 分配的用户名。

其中 密码 应替换为 ISP 分配的密码。

如果连接建立了,但无法解析域名,可尝试使用 ping(8) 命令直接 ping IP 地址。如果出现百分之百的数据包丢失,可能是默认路由没有设置。请检查是否已在连接期间设置 add default HISADDR。如果能成功连接远程 IP,但仍无法解析域名,可能是没有向 /etc/resolv.conf 添加 DNS 解析器地址。该文件应类似如下格式:

其中 x.x.x.xy.y.y.y 应替换为 ISP 提供的 DNS 服务器的 IP 地址。

要让 syslog(3) 记录 PPP 连接日志,请确保 /etc/syslog.conf 中存在以下行:

最后更新于