多次 ping 失败 - 手动 ARP 似乎可以解决问题

多次 ping 失败 - 手动 ARP 似乎可以解决问题

我遇到了奇怪的问题。

我有一个在 centos 6 上运行的监控系统(类似于 nagios)

我监控许多节点,我们监控的大多数交换机都被赋予了不同的子网,以便为 DHCP 主机释放一些地址。

交换机在172.16.200.0/24 监控服务器是172.16.200.30/24 我的IP是172.16.1.250/16(ubuntu)

172.16.200.0/24 子网上的节点经常处于启动和关闭状态。但是,当我通过 SSH 连接到监控系统时,我可以暂时修复此问题,如下所示:

ping 172.16.200.35
PING FAIL
arping 172.16.200.35
OK
ping 172.16.200.35
PING SUCCESS

当这些交换机位于 172.16.1.0/24 子网时,它们运行正常,但现在它们运行不正常...有什么想法可以开始吗?

此外,我办公室里另一台运行 Windows 10 的机器可以完美访问所有内容,它是 172.16.1.91/16

抱歉,没有发布路由表。

我的电脑:

$ ip -4 a show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    inet 172.16.1.250/16 brd 172.16.255.255 scope global eth0
       valid_lft forever preferred_lft forever

$ ip r
default via 172.16.1.254 dev eth0 onlink 
169.254.0.0/16 dev eth0  scope link  metric 1000 
172.16.0.0/16 dev eth0  proto kernel  scope link  src 172.16.1.250 

监视系统:

# ip -4 a show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    inet 172.16.1.30/24 brd 172.16.1.255 scope global eth0
    inet 172.16.3.30/24 brd 172.16.3.255 scope global eth0:0
    inet 172.16.200.30/24 brd 172.16.200.255 scope global eth0

# ip r
172.16.3.0/24 dev eth0  proto kernel  scope link  src 172.16.3.30 
172.16.1.0/24 dev eth0  proto kernel  scope link  src 172.16.1.30 
172.16.200.0/24 dev eth0  scope link 
172.16.200.0/24 dev eth0  proto kernel  scope link  src 172.16.200.30 
169.254.0.0/16 dev eth0  scope link  metric 1002 
default via 172.16.1.254 dev eth0

答案1

第 2 层或第 3 层问题

我的评论有点说错了——我的意思是询问在 ARP 之前和之后都无法 ping 交换机/服务器的主机上的 ARP 表的内容。在某种程度上,我很好奇“之前”的 ARP 条目是否是无响应(失败)或 MAC 地址是否因 ARP 而发生变化。

要获取此信息,您可以使用以下命令:

 ip neigh show

或者已弃用的 arp -a

您可以将ip命令传递给特定接口(phy)以限制到该 NIC 的输出。

对于此类问题,您最有可能遇到的是第 2 层或第 3 层问题。这是一个非常简化的说法,但从非常宽泛的角度来看,您可以按以下方式考虑这两个层:

  • 第 2 层(数据链路层)是地址解析协议,用于将 IP 地址映射到物理 MAC 地址
  • 第 3 层(又称网络层)是基于 IP 的路由发生的地方。

物理层问题;第 1 层;涉及布线、NIC HW 等,并且通常无法通过 arping 重复修复自身,并且没有证据表明它是更高层的问题(TCP/UDP 或应用程序级)。

由于您现在说 ping 失败的 MAC 地址从一个“真实”MAC 地址更改为另一个,所以很可能您有重复的 IP 地址(或极不可能有“购买”的设备)重复的 MAC。

我认为下一步最好是对 LAN 上使用的 IP 和 MAC 地址进行盘点

生成网络图

使用nmapzenmap,GUI 前端它还为结果添加了一些视觉效果 - 我推荐这样做),运行以下命令来获取“问题”子网的拓扑:

 sudo nmap -sn -PR 172.16.200.0/24

如果您正在使用 zenmap,只需将该命令粘贴到 GUI 中的“命令”窗口中,然后点击“扫描”。

如果你对 nmap 完全不熟悉,以下是本次扫描的输出(在我无聊的家庭网络上),192.168.1.1/24

Starting Nmap 7.12 ( https://nmap.org ) at 2016-12-27 22:25 EST
Nmap scan report for 192.168.1.1
Host is up (0.00021s latency).
MAC Address: C4:04:XX:XX:XX:XX (Netgear)
Nmap scan report for 192.168.1.40
Host is up (0.0014s latency).
MAC Address: 28:92:XX:XX:XX:XX (Hewlett Packard)
...
(...skipping to bottom...)  
...
Nmap done: 256 IP addresses (19 hosts up) scanned in 3.72 seconds

这是不言自明的——输出将仅包含响应的主机及其 MAC 地址和 IP 地址。您可能只会从主机获得其中一个。

在 zenmap 中,您可以通过点击“拓扑”选项卡来获取可视化拓扑。默认情况下,它通常都聚集在一起,因此您可能需要点击“控件”按钮并调整布局才能使用。无论数据源是什么(视觉还是文本),都将其全部放在一起并进行查看:

  1. 任何重复的 IP 地址或 MAC 地址
  2. 任何缺失或意外的主机
  3. nmap 记录的任何错误

如果 /24 扫描没有发现任何异常,请扩大扫描范围以覆盖更多网络(/16 扫描将花费更长时间)。

如果您需要创建一个巨大的子网(/8),那么 ping 操作将变得非常耗时(等待 ~16M ping 超时...),您可以从 nmap 中删除 -sn 参数,只使用 -PR(即 arping)。

如果您在数据中找不到任何有用的内容,请尽可能多地更新您的问题(可能更新到第三方网站,如 pastebin,以使您的问题可读)。

相关内容