系统管理指南:网络服务

第 21 章 修复常见的 PPP 问题(任务)

本章包含对 Solaris PPP 4.0 的常见问题进行疑难解答的有关信息,具体包含以下主题:

此外,在 James Carlson 的《PPP Design, Implementation, and Debugging》以及澳大利亚国立大学的网站中,也提供了详细的 PPP 疑难解答建议。有关更多信息,请参见有关 PPP 的专业参考书籍有关 PPP 的 Web 站点

解决 PPP 问题(任务列表)

使用以下任务列表可快速访问有关常见 PPP 问题的建议和解决方案。

表 21–1 PPP 疑难解答任务列表

任务 

定义  

参考 

获取有关 PPP 链路的诊断信息 

使用 PPP 诊断工具获取用于疑难解答的输出。 

如何从 pppd 获取诊断信息

获取 PPP 链路的调试信息 

使用 pppd debug 命令生成用于疑难解答的输出。

如何启用 PPP 调试功能

对网络层常见问题进行疑难解答 

使用一系列检查来确定并修复与网络相关的 PPP 问题。 

如何诊断网络问题

对常见的通信问题进行疑难解答 

确定并修复影响 PPP 链路的通信问题。 

如何诊断和修复通信问题

对配置问题进行疑难解答 

确定并修复 PPP 配置文件的问题 

如何诊断 PPP 配置问题

对与调制解调器相关的问题进行疑难解答 

确定并修复调制解调器问题。 

如何诊断调制解调器问题

对与聊天脚本相关的问题进行疑难解答 

确定并修复拨出计算机的聊天脚本问题。 

如何获取聊天脚本的调试信息

对串行线路速度问题进行疑难解答 

确定并修复拨入服务器的线路速度问题。 

如何诊断和修复串行线路速度问题

对租用线路的常见问题进行疑难解答 

确定并修复租用线路的性能问题。 

修复租用线路问题

对与验证相关的问题进行疑难解答 

确定并修复与验证数据库相关的问题。 

诊断和修复验证问题

对 PPPoE 问题范围进行疑难解答 

使用 PPP 诊断工具获取用于确定并修复 PPPoE 问题的输出。 

如何获取 PPPoE 的诊断信息

PPP 疑难解答工具

PPP 链路通常出现以下三种主要故障:

确定 PPP 工作与否的最简单方法是在链路上运行命令。请对对等点网络中的主机运行 pingtraceroute 等命令,然后观察结果。但是,您应使用 PPP 和 UNIX 调试工具来监视所建立链路的性能,或排除有问题链路的故障。

本节说明如何从 pppd 及其关联的日志文件获取诊断信息。本章的其余各节将介绍借助 PPP 疑难解答工具可以发现和修复的 PPP 常见问题。

Procedure如何从 pppd 获取诊断信息

以下过程说明如何在本地计算机上查看链路的当前操作。

  1. 成为本地计算机的超级用户或承担等效角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。有关如何使用主管理员配置文件配置角色,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 将为 PPP 配置的串行设备作为参数,运行 pppd


    # pppd cua/b debug updetach
    

    以下示例说明了当 pppd 在前台运行时,生成的拨号链路和租用线路链路显示内容。如果在后台运行 pppd debug,生成的输出将发送到 /etc/ppp/connect-errors 文件。


示例 21–1 正常运行的拨号链路的输出


# pppd /dev/cua/b debug updetach

have route to 0.0.0.0/0.0.0.0 via 172.21.0.4

serial speed set to 230400 bps

Using interface sppp0

Connect: sppp0 <--> /dev/cua/b

sent [LCP ConfReq id=0x7b <asyncmap 0x0> <magic 0x73e981c8> <pcomp> <accomp>]

rcvd [LCP Ident id=0x79 magic=0x0 "ppp-2.4.0b1 (Sun Microsystems, Inc., Oct  6 

	2004 09:36:22)"]

Peer Identification: ppp-2.4.0b1 (Sun Microsystems, Inc., Oct  6 2004 09:36:22)

	rcvd [LCP ConfRej id=0x7b <asyncmap 0x0>]

sent [LCP Ident id=0x7c magic=0x0 "ppp-2.4.0b1 (Sun Microsystems, Inc., Sep 15 

	2004 09:38:33)"

sent [LCP ConfReq id=0x7d <magic 0x73e981c8> <pcomp> <accomp>]

