28.4. PPP 连接故障排除

Contributed by Tom Rhodes.

警告:

从 FreeBSD 8.0 开始, uart(4) 驱动取代了 sio(4) 驱动。 用以表示串口的设备节点由分别 /dev/cuadN 改为了 /dev/cuauN, 并从 /dev/ttydN 改为了 /dev/ttyuN。 FreeBSD 7.X 用户在升级时需要因应之对配置文件进行必要的更改。

本节将讲述通过modem连接使用PPP时可能出现的问题。 例如, 您可能需要确切地知道您拨入的系统会出现一个怎样的命令行提示符。 有些 ISP 会提供 ssword提示符, 而其它的可能会出现 password; 如果没有根据情况的不同相应地编写 ppp 脚本, 登录就会失败。 诊断 ppp 最常用的方法是手动进行连接。 以下的信息会一步一步地带您完成手动连接。

28.4.1. 检查设备节点

如果使用的是定制内核, 确认在其编译配置中包含下列配置:

device uart

默认的 GENERIC 内核中包含了 uart 设备, 因此如果您使用的是它的话, 就不需要担心了。 只要查看 dmesg 输出中是否有 modem 设备:

# dmesg | grep uart

您应该找到与 uart 设备有关的输出。 这些就是我们需要的 COM 端口。 如果您的 modem 按照标准串行端口工作, 您就会在 uart1COM2 上找到它。 如果 modem 设备连接在 uart1 接口 (在 DOS 中称为COM2), 那么您的 modem 将会是 /dev/cuau1

28.4.2. 手动连接

通过手动控制ppp来连接Internet 是诊断连接及获知ISP处理PPP客户端方式的一个快速, 简单的方法。 让我们从PPP 命令行开始, 在所有的例子中我们使用 example 表示运行 PPP 服务的主机名。 键入ppp 命令打开 ppp

# ppp

现在我们已经打开了ppp

ppp ON example> set device /dev/cuau1

设置modem设备, 在本例子中是 cuau1

ppp ON example> set speed 115200

设置连接速度, 在本例中我们使用15,200 kbps

ppp ON example> enable dns

使ppp配置域名服务, 在文件/etc/resolv.conf中添加域名服务器行。 如果 ppp不能确定我们的主机名, 可以在稍后设置。

ppp ON example> term

切换到 终端样我们就能手动地控制这台 modem 的模式。

deflink: Entering terminal mode on /dev/cuau1 type '~h' for help
at OK atdt123456789

使用命令at初始化modem, 然后使用atdtISP给您的号码进行拨号。

CONNECT

连接配置, 如果我们遇到了与硬件无关的连接问题, 可以在这里尝试解决。

ISP Login:myusername

这里提示您输入用户名, 输入ISP提供的用户名然后按回车。

ISP Pass:mypassword

这时提示我们输入密码, 输入 ISP提供的密码。 如同登录入FreeBSD, 密码不会显示。

Shell or PPP:ppp

由于ISP的不同, 这个提示符可能不会出现。 这里我们需要考虑: 是使用运行于提供商端的 Shell, 还是启动 ppp? 这本例中, 我们选择使用 ppp, 因为我们希望得到 Internet 连接。

Ppp ON example>

注意在这个例子中, 第一个 p已经大写。 这表示我们已经成功地连接上了 ISP

PPp ON example>

我们已经成功通过了 ISP的验证, 正在等待分配IP地址。

PPP ON example>

我们得到了一个 IP 地址, 成功地完成了连接。

PPP ON example>add default HISADDR

这样就完成了添加默认路由所需的配置。 这是与外界通信所必需的。 因为之前我们只是与服务器端建立了连接。 如果由于已存在的路由而导致操作失败, 您可以在 add 前加 !号。 除此之外, 您也可以在真正连接之前设置这些 (指 add default HISADDR), ppp 会根据这项设定协商取得新的路由。

如果一切顺利, 现在我们应该能得到一个活动的 Internet 连接, 可以使用 CTRL+z 使其转入后台。 如果您发现 PPP重新变为 ppp, 则表示连接被断开。 大写的 P 表明建立了到 ISP 的连接, 而小写的 p 则表示连接由于某种原因被断开, 这有助于帮助我们了解连接的状态。 ppp 只有这两个状态。

28.4.2.1. 诊断排错

如果您有一根直连线且似乎不能建立连接, 要使用set ctsrts off以关闭字节流的CTS/RTS。 这种情况一般发生在连接兼容 PPP 的终端服务器时。 当它向通信连接写入数据时, PPP就会挂起, 一直等待一个CTS, 或者一个不可能出现的 Clear to Send 信号。 如果使用了这个选项, 您还应使用 set accmap选项, 某些存在缺陷的硬件在完成端对端发送特定字符, 特别是 XON/XOFF 时可能会遇到困难。 请参见 ppp(8) 联机手册以了解关于可用选项的更多细节, 以及如何使用它们。

如果您的 modem 比较旧, 就需要使用 set parity even 了。 奇偶校验的默认设置是 none, 但在旧式的 (当流量大量增加时) 调制解调器和某些 ISP 被用来纠错。 您需要使用这个选项才能使用 Compuserve ISP

PPP 可能并不返回命令模式, 这通常是 ISP 等待您这一端发起协商时发生了错误。 此时, 使用 ~p 命令将强制 ppp 开始发送配置信息。

如果您没有看到登录提示, 则很可能需要使用 PAPCHAP 验证来代替前面例子中的 UNIX® 风格验证。 要使用 PAPCHAP 只需在进入终端模式之前把下面的选项加入 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.xy.y.y.y 应该改为您的 ISP 的 DNS 服务器的 IP 地址。 这一信息在您注册时可能会提供给您, 不过通常只需给 ISP 打个电话就能知道了。

您还可以让 syslog(3) 为您的 PPP 连接提供日志。 只需增加:

!ppp *.* /var/log/ppp.log

/etc/syslog.conf 中。 绝大多数情况下, 这个功能默认已经打开了。

本文档和其它文档可从这里下载: ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

如果对于FreeBSD有问题,请先阅读 文档,如不能解决再联系 <questions@FreeBSD.org>.

关于本文档的问题请发信联系 <doc@FreeBSD.org>.