如何使用 arpwatch 检测 IP 地址冲突

如何使用 arpwatch 检测 IP 地址冲突

我手动检测到了 IP 地址冲突,这是由我的错误造成的。我可以解决这个问题。但在解决之前,我想自动检测 IP 地址冲突。这样下次我就不必手动搜索了。

检测网络上的 IP 冲突 我发现 arpwatch 可以使用。

我发现http://www.linuxcommand.org/man_pages/arpwatch8.html 但没有示例。这对我没有帮助。

更多详细信息:

我有一个名为 Vbox1(一)的 Virtualbox 客户端,它是 Ubuntu 16.04 接口文件(路径 /etc/network/interfaces)是:

# interfaces(5) file used by ifup(8) and ifdown(8)
auto lo
iface lo inet loopback

auto enp0s3
iface enp0s3 inet static

dns-nameservers 192.168.1.70 192.168.1.1
address 192.168.1.66
# remove gateway see why : https://superuser.com/questions/1080675/set-virtualbox-network-for-ubuntu-16-04-client/1081588#1081588
#gateway 192.168.1.1  

Ping 到网关:

bernard@vBox1b-client:/var/lib$ ping 192.168.1.1
PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.
64 bytes from 192.168.1.1: icmp_seq=1 ttl=64 time=0.804 ms

检查MAC地址:

bernard@vBox1b-client:/$ ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
    link/ether 08:00:27:29:98:7c brd ff:ff:ff:ff:ff:ff
3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
    link/ether 08:00:27:19:c2:cc brd ff:ff:ff:ff:ff:ff
bernard@vBox1b-client:/$ 

因此 enp0s3 的 MAC 地址为:08:00:27:29:98:7c,enp0s8 的 MAC 地址为 08:00:27:19:c2:cc

检查除 127.0.0.1 和 192.168.1.66 之外的 IPv4 地址:

bernard@vBox1b-client:/$ ip -4 addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    inet 192.168.1.66/24 brd 192.168.1.255 scope global enp0s3
       valid_lft forever preferred_lft forever
3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    inet 10.0.3.15/24 brd 10.0.3.255 scope global dynamic enp0s8
       valid_lft 62134sec preferred_lft 62134sec
bernard@vBox1b-client:/$ 

其他 IP 地址是:10.0.3.15

检查 arp 192.168.1.66 应该返回无条目: bernard@vBox1b-client:/$ arp 192.168.1.66 192.168.1.66 (192.168.1.66) -- 无条目 bernard@vBox1b-client:/$ 这很好。

检查内容 /var/log/kern.log 中是否有 enp0s8 的消息:

... 7 月 24 日 12:53:20 vBox1b-client NetworkManager[8046]: [1469357600.7642] 域名“lan” 7 月 24 日 12:53:20 vBox1b-client NetworkManager[8046]: [1469357600.7847] dhcp4 (enp0s8): 状态更改为绑定 -> 绑定...

检查内容 /var/log/syslog.log 中是否有 enp0s8 的消息:VB-one 没有 syslog.log 文件

ssh 到服务器:

bernard@vBox1b-client:/$ ssh 192.168.1.65
ssh: connect to host 192.168.1.65 port 22: Connection timed out
bernard@vBox1b-client:/$ 

结果沒有回应。


在另一个名为 Vbox11(eleven)的 Virtualbox 上,也是 Ubuntu 16.04

使用接口文件

# interfaces(5) file used by ifup(8) and ifdown(8)
auto lo
iface lo inet loopback

auto eth1
iface eth1 inet static
dns-nameservers 192.168.1.70 192.168.1.1
address 192.168.1.66
# remove gateway see why : https://superuser.com/questions/1080675/set-virtualbox-network-for-ubuntu-16-04-client/1081588#1081588
#gateway 192.168.1.1 

一开始我确实使用了接口文件网关,现在没有了。这没什么区别。在这两种情况下,网关都无法访问。

无法 Ping 至网关:

bernard@vbox11:~$ ping 192.168.1.1
PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.
From 192.168.1.66 icmp_seq=1 Destination Host Unreachable 

bernard@vbox11:~$ ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
    link/ether 08:00:27:93:71:92 brd ff:ff:ff:ff:ff:ff
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
    link/ether 08:00:27:e7:1d:b9 brd ff:ff:ff:ff:ff:ff
bernard@vbox11:~$ 

因此,etho 的 MAC 地址为:08:00:27:93:71:92,eth1 的 MAC 地址为:08:00:27:e7:1d:b9

检查除 127.0.0.1 和 192.168.1.66 之外的 IPv4 地址:

bernard@vbox11:~$ ip -4 addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default 
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    inet 10.0.2.15/24 brd 10.0.2.255 scope global eth0
       valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    inet 192.168.1.66/24 brd 192.168.1.255 scope global eth1
       valid_lft forever preferred_lft forever
