一起学DHCP系列(三)理解、APIPA

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://jeffyyko.blog.51cto.com/28563/162407

     这是《一起学DHCP》系列的第三节。

     上节中,我们提到了APIPA,这节里我们将详细讲解有关APIPA的相关知识点。当我们将网卡属性设置为自动获取后,如果客户端在一定时间内无法找到并从DHCP服务器或PPP协议获取到IP地址,那么系统就自动启用一种备选方案,也就是使用APIPA给客户端临时分配一个169.254.X.X的IP地址,具体范围是169.254.0.1—169.254.255.254,子网掩码均为255.255.0.0。这里的APIPA为Automatic Private IP Addressing的缩写,即为自动专用IP寻址, 当系统接入网络后,且长时间无法获取到IP地址,系统为了减少性能消耗(尽管这种消耗微乎其微),就会采取这种措施来避免永不休止的查找。这是一种应急的机制,作用并不是简单的分配一个IP,请注意这个名称最后的单词,IP Addressing,而并非IP Address。那这又有什么区别呢?稍后就会讲到。

我们先来看一个例子这里我模拟了一个客户端无法联系到DHCP服务器的场景,此时客户端获取到了一个169.254.X.X的IP地址。如下图:

1.jpg

这里请注意两个地方:

1、我使用的查询命令是ipconfig /all。大家都知道用这个命令可以把所有的重要参数都查询出来,包括IP地址、掩码、网关、DNS、MAC等等。但在上图中只有IP地址、掩码和MAC,并没有网关、DNS。原因是因为APIPA分配的网络信息只包含IP地址和子网掩码,比武其他。

2、请注意IP地址前的名称是“Autoconfiguration IP Address”,而不是正常情况下的“IP Address” 。从这点上我们也可以区别IP地址的来源。

还记得刚才那个问题吗?为什么DNS可以独立配置呢?其实也是出于这个的考虑。我们可以为APIPA手工设置一个DNS地址。还是刚才的环境,我们为这个地址

169.254.155.85配置一个DNS,1.1.1.1 。如下图:

 2.jpg

通过 ipconfig /all 查询。如下图:

3.jpg

可以看到,我们为这个地址设置的DNS生效了。那我们是否可以自己定义在这个IP呢?当然可以。在【备用配置】选项卡里,我们还可以手工设置IP地址。如下图:

4.jpg

别的信息我没有填写,其实都是一样的。通过这样的设置,其目的在于当DHCP服务器不可用,系统会将此地址分配给该网卡,而不会使用169.254这样的地址。

其实这个功能非常好用。如何使用?先来看一个场景,大家也一定都遇到过。

    有这么一个客户,在家时笔记本连接路由器并通过ADSL上网,为网卡设置了一个固定IP地址192.168.1.1。在公司,内网部署了DHCP,此时会从DHCP服务器获取一个10.0.0.10的IP,这样有两套不同的网络配置,如何做到两边都能顺利使用呢?通常的解决办法,或是手动修改地址,或是通过第三方软件辅助切换。但如果将192.168.1.1的IP设置在上图的选项中,那么在家的时候由于没有DHCP,则会自动使用这个地址,在公司,这个地址会被忽略掉,因为存在可用的DHCP服务器,客户端可以直接获取IP地址。这样一来用户就不用来回切换了,也不必使用第三方软件,基本可以做到无缝连接。有机会的话,还是希望大家可以试一下这个方法。

   我们再回到APIPA上来。对于默认分配的169.254这样的IP,和我们手工设置的有什么区别呢?大家千万不要看到网卡连接图标上有一个感叹号就觉得网络肯定有什么问题。其实不然,我们来做个测试就知道了。这样有两台主机,主机名分别是win2k3和XP2,都接在一个交换机上。由于网内没有DHCP服务器,自然都是通过APIPA获取IP地址。分别查看一下两台主机上的IP地址。如下图:

Win2k3:

5.jpg

XP2:

6.jpg

在XP2上PING一下Win2k3。如下图:

7.jpg

网络访问测试。如下图:

8.jpg

访问Win2k3的C盘。如下图:

9.jpg

可见,尽管是169.254之类的IP,但其实和我们手动设置的没有什么区别,只是似乎在一个局域网内这样的客户端的最大数量有一个限制,好像是要少于25台,这个我没有测试过,还没有这样的环境,所以无法得知这个限制是否存在。

