30.3.PPP 连接的故障排除¶
本节涉及通过调制解调器连接使用 PPP 时可能出现的几个问题。一些 ISP 给出 ssword
提示,而另一些则提示 password
。如果没有编写相应地 ppp
脚本,登录尝试就会失败。调试 ppp
连接的最常用方法是通过手动连接,如本节所述。
30.3.1.检查设备节点¶
当使用定制内核时,确保在内核配置文件中包括以下一行:
device uart
uart 设备已经包含在 GENERIC
内核中,所以在这种情况下无需多余的步骤。只要在 dmesg
输出中检查调制解调器设备就可以了:
# dmesg | grep uart
这应该会显示一些关于 uart 设备的相关输出。这些是我们需要的 COM 端口。如果调制解调器像一个标准的串行端口,它应该被列在 uart1 或 COM2 上。如果是这样,就不需要重建内核了。在匹配时,如果调制解调器在 uart1 上,调制解调器设备将是 /dev/cuau1。
30.3.2.手动连接¶
通过手动控制 ppp
连接到互联网是快速、简单的,而且是调试连接或者只是获得 ISP 如何对待 ppp
客户端连接的信息的好方法,。让我们从命令行启动 PPP。注意,在我们所有的例子中,我们将使用 example 作为运行 PPP 的机器的主机名。要启动 ppp
:
# ppp
ppp ON example> set device /dev/cuau1
这第二条命令设置调制解调器设备为 cuau1。
ppp ON example> set speed 115200
这将连接速度设置为 115,200 kbps。
ppp ON example> enable dns
这告诉 ppp
配置解析器,并在 /etc/resolv.conf 中添加 nameserver 行。如果 ppp
不能确定主机名,可以在以后手动设置。
ppp ON example> term
这将切换到“terminal”模式,以便手动控制调制解调器。
deflink: Entering terminal mode on /dev/cuau1
type '~h' for help
at
OK
atdt123456789
使用 at
初始化调制解调器,然后使用 atdt
和 ISP 的号码,开始拨号过程。
CONNECT
确认连接,如果我们将有任何连接问题,与硬件无关,我们将在这里尝试解决这些问题。
ISP Login:myusername
在这个提示下,用 ISP 提供的用户名返回提示。
ISP Pass:mypassword
在这个提示下,用 ISP 提供的密码来回答。就像登录 FreeBSD 一样,密码不会有回显。
Shell or PPP:ppp
根据 ISP 的不同,这个提示可能不会出现。如果它出现了,它将询问是否在供应商上使用 shell 或启动 ppp
。在这个例子中,选择 ppp
是为了建立互联网连接。
Ppp ON example>
注意,在这个例子中,第一个 P
被大写了。这表明我们已经成功连接到 ISP。
Ppp ON example>
我们已经成功地与 ISP 进行了认证,正在等待分配的 IP 地址。
PPP ON example>
我们已就 IP 地址达成协议并成功完成连接。
PPP ON example>add default HISADDR
在这里我们添加我们的默认路由,我们需要在与外界通信之前先做这个,因为目前唯一建立的连接是与对等者的连接。如果由于现有的路由而导致失败,在 add
的前面加上一个砰的字符 !
。或者,在进行实际连接之前设置这个,它将相应地协商一个新的路由。
如果一切顺利,我们现在应该有一个与互联网的活动连接,可以用 CTRL
+z
将其扔到后台。如果 PPP
返回 ppp
,则连接已经丢失。这是很好的信息,因为它显示了连接状态。大写的 P 代表与 ISP 的连接,小写的 p 表示连接已经丢失。
30.3.3.调试¶
如果不能建立连接,使用 set ctsrts off
将硬件流 CTS/RTS 转为关闭。这主要是在连接到某些具有 PPP 功能的终端服务器时,PPP 在试图向通信链路写入数据时挂起,并等待可能永远不会出现的 Clear To Send(CTS)信号。当使用这个选项时,加入 set accmap
,因为可能需要它来打败依赖于从头到尾传递某些字符的硬件,大多数时候是 XON/XOFF。参考 ppp(8) 以了解关于这个选项的更多信息以及它的使用方法。
老式调制解调器可能需要 set parity even
。默认情况下,奇偶校验被设置为无,但在较旧的调制解调器上,用于流量大增时的错误检查。
PPP 可能不会返回到命令模式,这通常是通信错误,ISP 正在等待协商的开始。在这一点上,使用 ~p
将迫使 ppp 开始发送配置信息。
如果从未出现登录提示,很可能需要 PAP 或 CHAP 认证。要使用 PAP 或 CHAP,在进入终端模式之前,在 PPP 中添加以下选项:
ppp ON example> set authname myusername
其中 myusername 应替换为 ISP 分配的用户名。
ppp ON example> set authkey mypassword
其中 mypassword 应替换为 ISP 分配的密码。
如果建立了连接,但似乎找不到任何域名,试着 ping(8) 一个 IP 地址。如果有百分之百(100%)的数据包丢失,很可能是没有分配默认路由。仔细检查在连接过程中是否设置了 add default HISADDR
。如果可以连接到一个远程 IP 地址,有可能是没有在 /etc/resolv.conf 中添加一个解析地址。这个文件应该是这样的:
domain example.com
nameserver x.x.x.x
nameserver y.y.y.y
其中 x.x.x.x 和 y.y.y.y 应该被替换成 ISP 的 DNS 服务器的 IP 地址。
要配置 syslog(3) 为 PPP 连接提供日志记录,确保在 /etc/syslog.conf 中存在这一行:
!ppp
*.* /var/log/ppp.log