我遇到了奇怪的问题。
我有一个在 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 地址进行盘点
生成网络图
使用nmap(zenmap,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 中,您可以通过点击“拓扑”选项卡来获取可视化拓扑。默认情况下,它通常都聚集在一起,因此您可能需要点击“控件”按钮并调整布局才能使用。无论数据源是什么(视觉还是文本),都将其全部放在一起并进行查看:
- 任何重复的 IP 地址或 MAC 地址
- 任何缺失或意外的主机
- nmap 记录的任何错误
如果 /24 扫描没有发现任何异常,请扩大扫描范围以覆盖更多网络(/16 扫描将花费更长时间)。
如果您需要创建一个巨大的子网(/8),那么 ping 操作将变得非常耗时(等待 ~16M ping 超时...),您可以从 nmap 中删除 -sn 参数,只使用 -PR(即 arping)。
如果您在数据中找不到任何有用的内容,请尽可能多地更新您的问题(可能更新到第三方网站,如 pastebin,以使您的问题可读)。