我们也可以在注册表中将APIPA这个功能禁止掉,可以针对某个网卡,也可以针对全部的网卡。打开注册表后,请定位到以下位置:HKLM\System\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\这个下面会对应当前网卡的标识符,在相应的标记符下新增一个名为 IPAutoconfigurationEnabled 

的DWORD值,并将其值设为十六进制的0即可。修改完成后重启才能生效。如果想禁用全部网卡的这个功能,则在interfaces下增加相同的键值。关于禁用APIPA的方法算是个补充知识,稍作了解即可。

还记得之前提到过有关IP Addressing的问题吗?为什么这里是addressing 而不是address呢? 当默认使用APIPA获取一个169.254的地址后,系统并非就这样一直使用这个地址,而是会每隔一段时间就会向网内发送DHCP DISCOVER数据包,这个间隔时间大约是5分钟。在此期间,系统还会随机进行DHCP服务器的查询,如果查询到DHCP并获得了一个IP,那么就会将169.254的IP释放掉。从这里我们可以看到,APIPA提供的是一套冗余IP配置和寻址的结合方案,显然这里使用addressingaddress意义更广泛。我们从协议层面来加深一下理解:

主机启动后,就会发送DHCP Discover包查询DHCP。如下图:

10.jpg

很显然,由于没有找到DHCP服务器,所以就会得到169.254的IP,但并不表示以后都不在搜索DHCP了,默认情况下会每隔5分钟进行一次集中的查询,其余时间也会进程查询,但由于还有别的程序或者协议在运行,所以就显得不那么集中。如下图:

11.jpg

到此为止,有关APIPA相关的一些知识点就说完了,下一节会讲到DHCP服务器的安装和配置。

谢谢!

转自:http://jeffyyko.blog.51cto.com/28563/162407

原创文章,作者:s19930811,如若转载,请注明出处:http://www.178linux.com/1559

(1)
s19930811s19930811
上一篇 2015-03-25 10:59
下一篇 2015-03-25 11:08

相关推荐

  • DHCP服务

    dhcp server: DHCP:Dynamic Host Configuration Protocol     arp –> address resolving Protocol     &nbsp…

    Linux干货 2016-11-01
  • shell脚本进阶

    一、流程控制 过程式编程语言:顺序执行、选择执行、循环执行 1.1 条件语句 1.1.1 if条件选择语句  选择执行: (注意: if 语句可嵌套) v  单分支:if  判断条件;then           条件为真的分支代…

    Linux干货 2016-11-27
  • 第八周网络基础以及脚本联系

    1、请描述网桥、集线器、二层交换机、三层交换机、路由器的功能、使用场景与区别。 ![](http://i.imgur.com/5u2IMF8.png) 三层交换机:将路由技术和交换技术合二为一的技术,当对第一次数据流进行路由后,会产生一个MAC地址与IP地址相对应的映射表,当同样的数据流再次通过时,将根据映射表进行数据交换而不在进行路由。 路由器:工作于网络…

    Linux干货 2017-03-30
  • Centos7上安装Ansible和基础应用

    Ansible 简介 ansible是个什么东西呢?官方的title是“Ansible is Simple IT Automation”——简单的自动化IT工具。这个工具的目标有这么几项:自动化部署APP;自动化管理配置项;自动化的持续交互;自动化的(AWS)云服务管理。所有的这几个目标从本质上来说都是在一个台或者几台服务器上,执行一系列的命令而已。通俗的说…

    Linux干货 2016-04-15
  • 马哥教育网络班N22期+第8周课程练习

    1、请描述网桥、集线器、二层交换机、三层交换机、路由器的功能、使用场景与区别。 网桥:是连接两个局域网的基于MAC地址数据存储转发设备,工作于数据链路层集线器:所有端口处于同一个广播域和冲突域中,带宽共享,工作于物理层二层交换机:多端口网桥,一个端口一个冲突域,默认所有端口位于同一个广播域中,可以划分vlan,隔离广播域,带宽独享三层交换机:具有路由功能的二…

    Linux干货 2016-10-19
  • shuc之学习目标

    1,每天学习二小时 2,半年熟悉数据中心LINUX技术

    Linux干货 2016-10-23