28.3. PPP 连接的故障排除
本节将讲述通过 modem (调制解调器) 连接使用 PPP 时可能出现的问题。有些 ISP 会提供 ssword
提示符,而其它的可能会出现 password
; 如果没有根据情况的不同相应地编写 ppp 脚本,登录就会失败。诊断 ppp 最常用的方法是本节所述的手动进行连接。
28.3.1.检查设备节点
如果使用的是自定义内核,确保在其编译配置中包含下列配置:
device uart
默认的 GENERIC 内核中包含了 uart 设备,如果使用的是它的话就不需要额外的步骤。只要查看 dmesg 输出中是否有 modem 设备:
# dmesg | grep uart
这应该显示一些与 uart 设备有关的输出。这些就是我们需要的 COM 端口。如果 modem (调制解调器) 按照标准串行端口工作,它应该被列在 uart1 或 COM2 上。如果是这样,就不需要重建内核了。如果 modem 设备连接在 uart1 接口 (在 DOS 中称为 COM2 ),那么 modem 将会是 /dev/cuau1 。
28.3.2.手动连接
通过手动控制 ppp 来连接 Internet 是诊断连接及获知 ISP 处理 PPP 客户端方式的一个快速且简单的方法。让我们从命令行启动 PPP,在所有的例子中我们使用 example 表示运行 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
切换到“终端”模式以便手动控制调制解调器。
deflink: Entering terminal mode on /dev/cuau1
type '~h' for help
at
OK
atdt123456789
使用命令 at
初始化 modem ,然后使用 atdt
和 ISP 给你的号码进行拨号。
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
则表示连接由于某种原因被断开。
28.3.3.诊断排错
如果不能建立连接,使用set ctsrts off
将硬件流 CTS/RTS 转为关闭。这主要是在连接到一些具有 PPP 功能的终端服务器时,PPP在试图向通信链路写入数据时挂起,并等待一个可能永远不会出现的 Clear To Send(CTS)信号。当使用这个选项时,包括设置 accmap,因为可能需要它来打败依赖于从头到尾传递某些字符的硬件,大多数时候是 XON/XOFF。参考ppp(8)以了解关于这个选项的更多信息以及它的使用方法。
老式的调制解调器可能需要 set parity even
。默认情况下,奇偶校验被设置为无,但在老式调制解调器上,当流量大量增加时,用于错误检查。
PPP 可能不会返回到命令模式,这通常是一个谈判错误,ISP 正在等待谈判的开始。在这一点上,使用 ~p 将迫使 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