bernard@vbox11:~$ 

其他 IP 地址是:10.0.2.15

检查 arp 192.168.1.66 应该返回无条目: bernard@vbox11:~$ arp 192.168.1.66 192.168.1.66 (192.168.1.66) -- 无条目 bernard@vbox11:~$ 这很好。

检查内容 /var/log/kern.log 中是否有 enth0 的消息:

... 7 月 26 日 04:39:03 vbox11 内核:[312073.522007] IPv6:ADDRCONF(NETDEV_UP):eth0:链接未准备好 7 月 26 日 04:39:03 vbox11 内核:[312073.522021] IPv6:ADDRCONF(NETDEV_CHANGE):eth0:链接已准备好...

检查 /var/log/syslog.log 中 eth0 的内容:

... 7 月 25 日 12:00:39 vbox11 dhclient:eth0 上 10.0.2.15 的 DHCPREQUEST 到 10.0.2.2 端口 67 (xid=0x11a0ba6e) 7 月 25 日 12:00:39 vbox11 dhclient:来自 10.0.2.2 的 10.0.2.15 的 DHCPACK 7 月 25 日 12:00:39 vbox11 dhclient:绑定到 10.0.2.15 -- 37427 秒后续订。7 月 25 日 12:00:39 vbox11 NetworkManager[889]: (eth0): DHCPv4 状态已更改,续订 -> 续订...

ssh 到服务器:bernard@vbox11:~$ ssh 192.168.1.65 ssh:连接到主机 192.168.1.65 端口 22:连接超时 bernard@vbox11:~$

结果:无回应。

在 Virtualbox 服务器 (p5) 上

arp 192.168.1.66 应在服务器上返回结果:bernard@p5:~$ arp 192.168.1.66 Address HWtype HWaddress Flags Mask Iface 192.168.1.66 ether 08:00:27:e7:1d:b9 C eth0 bernard@p5:~$

这很好。


诊断概要:

  • VB-one 可以 ping 通主机 192.168.1.1 VB-eleven 则不行。VB-eleven 应该配置不正确,但该如何配置呢?
  • VB-one 的 Mac 地址是 08:00:27:29:98:7c 和 08:00:27:19:c2:cc,而 VB-eleven 的 Mac 地址是:08:00:27:93:71:92 和 08:00:27:e7:1d:b9,所以它们是不同的,这很好。
  • 除了 127.0.0.1 和 192.168.1.66 之外的其他 IPv4 地址:有。对于 VB-one:10.0.3.15,对于 VB-eleven:10.0.2.15
  • arp 162.168.1.66 在两个虚拟机上均未返回结果,但在服务器上返回结果。所以这很好
  • /var/log/kern.log 的结果在两个虚拟机上都不同。VB-one 有 syslog.log 的内容,而 VB-eleven 没有
  • ssh 到服务器无响应

因此,当两个 Virtualbox 客户端都在运行时,很明显 VB-one 和 VB-eleven 具有相同的 IP 地址:192.168.1.66

我必须使用哪个语句来查找这些重复的 IP 地址?

选择

我也尝试过使用 arp-scan 检测网络上的 IP 冲突但这对我来说也不起作用。

答案1

arpwatch如果它正在监听服务器正在监听的网络接口,则应该检测到 MAC 地址的变化。然后它会向配置的地址发送电子邮件,除非禁用此功能。

但是,如果其中一台服务器是从另一台服务器克隆而来,则它们可能具有相同的 MAC 地址。这将导致无法使用 ARP 进行检测。

检查每个服务器报告的 MAC 地址。如果相同,则需要更改其中一台机器的 MAC 地址,以便能够可靠地检测到问题。

在 Ubuntu/Debian 上arpwatch使用 进行配置/etc/default/arpwatch。数据库将位于/var/lib/arpwatch目录中。

如果两台服务器均已启动并使用相同的 MAC 地址,则您可能会遇到连接问题。

一些诊断步骤:

  • 从每个主机 ping 容器。从网关配置来看,这应该是 192.168.1.1。如果其中一个主机无法 ping 通,则其配置存在问题。
  • 检查两个系统各自报告的 MAC 地址。每个系统都应该有自己的ifconfig -a接口。ip link show
  • 检查两个系统各自报告的ifconfig -a或IP 地址。除了和之外,是否还有其他 IPv4 地址。ip -4 addr show127.0.0.1192.168.1.66
  • 检查两个系统和容器的输出arp 192.168.1.66。两个虚拟系统应该没有返回任何条目。容器应该有一个结果。
  • 检查/var/log/kern.log/var/log/syslog查找与接口相关的消息:eth0enp0s3
  • ssh从一个虚拟服务器到容器。检查 输出中的 IP 地址who am i。从另一个虚拟服务器重复此操作。

相关内容