rcvd [LCP ConfAck id=0x7d <magic 0x73e981c8> <pcomp> <accomp>]

rcvd [LCP ConfAck id=0x78 <magic 0xdd4ad820> <pcomp> <accomp>]

sent [LCP ConfAck id=0x78 <magic 0xdd4ad820> <pcomp> <accomp>]

sent [LCP Ident id=0x7e magic=0x73e981c8 "ppp-2.4.0b1 (Sun Microsystems, Inc., 

	Sep 15 2004 09:38:33)"]

sent [IPCP ConfReq id=0x3d <addr 0.0.0.0> <compress VJ 0f 01>]

rcvd [LCP Ident id=0x7a magic=0xdd4ad820 "ppp-2.4.0b1 (Sun Microsystems, Inc., 

	Oct  6 2004 09:36:22)"]

Peer Identification: ppp-2.4.0b1 (Sun Microsystems, Inc., Oct  6 2004 09:36:22)

rcvd [IPCP ConfReq id=0x92 <addr 10.0.0.1> <compress VJ 0f 01>

sent [IPCP ConfAck id=0x92 <addr 10.0.0.1> <compress VJ 0f 01>

rcvd [IPCP ConfNak id=0x3d <addr 10.0.0.2>]]

sent [IPCP ConfReq id=0x3e <addr 10.0.0.2> <compress VJ 0f 01>]

rcvd [IPCP ConfAck id=0x3e <addr 10.0.0.2> <compress VJ 0f 01>]

local  IP address 10.0.0.2

remote IP address 10.0.0.1


示例 21–2 正常运行的租用线路链路的输出


# pppd /dev/se_hdlc1 default-asyncmap debug updetach

pppd 2.4.0b1 (Sun Microsystems, Inc., Oct 24 2004 07:13:18) started by root, uid 0

synchronous speed appears to be 0 bps

init option: '/etc/ppp/peers/syncinit.sh' started (pid 105122)

Serial port initialized.

synchronous speed appears to be 64000 bps

Using interface sppp0

Connect: sppp0 <--> /dev/se_hdlc1

sent [LCP ConfReq id=0xe9 <magic 0x474283c6><pcomp> <accomp>]

rcvd [LCP ConfAck id=0xe9 <magic 0x474283c6><pcomp> <accomp>]

rcvd [LCP ConfReq id=0x22 <magic 0x8e3a53ff><pcomp> <accomp>]

sent [LCP ConfReq id=0x22 <magic 0x8e3a53ff><pcomp> <accomp>]

sent [LCP Ident id=0xea magic=0x474283c6 "ppp-2.4.0b1 (Sun Microsystems, Inc., Oct 

	22 2004 14:31:44)"]

sent [IPCP ConfReq id=0xf7 <addr 0.0.0.0> <compress VJ Of o1>]]

