前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >这次被我优雅的实践到了!

这次被我优雅的实践到了!

原创
作者头像
盐咔咔
发布2024-08-23 12:37:58
1220
发布2024-08-23 12:37:58

周末回了一趟老家,本来我家是两条光纤网络,对应两个Wi-Fi路由器,突然听我妈说有一个Wi-Fi最近不好用,当时我就想,作为一名"顶尖"程序员并同时兼任一名已经持证的网络工程师,连自己家的网络竟然都会出问题,这就好比在荆州城下说关云长不会用刀,就好比在许昌城下说曹孟德不会作诗,就好比......,实在是士可忍孰不可忍,顿时就来了兴趣,动手之前先确立目标:一小时内必须搞定!

首先确认下终端表现的具体问题

我们先定义正常的Wi-Fi代号为Wi-Fi-A,出现异常的Wi-Fi代号为Wi-Fi-B,当手机连接Wi-Fi-B时会显示"无IP分配",当电脑连上Wi-Fi-B时会显示IP地址为169.254.xxx.xxx但是访问部分网站正常

当另一台电脑连接Wi-Fi-B有线网时会显示一直在"获取地址中":

即使连接成功之后也看不到正常的IPv4地址:

分析问题,其实看到第一台电脑连接Wi-Fi-B的时候IP地址为169.254大致就可以判断出问题的原因。

当本机的IP地址显示为169开头时,这通常指示着一个特定的网络问题,主要是与DHCP(动态主机配置协议)的分配有关。具体来说,以169.254开头的IP地址是链路本地地址(也称为自动专用IP寻址或APIPA),这是由RFC 3927定义的。这类地址主要在DHCP客户端无法从DHCP服务器获得IP地址时自动生成,用于在本地网络中进行基本的通信。

为了在分析问题的过程中多学习一些,我们从头开始梳理,第一个问题:设备的IP地址从哪里来?为什么需要IP地址?

1 IP地址的缘由

随着互联网的发展,需要一种机制来唯一标识网络中的每台设备,以便实现设备间的通信。IP地址的诞生正是为了解决这一问题。

在技术上,早期的网络环境中,主机数量较少,人们可以通过主机名或物理地址来识别设备。但随着网络规模的扩大和主机数量的激增,这种方法变得不再可行。因此,需要一种统一且能够唯一标识设备的地址格式,即IP地址。

IP地址是基于TCP/IP协议(传输控制协议/互联网络协议)产生的。TCP/IP协议为互联网通信提供了基础框架,而IP地址则是该框架中用于标识设备的关键元素。

1.1 IP地址的主要作用

1)设备标识:IP地址可以唯一地标识互联网中的每个设备,包括主机、路由器、工作站等。这种唯一性确保了数据能够准确地发送到目标设备。

2)数据路由:IP地址在网络通信中起着路由的作用。当数据需要在网络中传输时,路由器会根据IP地址来确定数据的传输路径,确保数据能够按照正确的路径到达目标设备。

3)网络管理:通过IP地址,网络管理员可以对网络中的设备进行管理和监控。这包括配置网络设置、排查故障、优化网络性能等。IP地址使得网络管理员能够快速地定位到问题设备,并采取相应的解决措施。

4)访问控制:IP地址还可以用于区分不同设备的访问权限,实现网络安全机制。例如,通过IP地址过滤技术,可以限制某些设备对特定网络资源的访问,从而保护网络免受未经授权的访问和攻击。

5)地址解析:虽然IP地址在网络层是唯一的,但在数据链路层(如以太网)中,数据帧的传输是通过MAC地址进行的。因此,在实际发送IP报文时,还需要进行IP地址和MAC地址的匹配。这一过程通常由ARP(地址解析协议)完成。

综上所述,IP地址的缘由在于满足互联网通信中设备标识、数据路由、网络管理和访问控制等需求。而其作用则体现在这些方面,为互联网通信提供了坚实的基础。随着互联网的不断发展,IP地址的重要性也将日益凸显。

1.2 IP地址的构成

IP地址由“网络号”(Network ID)和“主机号”(Host ID)两部分组成。这两部分共同构成了一个完整的IP地址,用于标识网络中的每一台设备。

在IPv4中,根据地址的前几位的不同,IP地址被分为不同的类型,主要有A、B、C、D、E五类:

A类地址:范围从1.0.0.0到126.255.255.255,第一个字节为网络号,后三个字节为主机号。

B类地址:范围从128.0.0.0到191.255.255.255,前两个字节为网络号,后两个字节为主机号。

C类地址:范围从192.0.0.0到223.255.255.255,前三个字节为网络号,最后一个字节为主机号。

D类地址:范围从224.0.0.0到239.255.255.255,用于多播(Multicast)通信,即一组设备同时接收相同的数据。

E类地址:地址范围从240.0.0.0到255.255.255.255,保留用于未来发展和实验用途。

特殊地址

  • 0.0.0.0:在服务器中,表示本机上的所有IPv4地址;在路由中,表示默认路由。
  • 127.0.0.1:是一个特殊的回环地址(Loopback Address),用于本机测试,代表本机IP地址。
  • 255.255.255.255:是一个广播地址,用于向同一子网内的所有主机发送广播消息。
