ip地址变成169.254.x.x故障处理方法和过程仿真

这类情况,一般是ip冲突或者dhcp失败导致。

类似文档:无法上网问题排查过程(ip冲突导致)_wj31932的博客-CSDN博客

 这种情况后果是无法上网,arp缓存里查不到网关的mac地址,路由表里查不到默认路由。

ping其他地址显示发送失败,transmit failed. General failure

 原理说明:  

       169.254.0.0/16是链路本地地址是互联网协议地址仅用于本地网络(链接)或主机连接到的点对点连接的段内的通信。路由器不转发与链路本地地址的数据包。链路本地地址可以由管理员手动或由操作系统程序来分配。它们大多使用无状态地址自动分配。在IPv4中,[1],它们通常仅当地址配置的没有外部,状态机制存在,如动态主机配置协议(DHCP失败),或者当另一个初级配置方法未能实现(ip冲突)。

       网卡ip变成169.254.x.x,一种情况是是pc的网卡启动或者dhcp续租成功时,检测到环境中存在ip冲突,操作系统为保护起见分配的保留ip地址。此地址不是合法的地址,因此无法获取的网关的mac地址,无法实现上网等操作。路由器不响应这类消息的arp请求,这个地址无法通过路由器。

       另一种情况是dhcp功能打开,发出discover消息,没有得到应答消息,操作系统自动分配给pc网卡一个169.254.xx.xx的ip地址。

       windows操作系统,当发生dhcp获取ip或者插拔网线后,windows操作系统会用确定的ip进行ip冲突的检测,发出三次广播的arp包(源ip目的mac为空,此时尚未确定ip可用,所以为空),询问环境中是否存在相同的ip地址?若没有收到arp的reply消息,确定没有冲突,会发出免费的arp包(源ip和目的ip相同)的arp请求包,声明自己使用这个ip地址。免费arp发出后,会发出确定网关mac地址的arp广播包,获取到网关mac后,就周期性进入网关是否在线的arp单播探查消息,来确定网关在线。

      当检查到存在ip冲突时,已有ip主机回复自己mac地址,得到存在冲突后,网卡ip被置为169.254.xx.xx的无效ip地址,要求网关mac,网关不响应,此时,系统托盘的网卡标志位受限。

模拟如下:

pc的网口配置:

pc的mac地址是44-37-e6-8e-cf-88

插拔网线后的抓包显示如下:

单播arp包特征如下:

检测到有ip冲突的情况:

把网卡的ip修改为下面的192.168.205.10,已知环境中存在此ip,插上网线会有冲突发生。

pc的mac地址是44-37-e6-8e-cf-88。

插上网线,会弹出ip冲突的提示框。

系统托盘的网络标志会变成受限。

 

出现ip冲突的本地连接状态特征如下图:

       所以,当我们看到网卡本地连接状态出现两个自动配置的ipv4地址,而其中一个是169.254打头,另一个是自己设置的ipv4地址时,基本可以判断为ip冲突了。

抓包如下:

pc的mac地址是44-37-e6-8e-cf-88,但有一个mac地址为10-98-36-ab-76-91的设备有同样的ip地址,所以会响应这个arp请求。

检测到有ip冲突,将ip置为169.254.145.166,因为无法得到网关的mac地址,所以不能上网。

  pc使用169.254.145.166后的流程和正常ip一样,要检查是否有ip冲突,发出三次arp检查,源ip是169.254.145.166,并用此ip查询网关的mac。

 解决方法:出现设置为静态ip后导致ip变成169.254的情况,一般是ip冲突了,有人已经抢先使用了这个ip地址。改成其他不冲突的ip试一下。

设置为ip自动获取,dhcp失败导致的ip变成169.254的情况,相对ip冲突问题比较复杂,可能dhcp服务器没有收到discover消息,或者收到后没有处理,可以改成静态ip测试一下。

仿真过程如下:

pc的配置

插上网线,另一端接在一个交换机上,但上面没有开通dhcp服务器,后ip变成下面显示:

 

 

此时,因为dhcp失败,没有获得ip和网关dns的地址,所以没有出现用169.254的ip去申请网关mac地址的过程。

注意一点,linux环境网卡启动后不进行ip冲突的arp检测,直接应用设置的ip地址,会导致设置同样ip地址的pc出现ip冲突,开机或者插拔网线后,变成169.254.xx.xx。或者出现时通是不通的现象。

    若设置为自动获取ip地址的设备,而且dhcp服务器工作正常,当环境中存在ip冲突时,处理机制是:

设备通过dhcp的discover流程,收到offer消息获得ip,发起arp探查检查发现冲突了,客户端会发decline消息拒绝此ip,然后重新发起dhcp流程,直到获得可用ip地址。

 

可参考:无法上网问题排查过程(ip冲突导致)_wj31932的博客-CSDN博客里的详细描述。

  • 16
    点赞
  • 75
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
ip地址自动获取出现169.254.x.x时,多半是因为设备无法通过DHCP协议获取有效的IP地址。这种情况可能是由于网络连接问题或者DHCP服务器故障引起的。要解决这个问题,可以尝试以下几种方法: 1. 检查网络连接:确保设备的网络连接正常。可以通过检查网线是否插紧、无线网络是否正常连接等方式确认。 2. 重启设备:有时设备出现IP地址获取失败的情况,可以尝试通过重启设备来修复问题。重新启动后,设备将尝试重新获取IP地址。 3. 重置网络设置:如果设备仍然无法获取有效的IP地址,可以尝试重置网络设置。在Windows系统中,可以打开“控制面板”-“网络和共享中心”-“更改适配器设置”,找到对应的网络适配器,右键点击选择“属性”,然后在“本地连接属性”中找到“Internet协议版本4(TCP/IPv4)”,点击“属性”-“获取IP地址”选择“自动获取IP地址”,点击确定保存设置。 4. 检查DHCP服务器:如果多台设备都无法获取有效的IP地址,那么可能是DHCP服务器出现问题。可以联系网络管理员或服务提供商检查DHCP服务器的运行情况,确保其正常工作。 5. 手动设置IP地址:在临时解决问题的情况下,您也可以尝试手动设置一个有效的IP地址。在Windows系统中,可以通过打开“控制面板”-“网络和共享中心”-“更改适配器设置”,找到对应的网络适配器,右键点击选择“属性”,然后在“本地连接属性”中找到“Internet协议版本4(TCP/IPv4)”,点击“属性”-“使用下面的IP地址”,然后手动输入一个有效的IP地址、子网掩码和默认网关。 如果尝试以上方法后仍无效,可以考虑联系网络专业人员或厂商的技术支持进行进一步的故障排除和解决。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值