sent [CCP ConfReq id=0x3f <deflate 15> <deflate(old#) 15> <bsd v1 15>]

rcvd [LCP Ident id=0x23 magic=0x8e3a53ff "ppp-2.4.0b1 (Sun Microsystems, Inc., Oct 

	22 2004 14:31:44)"]

Peer Identification: ppp-2.4.0b1 (Sun Microsystems, Inc., Oct 22 2004 14:31:44)

rcvd [IPCP ConfReq id=0x25 <addr 10.0.0.1> <compress VJ Of 01>]

sent [IPCP ConfAck id=0x25 <addr 10.0.0.1> <compress VJ Of 01>]

rcvd [CCP ConfReq id=0x3 <deflate 15> <deflate(old#) 15 <bsd v1 15>]

sent [CCP ConfAck id=0x3 <deflate 15> <deflate(old#) 15 <bsd v1 15>]

rcvd [IPCP ConfNak id=0xf8 <addr 10.0.0.2>]

rcvd [IPCP ConfReq id=0xf7 <addr 10.0.0.2> <compress VJ Of 01>]

rcvd [CCP ConfAck id=0x3f <deflate 15> <deflate(old#) 15 <bsd v1 15>]

Deflate (15) compression enabled

rcvd [IPCP ConfAck id=0xf8 <addr 10.0.0.2> <compress VJ Of 01>]

local  IP address 10.0.0.2

remote IP address 10.0.0.1

Procedure如何启用 PPP 调试功能

以下任务说明如何使用 pppd 命令获取调试信息。


注 –

对于每台主机,只需执行一次步骤 1 到步骤 3。此后,可以继续执行步骤 4 以便为主机打开调试功能。


  1. 成为超级用户或承担等效角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。有关如何使用主管理员配置文件配置角色,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 创建日志文件以保存 pppd 的输出。


    # touch /var/log/pppdebug
    
  3. /etc/syslog.conf 中,为 pppd 添加以下 syslog 功能。


    daemon.debug;local2.debug       /var/log/pppdebug
    
  4. 重新启动 syslogd


    # pkill -HUP -x syslogd
    
  5. 使用以下 pppd 语法,为呼叫特定对等点打开调试功能。


    # pppd debug call peer-name 
    

    peer-name 必须是 /etc/ppp/peers 目录中的文件的名称。

  6. 查看日志文件的内容。


    # tail -f /var/log/pppdebug
    

    有关日志文件示例,请参见步骤 3

解决与 PPP 和 PPPoE 相关的问题

有关如何解决与 PPP 和 PPPoE 相关的问题的信息,请参阅以下各节。

Procedure如何诊断网络问题

如果 PPP 链路处于活动状态,但远程网络上几乎没有可以访问的主机,则表明可能存在网络问题。以下过程将说明如何确定并修复影响 PPP 链路的网络问题。

  1. 成为本地计算机的超级用户或承担等效角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。有关如何使用主管理员配置文件配置角色,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 关闭有问题的链路。

  3. 在配置文件中,通过为 PPP 配置添加以下选项以禁用所有可选协议:


    noccp novj nopcomp noaccomp default-asyncmap

    这些选项可提供最简单的、未被压缩的可用 PPP。请尝试在命令行上将这些选项作为 pppd 的参数进行调用。如果可以访问先前无法访问的主机,请在以下任一位置添加这些选项。

    • /etc/ppp/peers/peer-namecall 选项之后

    • /etc/ppp/options,确保这些选项可全局应用

  4. 呼叫远程对等点,然后启用调试功能。


    % pppd debug call peer-name
    
  5. 使用 chat-v 选项,获取聊天程序的详细日志。

    例如,在任何 PPP 配置文件中使用以下格式:


    connect 'chat -v -f /etc/ppp/chatfile'

    /etc/ppp/chatfile 表示聊天文件的名称。

  6. 使用 Telnet 或其他应用程序访问远程主机,以尝试重新生成该问题。

    观察调试日志。如果仍然无法访问远程主机,则 PPP 问题可能与网络相关。

  7. 检验远程主机的 IP 地址是否为已注册的 Internet 地址。

    某些组织会指定在本地网络内已知、但无法路由至 Internet 的内部 IP 地址。如果远程主机位于您公司内,则必须设置名称到地址转换 (name-to-address translation, NAT) 服务器或代理服务器,才能访问 Internet。如果远程主机位于您公司外,则应向远程组织报告该问题。

  8. 检查路由表。

    1. 检查本地计算机和对等点上的路由表。

    2. 检查位于从对等点到远程系统的路径中的所有路由器的路由表。另外,检查返回对等点的路径中的所有路由器的路由表。

      请确保中间路由器的配置正确。通常,在返回对等点的路径中,可能会发现问题。

  9. (可选的)如果该计算机为路由器,请检查可选功能。


    # ndd -set /dev/ip ip_forwarding 1
    

    有关 ndd 的更多信息,请参阅 ndd(1M) 手册页。

    在 Solaris 10 发行版中,可以使用 routeadm(1M) 来代替 ndd(1M)。


    # routeadm -e ipv4-forwarding -u
    

    注 –

    ndd 命令没有持久性。使用该命令设置的值将在重新引导系统时丢失。routeadm 命令则具有持久性。使用该命令设置的值将在重新引导系统后保留。


  10. 检查通过 netstat -s 和类似工具获取的统计信息。

    有关 netstat 的完整详细信息,请参阅 netstat(1M) 手册页。

    1. 在本地计算机上运行统计信息。

    2. 呼叫对等点。

    3. 观察 netstat -s 生成的新统计信息。有关更多信息,请参阅影响 PPP 的常见网络问题

  11. 检查 DNS 配置。

    错误的名称服务配置会因无法解析 IP 地址而使应用程序出现故障。

影响 PPP 的常见网络问题

您可以使用 netstat -s 生成的消息,来修复下表中所示的网络问题。相关过程信息,请参阅如何诊断网络问题

表 21–2 影响 PPP 的常见网络问题

消息 

问题 

解决方案 

IP packets not forwardable

本地主机缺少路由。 

在本地主机的路由表中添加缺失的路由。 

ICMP input destination unreachable

本地主机缺少路由。 

在本地主机的路由表中添加缺失的路由。 

ICMP time exceeded

两个路由器正在互相转发同一目标地址,从而使包来回传递,直到超出生存时间 (time-to-live, TTL) 值。 

使用 traceroute 查找路由循环的原因,然后与出现错误的路由器的管理员联系。有关 traceroute 的信息,请参阅 traceroute(1M) 手册页。

IP packets not forwardable

本地主机缺少路由。 

在本地主机的路由表中添加缺失的路由。 

ICMP input destination unreachable

本地主机缺少路由。 

在本地主机的路由表中添加缺失的路由。 

Procedure如何诊断和修复通信问题

两个对等点无法成功建立链路,则表明出现了通信问题。有时,这些问题实际上是由于聊天脚本配置错误而导致的协商问题。以下过程说明如何清除通信问题。有关清除由于聊天脚本错误而导致的协商问题,请参见表 21–5

  1. 成为本地计算机的超级用户或承担等效角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。有关如何使用主管理员配置文件配置角色,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 呼叫对等点。

  3. 呼叫远程对等点,然后启用调试功能。


    % pppd debug call peer-name
    

    为修复某些通信问题,可能需要从对等点获取调试信息。

  4. 在生成的日志中检查通信问题。有关更多信息,请参阅影响 PPP 的常见通信问题

影响 PPP 的常见通信问题

下表介绍了与如何诊断和修复通信问题过程的日志输出有关的症状。

表 21–3 影响 PPP 的常见通信问题

症状 

问题 

解决方案 

too many Configure-Requests

一个对等点无法接收另一个对等点的信息。 

检查以下问题: 

  • 计算机或调制解调器的布线可能出错。

  • 调制解调器配置的位设置可能不正确。或者,该配置可能中断了流量控制。

  • 聊天脚本可能出现故障。 在这种情况下,请参见表 21–5

pppd debug 输出显示 LCP 已启动,但更高级别的协议失败或显示出现 CRC 错误。

异步控制字符映射 (asynchronous control character map, ACCM) 的设置不正确。 

使用 default-async 选项将 ACCM 设置为标准的 FFFFFFFF 缺省值。首先,尝试在命令行上将 default-async 用作 pppd 的选项。如果该问题已解决,则将 default-async 添加到 /etc/ppp/options,或添加到 call 选项之后的 /etc/ppp/peers/peer-name

pppd debug 输出显示,IPCP 在启动后立即终止。

IP 地址配置可能不正确。 

  1. 检查聊天脚本以检验该脚本的 IP 地址是否正确。

  2. 如果聊天脚本正确,则请求对等点的调试日志,然后检查对等点日志中的 IP 地址。

链路显示性能很差。 

调制解调器的配置不正确,并出现流量控制配置错误、调制解调器设置错误以及 DTE 日志配置错误。 

检查调制解调器配置。 如有必要,调整该配置。 

Procedure如何诊断 PPP 配置问题

某些 PPP 问题可以追溯到 PPP 配置文件的问题。以下过程说明如何确定并修复常见的配置问题。

  1. 成为本地计算机的超级用户或承担等效角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。有关如何使用主管理员配置文件配置角色,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 呼叫远程对等点,然后启用调试功能。


    % pppd debug call peer-name
    
  3. 在生成的日志中检查配置问题。有关更多信息,请参阅常见的 PPP 配置问题

常见的 PPP 配置问题

下表介绍了与如何诊断 PPP 配置问题过程的日志输出有关的症状。

表 21–4 常见的 PPP 配置问题

症状 

问题 

解决方案 

pppd debug 输出包含错误消息 Could not determine remote IP address

/etc/ppp/peers/peer-name 文件未包含对等点的 IP 地址。对等点在链路协商期间没有提供 IP 地址。

在 pppd 命令行或 /etc/ppp/peers/peer-name 中,使用以下格式为对等点提供 IP 地址:

:10.0.0.10 

pppd debug 输出显示 CCP 数据压缩失败。该输出还指示链路被丢弃。

对等点的 PPP 压缩配置可能出现冲突。  

通过在 /etc/ppp/options 中添加 noccp 选项,对其中一个对等点禁用 CCP 压缩。

Procedure如何诊断调制解调器问题

调制解调器问题可能是拨号链路的主要问题。调制解调器配置问题的最常见指示是对等点没有响应。但是,在确定链路问题是否确实为调制解调器配置问题所致时,可能会遇到问题。

有关调制解调器疑难解答的基本建议,请参阅《系统管理指南:高级管理》中的“解决终端和调制解调器问题”。此外,调制解调器制造商所提供的文档和网站也提供了有关其特定设备问题的解决方案。以下过程有助于确定调制解调器配置错误是否会导致链路问题。

  1. 按照如何启用 PPP 调试功能中的说明,呼叫已打开调试功能的对等点。

  2. 显示生成的 /var/log/pppdebug 日志,以检查调制解调器配置是否错误。

  3. 使用 ping 在链路上发送各种大小的包。

    有关 ping 的完整详细信息,请参阅 ping(1M) 手册页。

    如果收到较小的包,而较大的包被丢弃,则表明调制解调器存在问题。

  4. 检查接口 sppp0 上的错误:


    % netstat -ni
    
    Name  Mtu  Net/Dest   Address      Ipkts    Ierrs Opkts    Oerrs Collis Queue 
    
    lo0   8232 127.0.0.0  127.0.0.1    826808   0     826808   0     0      0     
    
    hme0  1500 172.21.0.0 172.21.3.228 13800032 0     1648464  0     0      0     
    
    sppp0 1500 10.0.0.2   10.0.0.1     210      0     128      0     0      0
    

    如果接口错误随时间而增加,则调制解调器配置可能存在问题。

故障排除

显示生成的 /var/log/pppdebug 日志时,输出中出现以下症状可以表明调制解调器配置出现错误。本地计算机可以接收对等点的信息,而对等点却无法接收本地计算机的信息。

Procedure如何获取聊天脚本的调试信息

以下过程用于从 chat 获取调试信息和清除常见问题的建议。有关更多信息,请参阅常见的聊天脚本问题

  1. 成为拨出计算机的超级用户或承担等效角色。

    角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。有关如何使用主管理员配置文件配置角色,请参见《系统管理指南:基本管理》中的第 2  章 “使用 Solaris Management Console(任务)”

  2. 编辑要呼叫的对等点的 /etc/ppp/peers/peer-name 文件。

  3. -v 作为参数添加到 connect 选项中指定的 chat 命令。


    connect "/usr/bin/chat -v -f /etc/ppp/chat-script-name"
  4. 查看 /etc/ppp/connect-errors 文件中的聊天脚本错误。

    以下是使用 chat 出现的主要错误。


    Oct 31 08:57:13 deino chat[107294]: [ID 702911 local2.info] expect (CONNECT)
    
    Oct 31 08:57:58 deino chat[107294]: [ID 702911 local2.info] alarm
    
    Oct 31 08:57:58 deino chat[107294]: [ID 702911 local2.info] Failed

    该示例表明在等待 (CONNECT) 字符串时超时。如果 chat 失败,将从 pppd 获取以下消息:


    Connect script failed

常见的聊天脚本问题

聊天脚本是拨号链路中容易出现问题的地方。下表列出了常见的聊天脚本错误,并提供了用于修复这些错误的建议。有关过程信息,请参阅如何获取聊天脚本的调试信息

表 21–5 常见的聊天脚本问题

症状 

问题 

解决方案 

pppd debug 输出包含 Connect script failed

聊天脚本提供了用户名和口令。 


ogin: user-name

ssword: password

但是,您计划与之连接的对等点却没有提示此信息。 

  1. 从聊天脚本中删除登录名和口令。

  2. 再次尝试呼叫对等点。

  3. 如果仍然出现该消息,请致电 ISP。 然后,要求 ISP 提供正确的登录序列。

/usr/bin/chat -v 日志包含 "expect (login:)" alarm read timed out

聊天脚本提供了用户名和口令。 


ogin: pppuser

ssword: \q\U

但是,您计划连接到的对等点却没有提示此信息。 

  1. 从聊天脚本中删除登录名和口令。

  2. 再次尝试呼叫对等点。

  3. 如果仍然出现该消息,请致电 ISP。然后,要求 ISP 提供正确的登录序列。

pppd debug 输出包含 possibly looped-back

本地计算机或其对等点正在命令行上挂起,并且未运行 PPP。聊天脚本中包含未正确配置的登录名和口令。 

 

  1. 从聊天脚本中删除登录名和口令。

  2. 再次尝试呼叫对等点。

  3. 如果仍然出现该消息,请致电 ISP。 然后,要求提供正确的登录序列。

pppd debug 输出显示 LCP 已激活,但之后链路很快终止。

聊天脚本中的口令可能不正确。 

 

  1. 确保您持有正确的本地计算机口令。

  2. 检查聊天脚本中的口令。 如果不正确,请修复该口令。

  3. 再次尝试呼叫对等点。

  4. 如果仍然出现该消息,请致电 ISP。然后,要求 ISP 提供正确的登录序列。

对等点的文本以波浪号 (~) 开头。 

聊天脚本提供了用户名和口令。 


ogin: pppuser

ssword: \q\U

但是,您计划与之连接的对等点却没有提示此信息。 

 

  1. 从聊天脚本中删除登录名和口令。

  2. 再次尝试呼叫对等点。

  3. 如果仍然出现该消息,请致电 ISP。然后,请求正确的登录序列。

调制解调器挂起。 

聊天脚本使用以下行来强制本地计算机等待来自对等点的 CONNECT 消息:


CONNECT ”

如果您希望聊天脚本等待来自对等点的 CONNECT 消息,请使用以下行: 


CONNECT \c

聊天脚本以 ~ \c 结尾。

pppd debug 输出包含 LCP: timeout sending Config-Requests

聊天脚本使用以下行来强制本地计算机等待来自对等点的 CONNECT 消息:


CONNECT ”

如果您希望聊天脚本等待来自对等点的 CONNECT 消息,请使用以下行: 


CONNECT \c

聊天脚本以 ~ \c 结尾。

pppd debug 输出包含 Serial link is not 8-bit clean

聊天脚本使用以下行来强制本地计算机等待来自对等点的 CONNECT 消息:


CONNECT ”

如果您希望聊天脚本等待来自对等点的 CONNECT 消息,请使用以下行: 


CONNECT \c

聊天脚本以 ~ \c 结尾。

pppd debug 输出包含 Loopback detected

聊天脚本使用以下行来强制本地计算机等待来自对等点的 CONNECT 消息:


CONNECT ”

如果您希望聊天脚本等待来自对等点的 CONNECT 消息,请使用以下行: 


CONNECT \c

聊天脚本以 ~ \c 结尾。

pppd debug 输出包含 SIGHUP

聊天脚本使用以下行来强制本地计算机等待来自对等点的 CONNECT 消息:


CONNECT ”

如果您希望聊天脚本等待来自对等点的 CONNECT 消息,请使用以下行: 


CONNECT \c

聊天脚本以 ~ \c 结尾。

Procedure如何诊断和修复串行线路速度问题

拨入服务器可能会因速度设置冲突而出现问题。以下过程有助于您确定引起串行线路速度产生冲突的链路问题。

下列行为可导致速度问题:

由于 pppd 将初始设置的线路速度更改为通过 /bin/loginmgetty 设置的速度, 因此线路出现故障。

  1. 登录到拨入服务器。呼叫启用了调试功能的对等点。

    如果需要说明,请参见如何启用 PPP 调试功能

  2. 显示生成的 /var/log/pppdebug 日志。

    在该输出中检查有无以下消息:


    LCP too many configure requests

    此消息表明,为 PPP 配置的串行线路速度可能会出现冲突。

  3. 检查是否已通过 /bin/login 等程序调用 PPP,并检查设置的线路速度。

    在这种情况下,pppd 会将初始配置的线路速度更改为 /bin/login 中指定的速度。

  4. 检查用户是否已通过 mgetty 命令启动 PPP 并无意中指定了位速率。

    该操作还会导致串行线路速度冲突。

  5. 按如下所示,修复串行线路速度冲突问题:

    1. 锁定调制解调器的 DTE 速率。

    2. 不使用自动波特。

    3. 配置后不更改线路速度。

Procedure如何获取 PPPoE 的诊断信息

您可以使用 PPP 和标准的 UNIX 实用程序来确定 PPPoE 问题。如果您怀疑链路问题是由于 PPPoE 所致,请使用以下诊断工具获取疑难解答信息。

  1. 成为运行 PPPoE 通道的计算机(PPPoE 客户机或 PPPoE 访问服务器)的超级用户。

  2. 按照如何启用 PPP 调试功能过程中的说明,打开调试功能。

  3. 查看日志文件 /var/log/pppdebug 的内容。

    以下示例显示了使用 PPPoE 通道生成的部分链路日志文件。


    Sep  6 16:28:45 enyo pppd[100563]: [ID 702911 daemon.info] Plugin 
    
      pppoe.so loaded.
    
    Sep  6 16:28:45 enyo pppd[100563]: [ID 860527 daemon.notice] pppd 
    
      2.4.0b1 (Sun Microsystems, Inc.,
    
    Sep  5 2001 10:42:05) started by troot, uid 0
    
    Sep  6 16:28:46 enyo pppd[100563]: [ID 702911 daemon.debug] connect option:
    
       '/usr/lib/inet/pppoec 
    
    -v hme0' started (pid 100564)
    
    Sep  6 16:28:46 enyo pppd[100563]: [ID 702911 daemon.info] Serial connection established.
    
    Sep  6 16:28:46 enyo pppd[100563]: [ID 702911 daemon.info] Using interface sppp0
    
    Sep  6 16:28:46 enyo pppd[100563]: [ID 702911 daemon.notice] Connect: sppp0
    
       <--> /dev/sppptun
    
    Sep  6 16:28:46 enyo pppd[100563]: [ID 702911 daemon.debug] /etc/ppp/pap-secrets
    
      is apparently empty
    
    Sep  6 16:28:46 enyo pppd[100563]: [ID 702911 daemon.debug] /etc/ppp/chap-secrets
    
      is apparently empty
    
    Sep  6 16:28:46 enyo pppd[100563]: [ID 702911 daemon.debug] sent 
    
      [LCP ConfReq id=0xef <mru 1492> 
    
    asyncmap 0x0 <magic 0x77d3e953><pcomp><acomp>
    
    Sep  6 16:28:46 enyo pppd[100563]: [ID 702911 daemon.debug] rcvd 
    
      [LCP ConfReq id=0x2a <mru 1402>
    
    asyncmap 0x0 <magic 0x9985f048><pcomp><acomp 

    如果通过该调试输出无法确定问题,请继续执行此过程。

  4. 获取 PPPoE 的诊断消息。


    # pppd connect "/usr/lib/inet/pppoec -v interface-name"
    

    pppoec 将诊断信息发送到 stderr。如果您在前台运行 pppd,输出将显示在屏幕上。如果在后台运行 pppd,输出将发送到 /etc/ppp/connect-errors

    以下示例显示了协商 PPPoE 通道时生成的消息。


    Connect option: '/usr/lib/inet/pppoec -v hme0' started (pid 100564)
    
    /usr/lib/inet/pppoec: PPPoE Event Open (1) in state Dead (0): action SendPADI (2)
    
    /usr/lib/inet/pppoec: Sending PADI to ff:ff:ff:ff:ff:ff: 18 bytes
    
    /usr/lib/inet/pppoec: PPPoE State change Dead (0) -> InitSent (1)
    
    /usr/lib/inet/pppoec: Received Active Discovery Offer from 8:0:20:cd:c1:2/hme0:pppoed
    
    /usr/lib/inet/pppoec: PPPoE Event rPADO+ (5) in state InitSent (1): action SendPADR+ (5)
    
    /usr/lib/inet/pppoec: Sending PADR to 8:0:20:cd:c1:2: 22 bytes
    
    /usr/lib/inet/pppoec: PPPoE State change InitSent (1) -> ReqSent (3)
    
    /usr/lib/inet/pppoec: Received Active Discovery Session-confirmation from
    
       8:0:20:cd:c1:2/hme0:pppoed
    
    /usr/lib/inet/pppoec: PPPoE Event rPADS (7) in state ReqSent (3): action Open (7)
    
    /usr/lib/inet/pppoec: Connection open; session 0002 on hme0:pppoe
    
    /usr/lib/inet/pppoec: PPPoE State change ReqSent (3) -> Convers (4)
    
    /usr/lib/inet/pppoec: connected

    如果通过该诊断消息无法确定问题,请继续执行此过程。

  5. 运行 snoop。 然后将跟踪保存到文件。

    有关 snoop 的信息,请参阅 snoop(1M) 手册页。


    # snoop -o pppoe-trace-file
    
  6. 查看 snoop 跟踪文件。


    # snoop -i pppoe-trace-file -v pppoe

    ETHER: ----- Ether Header -----
    
    ETHER:
    
    ETHER: Packet 1 arrived at 6:35:2.77
    
    ETHER: Packet size = 32 bytes
    
    ETHER: Destination = ff:ff:ff:ff:ff:ff, (broadcast)
    
    ETHER: Source      = 8:0:20:78:f3:7c, Sun
    
    ETHER: Ethertype = 8863 (PPPoE Discovery)
    
    ETHER:
    
    PPPoE: ----- PPP Over Ethernet -----
    
    PPPoE:
    
    PPPoE: Version = 1
    
    PPPoE: Type = 1
    
    PPPoE: Code = 9 (Active Discovery Initiation)
    
    PPPoE: Session Id = 0
    
    PPPoE: Length = 12 bytes
    
    PPPoE:
    
    PPPoE: ----- Service-Name -----
    
    PPPoE: Tag Type = 257
    
    PPPoE: Tag Length = 0 bytes
    
    PPPoE:
    
    PPPoE: ----- Host-Uniq -----
    
    PPPoE: Tag Type = 259
    
    PPPoE: Tag Length = 4 bytes
    
    PPPoE: Data = Ox00000002
    
    PPPoE:
    
    .
    
    .
    
    .
    
    ETHER: ----- Ether Header -----
    
    ETHER:
    
    ETHER: Packet 5 arrived at 6:35:2.87
    
    ETHER: Packet size = 60 bytes
    
    ETHER: Destination = 8:0:20:78:f3:7c, Sun)
    
    ETHER: Source      = 0:2:fd:39:7f:7, 
    
    ETHER: Ethertype = 8864 (PPPoE Session)
    
    ETHER:
    
    PPPoE: ----- PPP Over Ethernet -----
    
    PPPoE:
    
    PPPoE: Version = 1
    
    PPPoE: Type = 1
    
    PPPoE: Code = 0 (PPPoE Session)
    
    PPPoE: Session Id = 24383
    
    PPPoE: Length = 20 bytes
    
    PPPoE:
    
    PPP: ----- Point-to-Point Protocol -----
    
    PPP:
    
    PPP-LCP: ----- Link Control Protocol -----
    
    PPP-LCP:
    
    PPP-LCP: Code = 1 (Configure Request)
    
    PPP-LCP: Identifier = 80
    
    PPP-LCP: Length = 18

修复租用线路问题

租用线路的最常见问题是性能差。在大多数情况下,您需要与电话公司共同来修复该问题。

表 21–6 常见的租用线路问题

症状 

问题 

解决方案 

链路未启动。 

可能是因为 CSU 双极违规 (CSU biopolar violation, CSU BPV)。链路一端设置用于 AMI 线路。而另一端设置用于 ESF 位–8 零替换 (bit–8 zero substitute, B8Z)。 

如果您位于美国或加拿大,则可以直接通过 CSU/DSU 的菜单修复此问题。有关详细信息,请查看 CSU/DSU 制造商所提供的文档。

如果位于其他地区,则提供商可能会负责修复 CSU BPV。 

链路性能差。 

当链路中有持续通信流时,pppd debug 输出显示发生了 CRC 错误。您的线路可能存在计时问题,这是由于电话公司和您的网络之间的配置错误所致。

联系电话公司以确保正在使用“循环计时”。 

在某些非结构化的租用线路上,可能必须提供计时。北美用户应使用循环计时。 

 

诊断和修复验证问题

下表介绍了常见验证问题的解决方案。

表 21–7 常见验证问题

症状 

问题 

解决方案 

pppd debug 输出显示消息:Peer is not authorized to use remote address address

您正在使用 PAP 验证,但远程对等点的 IP 地址不在 /etc/ppp/pap-secrets 文件中。

/etc/ppp/pap-secrets 文件中,在对等点的项后添加一个星号 (*)。

pppd debug 输出显示,LCP 启动,但在启动后很快终止。

对于特定的安全协议,数据库中的口令可能不正确。 

/etc/ppp/pap-secrets/etc/ppp/chap-secrets 文件中,检查对等点的口令。