我手动检测到了 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 show
127.0.0.1
192.168.1.66
- 检查两个系统和容器的输出
arp 192.168.1.66
。两个虚拟系统应该没有返回任何条目。容器应该有一个结果。 - 检查
/var/log/kern.log
和/var/log/syslog
查找与接口相关的消息:eth0
或enp0s3
。 ssh
从一个虚拟服务器到容器。检查 输出中的 IP 地址who am i
。从另一个虚拟服务器重复此操作。