1.3 IPv4和IPv6

IPv4:是当前广泛使用的第四版互联网协议,使用32位地址空间。由于地址空间有限,IPv4总共可以分配约42亿个地址。表示方法主要是由四个十进制数表示,每个数范围为0-255,采用点分十进制表示法,如192.168.0.1。

IPv6:是IPv4的后继协议,旨在解决IPv4地址空间的限制和其他问题。IPv6使用128位地址空间,理论上可以分配约340万亿亿亿亿个地址,几乎提供了无限大的地址空间。表示方法由八个四位十六进制数表示,每个数范围为0-FFFF,采用冒号分隔的八进制表示法,如2001:0DB8:AC10:FE01::。此外,IPv6还允许使用缩写形式,如省略前导零和连续的零组。

2 设备的IP地址从哪里来?

动态分配DHCP方式):设备可以通过与部署在网络中的DHCP(动态主机配置协议)服务器交互来获得IP地址。每次设备通过DHCP方式获取的IP地址可能是不同的,这种方式也是动态的。

静态分配:手动分配IP地址。

3 DHCP简介

DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是一种网络协议,用于使网络中的设备能够自动获取其IP地址和其他相关配置信息,如子网掩码、默认网关、DNS服务器地址等。DHCP简化了网络管理,特别是当大量设备需要接入网络时,它允许这些设备从DHCP服务器自动获取配置,而无需手动配置每台设备。

DHCP的主要功能和优点包括

1)自动化配置:设备连接到网络时,会自动从DHCP服务器请求IP地址和其他网络配置信息,从而省去了手动配置的麻烦。

2)集中管理:网络管理员可以在DHCP服务器上集中管理所有设备的IP地址分配,包括分配、回收、续租等操作。

3)提高灵活性:由于IP地址和其他配置信息是由DHCP服务器动态分配的,因此可以更容易地适应网络变化,例如增加或减少网络中的设备。

4)节省IP地址:DHCP通过自动回收不再使用的IP地址,可以更有效地利用有限的IP地址资源。

5)安全性:DHCP支持一些安全特性,如DHCPv6中的隐私扩展(Privacy Extensions),可以防止用户的MAC地址在网络中泄露。

DHCP的工作流程大致如下

1)发现阶段:新接入网络的设备(称为DHCP客户端)在本地网络上发送DHCP DISCOVER消息,请求IP地址和其他配置信息。

2)提供阶段:网络上的DHCP服务器收到DHCP DISCOVER消息后,会发送DHCP OFFER消息作为响应,其中包含IP地址、子网掩码、默认网关、DNS服务器地址等配置信息。

3)选择阶段:如果有多台DHCP服务器响应,DHCP客户端会选择一个(通常是第一个)响应的服务器,并向该服务器发送DHCP REQUEST消息,确认选择。

4)确认阶段:被选中的DHCP服务器会发送DHCP ACK消息作为确认,完成IP地址和其他配置信息的分配。

5)重新配置或续租:DHCP客户端在租约到期前会发送DHCP REQUEST消息请求续租,或者如果其配置信息发生变化(如子网掩码更新),则会请求重新配置。

DHCP是现代网络中不可或缺的一部分,它极大地简化了网络管理,提高了网络的可扩展性和灵活性。

4 为什么DHCP的IP地址会被用完?

DHCP的IP地址池耗尽通常发生在多种场景下,这些场景主要与网络规模、设备数量、配置管理以及潜在的网络安全问题相关。以下是可能导致IP地址池耗尽的几个主要场景:

1)网络规模扩大:随着网络的不断扩展,新设备不断加入网络,如果DHCP服务器的IP地址池没有相应地增加,那么当新设备尝试从DHCP服务器获取IP地址时,可能会发现地址池已经耗尽。

2)IP地址分配不合理:在网络规划阶段,如果没有合理规划IP地址的分配,例如为较小的子网分配了过多的IP地址,或者为大型网络分配了过少的IP地址,都可能导致IP地址池在实际使用中迅速耗尽。

3)IP地址浪费:如果网络中存在大量不再使用的设备,但它们的IP地址没有被及时回收(例如,由于DHCP租期设置过长或设备没有正确地从网络中注销),这些地址将被浪费,从而减少了可用IP地址的数量。

4)攻击行为:在某些情况下,攻击者可能会通过发送大量的DHCP请求来耗尽IP地址池。这种攻击方式被称为DHCP耗尽攻击或DHCP泛洪攻击。攻击者通过伪造MAC地址或改变CHADDR字段来发送大量的DHCP Discover报文,导致DHCP服务器不断分配IP地址,直到地址池耗尽。

5)配置错误:DHCP服务器的配置错误也可能导致IP地址池耗尽。例如,如果DHCP服务器被配置为对特定的客户端或设备组分配静态IP地址,而这些地址没有被正确地从地址池中排除,那么这些地址在动态分配时仍然会被视为可用,从而导致地址池的有效容量减少。

