跳过导航链接 | |
退出打印视图 | |
![]() |
在 Oracle Solaris 11.1 中使用 UUCP 和 PPP 管理串行网络 Oracle Solaris 11.1 Information Library (简体中文) |
有关如何解决 PPP 及 PPPoE 相关问题的信息,请参阅以下各节。
如果 PPP 链路处于活动状态,但远程网络上可以访问的主机很少,则可能表明存在网络问题。以下过程展示了如何隔离并修复影响 PPP 链路的网络问题。
noccp novj nopcomp noaccomp default-asyncmap
这些选项可提供最简单且未压缩的可用 PPP。尝试在命令行上将这些选项作为 pppd 的参数进行调用。如果可以访问先前无法访问的主机,则可在以下任一位置添加这些选项。
/etc/ppp/peers/peer-name,在 call 选项之后
/etc/ppp/options,确保这些选项全局适用
% pppd debug call peer-name
例如,在任一 PPP 配置文件中使用以下格式:
connect 'chat -v -f /etc/ppp/chatfile'
/etc/ppp/chatfile 代表聊天文件的名称。
观察调试日志。如果仍然无法访问远程主机,则 PPP 问题可能与网络相关。
某些组织会指定在本地网络内可识别但无法路由至 Internet 的内部 IP 地址。如果远程主机位于公司内,则必须设置名称到地址转换 (name-to-address translation, NAT) 服务器或代理服务器才能访问 Internet。如果远程主机不在公司内,则应向远程组织报告该问题。
# ndd -set /dev/ip ip_forwarding 1
有关 ndd 的更多信息,请参阅 ndd(1M) 手册页。
在 Solaris 10 发行版中,可以使用 routeadm(1M) 来代替 ndd(1M)。
# routeadm -e ipv4-forwarding -u
注 - ndd 命令没有持久性。使用该命令设置的值将在重新引导系统时丢失。routeadm 命令具有持久性。使用该命令设置的值将在重新引导系统后保留。
有关 netstat 的完整详细信息,请参阅 netstat(1M) 手册页。
有关更多信息,请参阅影响 PPP 的常见网络问题。
错误的名称服务配置会因无法解析 IP 地址而使应用程序无法运行。
可以使用 netstat -s 生成的消息修复下表中所示的网络问题。相关的过程信息,请参阅如何诊断网络问题。
表 7-2 影响 PPP 的常见网络问题
|
两个对等点无法成功建立链路,则表明出现了通信问题。有时,这些问题实际上是由于聊天脚本配置错误而导致的协商问题。以下过程说明如何清除通信问题。有关清除由于聊天脚本错误而导致的协商问题,请参见表 7-5。
% pppd debug call peer-name
为修复某些通信问题,可能需要从对等点获取调试信息。
下表描述了与如何诊断和修复通信问题过程的日志输出相关的症状。
表 7-3 影响 PPP 的一般通信问题
|
某些 PPP 问题可以追溯到 PPP 配置文件中的问题。以下过程说明如何确定并修复常见的配置问题。
% pppd debug call peer-name
下表介绍了与如何诊断 PPP 配置问题过程的日志输出相关的症状。
表 7-4 常见的 PPP 配置问题
|
调制解调器可能是拨号链路中出问题最多的区域。调制解调器配置问题的最常见指示是对等点没有响应。但是,要确定链路问题是否确实为调制解调器配置问题所致,可能会有些困难。
此外,调制解调器制造商所提供的文档和网站也提供了有关其特定设备问题的解决方案。以下过程有助于确定调制解调器配置错误是否会导致链路问题。
有关 ping 的完整详细信息,请参阅 ping(1M) 手册页。
如果收到较小的包,而较大的包被丢弃,则表明调制解调器存在问题。
% 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 日志时,输出中出现以下症状可以表明调制解调器配置出现错误。本地计算机可以接收对等点的信息,而对等点却无法接收本地计算机的信息。
对等点未发送任何 "recvd" 消息。
输出包含来自对等点的 LCP 消息,但链路失败,并显示本地计算机发送的 too many LCP Configure Requests 消息。
链路终止,并显示 SIGHUP 信号。
以下过程用于从 chat 获取调试信息和常见问题的清除建议。有关更多信息,请参阅常见的聊天脚本问题。
connect "/usr/bin/chat -v -f /etc/ppp/chat-script-name"
以下是使用 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
聊天脚本是拨号链路中容易出现问题的地方。下表列出了常见的聊天脚本错误,并提供了用于修复这些错误的建议。有关过程信息,请参阅如何获取聊天脚本的调试信息。
表 7-5 常见的聊天脚本问题
|
拨入服务器可能会因速度设置冲突而出现问题。以下过程有助于您确定引起串行线路速度产生冲突的链路问题。
下列行为可导致速度问题:
您通过 /bin/login 之类的程序调用了 PPP 并指定了线路速度。
通过 mgetty 启动了 PPP 并无意中提供了位速率。
pppd 将初始设置的线路速度更改为通过 /bin/login 或 mgetty 设置的速度。因此线路出现故障。
如果需要说明,请参见如何启用 PPP 调试。
在输出中检查有无以下消息:
LCP too many configure requests
此消息表明,为 PPP 配置的串行线路速度可能会出现冲突。
在这种情况下,pppd 会将初始配置的线路速度更改为 /bin/login 中指定的速度。
该操作还会导致串行线路速度冲突。
您可以使用 PPP 和标准的 UNIX 实用程序来确定 PPPoE 问题。如果怀疑链路问题是由 PPPoE 所致,可使用以下诊断工具获取故障排除信息。
以下示例显示了为具有 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
# 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
如果通过该诊断消息无法确定问题,请继续执行此过程。
有关 snoop 的信息,请参阅 snoop(1M) 手册页。
# snoop -o pppoe-trace-file
# 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