21.4. PPP 连接故障排除

Contributed by Tom Rhodes.

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

21.4.1. 检查设备节点

如果您的内核是经过重新配置的,那么就需要检查sio设备. 如果没有配置过内核, 就没什么可担心的了.只要查看 dmesg的输出以找到modem设备:

#dmesg | grep sio

您应该找到与sio设备有关的输出. 这些就是我们需要的COM端口. 如果您的modem按照标准串行端口工作,您能在sio1COM2找到它. 如果是这样, 您只需创建serial设备,而不必重建内核. cd到/dev目录,然后运行 MAKEDEV脚本 :

# sh MAKEDEV cuaa0 cuaa1 cuaa2 cuaa3

它会为您的系统创建串行(serial)设备. 如果modem设备连接在sio1接口(在DOS中称为COM2),那么您的modem将会是 /dev/cuaa1

21.4.2. 手动连接

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

# ppp

现在我们已经打开了ppp.

ppp ON example> set device /dev/cuaa1

设置modem设备,在本例子中是 cuaa1.

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/cuaa1
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 只有这两个状态.

21.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 中。 绝大多数情况下, 这个功能默认已经打开了。