细说DHCP网络协议和如何搭建DHCP服务器

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了细说DHCP网络协议和如何搭建DHCP服务器相关的知识,希望对你有一定的参考价值。

 DHCP(Dynamic Host Configuration Protocol)中文意思:动态主机配置协议。是一个局域网里网络协议(应用层),是基于UDP(传输层)协议来实现客户机的IP(网络层)地址获取的。

用途:

   1. 用于局域网或者网络服务器供应商自动分配IP地址给用户

   2. 用于局域网管理员对所有电脑的管控。

  都知道我们获取IP地址有两种方式,一、静态指定,二、动态获取。我们到一个新的有网络的地方,连上网络后就会自动获取一个当前网络断中的一个唯一IP,这个IP在这段时间属于你的专属,除非网络管理员设定,否则在一定时间内这个IP地址都是你的。这个IP就是通过DHCP获得的。但是DHCP协议并不是这么简单的。


原理和工作方式(后面有具体演示供理解)
原理:

  DHCP是一种使网络管理员能够集中管理和自动分配IP网络地址的通信协议。在IP网络中,每个连接Internet的设备都需要分配唯一的IP地址。DHCP使网络管理员能从中心结点监控和分配IP地址。当某台计算机移到网络中的其它位置时,能自动收到新的IP地址。

  DHCP使用了租约的概念,或称为计算机IP地址的有效期。租用时间是不定的,主要取决于用户在某地连接Internet需要多久,不能让一个用户一直在某些网络资源却不用。通过较短的租期,DHCP能够在一个计算机比可用IP地址多的环境中动态地重新配置网络。DHCP支持为计算机分配静态地址,如某些特殊情况某些服务器需要静态IP,我们可以通过DHCP远程给他指定一个固定IP而不需要它自己来指定。


技术分享

工作方式:共分为四个阶段(客户机和DHCP服务器在一个网段,且只有一台DHCP服务器)(四个阶段均是通过广播来实现的)

  第一阶段:DHCP发现(DISCOVER)

   客服机通过68端口发送broadcast的UDP数据包,寻找DCHP服务器。此数据包源IP地址为0.0.0.0,目标IP地址为255.255.255.255;包中还包含客户机的MAC地址和计算机名。普通主机发现这个包会丢弃的这个数据包,只有DHCP服务器收到这个数据包才会进行接下的工作。

  第二阶段:DHCP提供(OFFER)

   DCHP服务器通过67端口收到broadcast后对针对获取到这个客服机的MAC地址做如下操作:

      1. 查看日志文件(/var/lib/dhclient/dhclient※-eth ※.leases),根据MAC地址确定此主机是否曾经获取过IP,曾经获取的IP是否有人使用。

      2. 查看配置文件(/etc/dhcpd/dhcpd.conf)中,是否给这个MAC地址指定了静态的IP地址。      

      3. 若前两项都没有,就根据配置文件(/etc/dhcpd/dhcpd.conf)文件的地址池等相关信息,随机选用当前空闲IP给客户机。

  第三阶段:DHCP请求(REQUEST)

   客户机收到DHCP服务器发来的配置信息,选择是否认可和使用当前网络参数。每个主机只能接收一份租约。

  第四阶段:DHCP确认(Acknowledge,ACK)

   服务器收到客户机的确认信息,会回送确认的响应数据包信息以确认客户端的使用

  如果DHCP服务器和客户机不在一个网段,却还是想通过DHCP服务器获取IP地址,这是我们就需要借助能允许DHCP中继转发端的,并能监听68端口路由器。具体过程简单描述一下。

  (1)   客服机发送DISCOVER的广播--->(2)  路由器监听到转发给DCHP服务器--->(3) DHCP服务器接收到客户机的广播后反馈OFFER给路由器--->(4) 路由器接收到OFFER转发给客户机--->(5) 客户机选择和确认参数,返回REQUEST--->(6) 路由器监听并转发REQUEST给DHCP服务器--->(7) DCHP服务器接收并回馈 ACK --->(8)路由器转发DHCP确认给客户机

  注意:在DCHP服务器当中引用了租约的概念,最大效率利用有效的IP地址。同时因此需要续约,续约的时间点是整个租约期的1/2时,当这次续约不成功时,会在剩余的租期的1/2(也就是整个租约期的3/4)再次发起续约请求。当这次续约还不成功时,会在剩余租期的1/2(也就是整个租约期的7/8)再次发送续约请求。若这次续约还是不能成功。则不再发送续约请求,当当前租约期到期后直接发送DISCOVER请求,重新获取一个IP地址的租约。