6)设备故障:网络设备(如路由器、交换机或DHCP服务器)的故障也可能间接导致IP地址池耗尽。例如,如果DHCP服务器出现故障,它可能无法正确地管理IP地址的分配和回收,从而导致地址池的有效利用率降低。

5 解决问题

分析完出现问题的主要原因后,我们开始着手解决问题。

首先重启一下路由器,确保至少有一个设备能得到IP分配,最好是使用一台连接过路由器的设备,然后我们进入设备网关地址,登录管理页面,网关地址一般会在设备说明页标识,初始的账号和密码也会一并列出。

登录上设备后台之后我们看下局域网配置中的DHCP配置,发现一个很明显的问题:IP地址池的IP数量只有14个,虽然我家的设备数量一般不会超过14个,但是一旦某天来了很多客人都连接同一个Wi-Fi的话IP地址很可能不够用。

解决方式就是将IP地址池进行扩容:从192.168.1.2~192.168.1.15调整到192.168.1.2~192.168.1.100

然后我们重启路由器:

发现Linux设备马上就有了IP地址,就是扩大后的IP地址池范围内的,网络也马上回复了正常:

同时其他有问题的设备也都恢复了网络。

6 小总结

DHCP的IP地址池用完确实是可能导致IP地址显示为169开头的原因之一。当DHCP服务器的IP地址池耗尽,即所有可用的IP地址都已被分配出去时,新加入网络的设备将无法从DHCP服务器获得有效的IP地址,因此它们会自动生成一个以169.254开头的链路本地地址(APIPA地址)进行通信。

事后我分析了一下我家的大致网络拓扑,发现确实有问题的那一台路由器(图中右侧)设备数量很多,并且由于密码相对简单,也常被作为访客Wi-Fi,但按理说当设备租约过期后它的IP地址应该被释放掉,常驻的设备应该不到IP地址池中IP地址的总数量,但为什么还是有IP地址不够用的现象?

在网上查阅资料后发现可能有如下几个原因:

1)IP地址回收不及时

DHCP客户端在租约到期时通常会尝试续租,如果续租成功,则IP地址的租期会延长。然而,如果DHCP客户端在租约到期前未能成功续租,或者DHCP服务器未能及时响应续租请求,那么该IP地址理论上应该被释放回地址池。但在实际操作中,由于网络延迟、服务器负载过高等原因,可能导致IP地址回收不及时。

此外,当DHCP客户端关闭或离开网络时,如果没有正确地发送DHCP RELEASE报文来释放IP地址,那么该IP地址也可能不会立即被回收。

2)IP地址分配策略

DHCP服务器的IP地址分配策略也可能导致IP地址的快速耗尽。例如,如果DHCP服务器配置了较短的租约时间,并且网络中的设备数量较多,那么IP地址的分配和释放频率就会增加,从而导致IP地址池中的可用地址数量快速下降。

3)网络故障或配置错误

网络故障或DHCP服务器的配置错误也可能导致IP地址的分配和回收出现问题。例如,网络中的环路、DHCP服务器的配置冲突等都可能导致IP地址无法正确分配或回收。

针对这些问题,可以采取以下措施来缓解IP地址耗尽的情况:

  • 延长DHCP租约时间,减少IP地址的分配和释放频率。
  • 根据网络的实际需求来合理设置DHCP地址池的大小。
  • 定期检查和维护网络设备,确保DHCP服务器和网络设备的正常运行。
  • 使用静态IP地址分配方式为关键设备分配固定的IP地址,以减少对DHCP地址池的依赖。
  • 监控网络的IP地址使用情况,及时发现并解决IP地址耗尽的问题。

其实上面还有一个问题很值得探究,为什么本机的IPv4地址为169.254.xxx.xxx还是能访问部分网站?

当IP地址为169.254开头时,能够访问部分网站可能与IPv6地址的存在有关

现代操作系统和网络设备通常同时支持IPv4和IPv6两种网络协议。即使设备的IPv4地址是169.254开头的私有地址,无法直接访问公网,但如果该设备同时也被分配了有效的IPv6地址,那么它仍然可以通过IPv6协议访问支持IPv6的网站和服务。

许多现代设备都采用了IPv4和IPv6双栈配置,这意味着它们可以同时处理IPv4和IPv6流量。当IPv4地址无法使用时,设备可以自动切换到IPv6进行通信。

综上所述,当设备的IP地址为169.254开头时,它能够访问部分网站的原因可能是因为它同时也被分配了有效的IPv6地址,并且这些网站支持IPv6访问。然而,需要注意的是,并非所有网站和服务都支持IPv6,因此设备的互联网访问能力仍然可能受到限制。为了获得更全面的互联网访问能力,建议检查设备的网络配置和兼容性设置,并确保它们能够充分利用IPv6的优势。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 IP地址的缘由
    • 1.1 IP地址的主要作用
      • 1.2 IP地址的构成
        • 1.3 IPv4和IPv6
        • 2 设备的IP地址从哪里来?
        • 3 DHCP简介
        • 4 为什么DHCP的IP地址会被用完?
        • 5 解决问题
        • 6 小总结
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档