发现问题:
没动过路由表信息,查看时却发现出现了一下的169.254.0.0的网络地址路由。
# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 172.16.1.254 0.0.0.0 UG 0 0 0 eth1
10.0.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 1002 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 1003 0 0 eth1
172.16.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
问题原因:
169.254.0.0原本是windows系统局域网环境下DHCP(Dynamic Host Configuration Protocol)服务在发生地址冲突时,产生的一个预设的ip地址网段。DHCP服务运行中就设置了地址冲突时的默认机制。
而对于linux也采用的这种机制,169.254.0.0存在,本事是无所谓的,因为不能在互联网上用。但是,169.254.0.0的出现,肯定是由于自己设置了IP地址而造成冲突产生的。
**
DHCP自动获取IP地址时的原理:
01.主机开启DHCP功能
02.主机会向交换网络中发送DHCP请求数据包(广播方式发送)
03.DHCP服务器接受到请求数据包,进行数据包响应
04.主机收到响应包配置地址信息,并回复DHCP确认包
05.DHCP服务器接收到数据包,会调整IP地址池信息
06.DHCP服务器根据租期时间信息,确认地址是否继续使用,否,将地址回收.分配给其他主机使用
**
解决办法:
linux线上环境:
在文件的末尾添加
# vim /etc/sysconfig/network
NOZEROCONF=yes
# systemctl restart network
VMware Workstation也会出现也一种情况:
一般发生在克隆多个主机时产生这种地址冲突问题,是由于两台以上的相同IP地址的虚拟机在运行,造成地址冲突,dhcp自动分配的一个地址段。
此时,关闭一台也不好使,因为默认机制其探测时间(Discover Time)是以1小时为分割线。
NE80E/40E的实现中,如果发现冲突的IP地址,那么在1小时以后我们可以对于此IP地址进行重新分配使用。当存在冲突IP地址时,且探测时间没有超过1小时,则执行命令reset dhcp server conflict all释放冲突IP地址。
解决办法:
1.关闭可能冲突的多个主机(route -n查看哪些主机有该地址就关机)才能释放该地址,单纯的重启网卡是不行的!!!
2.开启其中一台主机,重新设置一个全新的ip地址(必须全新!),为了让dhcp重新识别,地址池信息也自动更新,重启网卡生效。
3.将刚才设置的全新IP改成自己应该设置的IP,必须重启主机(重启网卡此时不生效)生效。
为什么?请看上面的DHCP默认机制。
4.依次开启其他的主机。查看地址是否生效。如果没有按照上面的方法继续设置生效为止。
懒人专用:睡一觉醒来什么都会好的!!!
为什么?请看上面的DHCP默认机制。