实例配置、配置文件解析(关闭iptables和seLinux)

yum install -y dhcpd

  需求:需要一天DHCP服务器,DHCP服务器的IP地址为192.168.1.254,NETMASK:255.255.255.0,route 192.168.1.1,可用IP地址池为192.168.1.2-192.168.1.253

[[email protected] ~]# yum install -y dhcp  ###通过yum安装dhcp服
[[email protected] ~]# rpm -qa dhcp  ###查询已安装的dhcp
dhcp-4.1.1-51.P1.el6.centos.x86_64 ###当前dhcp的版本号
[[email protected] etc]# cd /etc/dhcp/
[[email protected] dhcp]# ls
dhclient.d  dhclient-eth0.conf  dhcpd6.conf  dhcpd.conf
[[email protected] dhcp]# cat dhcpd.conf 
#
# DHCP Server Configuration file.
#   see /usr/share/doc/dhcp*/dhcpd.conf.sample ###这个配置文件是空的,让我们去这个路径下找。
#   see ‘man 5 dhcpd.conf‘
[[email protected] dhcp]# cp /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample /etc/dhcp/dhcpd.conf
[[email protected] dhcp]# vim /etc/dhcp/dhcpd.conf

这个配置文件详细的告诉了我们,怎么定义dhcp服务器参数。抽取部分描述一下。

  dhcp.conf 文件分为四个区域(注意每个区域内定义的参数后面都需要添加";",否则启动服务的时候就会失败,然后可以去/var/log/messages看错误了。

一、 定义dhcpd自身的工作属性,log-facility:日志facility。这块不需要修改,默认即可

二、 全局地址分配属性,作用于全局。 声明 { 参数 } 常用参数:

option domain-name "example.org";##修改/etc/hosts文件,默认域名,例如你这里写search google.com ,当你查找主机名,DNS系统会主动帮你在所要查找的主机名后加上这个域名后缀

option domain-name-servers ns1.example.org, ns2.example.org; ##修改/etc/resolv.conf。即nameserver 后面接DNS IP,特别注意设置参数最末尾为servers,末尾有s;

default-lease-time 600; ##默认租约时间,单位为秒

max-lease-time 7200; ##最大租约时间,单位为秒

ddns-update-style##DHCP可以通过ddns来更新主机名与IP对应关系。这次试验设置为none即可

    作用:定义所支持的DNS动态更新类型。

      none:表示不支持动态更新

      interim:表示DNS互动更新模式

      ad-hoc:表示特殊DNS更新模式

      因为 DHCP 客户端所取得的 IP 通常是一直变动的,所以某部主机的主机名与 IP 的对应就很难处理。此时 DHCP 可以透过 ddns 来更新主机名与 IP 的对应。

ignore client-updates ##客服端也可以通过dhcpd服务器来更DNS相关信息。暂时也将其设置为ignore

option routers ##设定路由器IP地址,routers记住要加s

option broadcasst-address 广播地址 <-- 设定广播地址而已。如果没有设定的话,系统应该会自动依据 class A, B, C 的原则来计算出广播地址。

三、子网配置:(生效范围只在这个设置的子网段中)

通常每个作用域通过一个subnet定义

subnet NETWORK_ADDR mask NETMASK {

参数

}

常用参数

rangge IP地址范围 <--e.g 192.168.1.1 192.168.1.254;

option routers IP地址 <-- 作用:为客户端指定默认网关

option subnet-mask 子网掩码 <--作用:设置客户端的子网掩码

四、主机配置:

通常为某特定MAC地址股东分配一个地址,只要这个MAC地址来申请,就给这个MAC地址这个IP地址

host "HOST ID" { <-- "HOST ID"是个标识,可以自定义。

参数

}

常用参数:

hardware ethernet MAC ; <--网卡类型(ethernet)和网卡MAC地址

fixed-address IP;<-- 指定的IP地址


  ok,接下来,开始实际配置了。dhcpd.conf 这个配置文件看过后,我们可以在将他的所有行注释掉,在写。也可以自己根据我上面提供的配置文件手动创建一个。我接下来就自己手工写一个。

技术分享

  注意 ";" 这个符号。。我启动几次出错都是,查看日志都是发现要么少了"" 这个符号,或者在汉字模式下输入的";"你看这个和前面那个是否一样。肯定不一样,所以切记切换到全英文下输入,谁叫这个是外国人写的。~~

技术分享

  出错就去/var/log/messages 查看关于dhcp的日志行。终于启动成功了。。我们最好还是把设置为开机启动,要是双网卡的伙伴们再去/etc/sysconfig/dhcpd文件看看是你需要用来作为DCHP服务器的网卡设置是否正确;
[[email protected] dhcp]# chkconfig --level 345 dhcpd  on
[[email protected] dhcp]# chkconfig --list dhcpd
dhcpd           0:off   1:off   2:off   3:on    4:on    5:on    6:off
[[email protected] dhcp]# cat /etc/sysconfig/dhcpd
# Command line options here
DHCPDARGS=
[[email protected] dhcp]# vim /etc/sysconfig/dhcp
# Command line options here
DHCPDARGS="eth0" #因为我有两块网卡,我讲网卡1设置为dhcp获取的端口。
  在看看67端口是否处于监听状态,和日志文件/var/log/messages

技术分享

技术分享

  OK,一切正常,接下来我们调整虚拟机设置。将所有的虚拟机均设置在这个网段下。

技术分享

  接下来我们去每个客户机进行操作,记得/etc/sysconfig/network-scripts/ifcfg-eth0下面的BOOTPHOTO=dhcp。还有记得查看68端口是否处于监听状态

技术分享

技术分享

  下面是/var/log/messages的日志文件,大家看这里是不是就印证了最前面讲的dhcp的工作原理的四个过程。还有/var/lib/dhcpd/dhcpd.lease里面的租约和主机名等等

技术分享

技术分享

在去看看/etc/resolv.conf,我们的DNS IP 地址和“你好吗,我很好”域名在吗?!

  记得我们还有设置静态ip的主机,我们再去瞧瞧。

技术分享


总结:

梳理一下过程,简单来说就是以下几步:

1.安装dhcp,并设置为开机启动

2.配置dhcp配置文件,确定地址池等相关参数

3.启动dhcp,并设置作用于那个网卡和检测日志文件确定是否出错。

4.将多台试验机放于一个相同网段,并设置客户机参数。

5.查看客户机IP是否设置成功,并检测服务器的日志文件。

注意:配置文件的修改,若是启动dhcp失败,查看日志文件。


本文出自 “11539909” 博客,请务必保留此出处http://11549909.blog.51cto.com/11539909/1851027

以上是关于细说DHCP网络协议和如何搭建DHCP服务器的主要内容,如果未能解决你的问题,请参考以下文章

如何快速安装DHCP服务器

计算机网络 网络层:给大家介绍下,这是我的IP,NAT和DHCP!(学习笔记)

如何在linux下搭建dhcp服务器?最关键的配置文件有哪几个?分别有啥用?一般在linux下搭

Linux 命令(195)—— dhclient 命令

Linux服务器搭建之DHCP服务器

Linux:DHCP服务器的搭建