DHCP协议是什么?
动态主机设置协议(Dynamic Host Configuration Protocol, DHCP)是一个局域网的网络协议,使用UDP协议工作,主要有两个用途:给内部网络或网络服务供应商自动分配IP地址,给用户或者内部网络管理员作为对所有计算机作中央管理的手段。
DHCP 是怎么运作的?
假设多部计算机在同一个网域当中,也就是说,DHCP Server 与他的 Clients 都在同一个网段之内,可以透过软件广播的方式来达到相互沟通的状态。那么Client 藉由 DHCP Server 得到 IP 的程序为:
①若 Client 端计算机设定使用 DHCP 协议以取得网络参数时,则Client 端计算机在开机的时候,或者是重新启动网络卡的时候,会自动的发出 DHCPClient 的需求给网域内的每部计算机:这个时候,由于发出的讯息希望每部计算机都可以接受,所以该讯息除了网络卡的硬件地址(MAC)无法改变外,需要将该讯息的来源软件地址设定为0.0.0.0 ,而目的地址则为 255.255.255.255 ( Linux 会自动设定,无须考虑这个问题!)。网域内的其它没有提供DHCP 服务的计算机,收到这个封包之后会自动的将该封包丢弃而不回应;
②DHCP 主机响应讯息:如果是 DHCP 主机收到这个Client 的 DHCP 需求时,那么 DHCP 主机首先会针对该次需求的讯息所携带的 MAC与 DHCP 主机本身的设定值去比对,如果 DHCP 主机的设定有针对该 MAC 做静态IP (每次都给予一个固定的 IP )的提供时,则提供 Client 端相关的固定 IP 与相关的网络参数;而如果该讯息的MAC 并不在 DHCP 主机的设定之内时,则 DHCP 主机会选取目前网域内没有使用的IP (这个 IP 与设定值有关) 来发放给 client 端使用!此外,需要特别留意的是,在DHCP 主机发放给 Client 端的讯息当中,会附带一个『租约期限』的讯息,以告诉Client 端,IP 可以使用的期限有多长!
③Client 端接受来自 DHCP 主机的网络参数,并设定 Client自己的网络环境:当 Client 端接受响应的讯息之后,首先会以 ARP 封包在网域内发出讯息,以确定来自DHCP 主机发放的 IP 并没有被占用!如果该 IP 已经被占用了,那么 Client 对于这次的DHCP 信息将不接受,而将再次向网域内发出 DHCP 的需求广播封包;若该 IP 没有被占用,则client 可以接受 DHCP 主机所给的网络的参数,那么这些参数将会被使用于 client端的网络设定当中,同时, Client 端也会对 DHCP 主机发出确认封包,告诉 Server这次的需求已经确认!而 Server 也会将该信息记录下来;
④Client 端结束该 IP 的使用权:当 Client 开始使用这个DHCP 发放的 IP 之后,有几个情况下他可能会失去这个 IP 的使用权:
Client 端离线:不论是关闭网络接口( ifdown)、重新开机 ( reboot )、关机 ( shutdown ) 等行为,皆算是离线状态,这个时候Server 端就会将该 IP 回收,并放到 Server 自己的备用区中,等待未来的使用;
Client 端租约到期:前面提到 DHCP server 端发放的IP 有使用的期限, Client 使用这个 IP 到达期限规定的时间,就需要将 IP 缴回去!这个时候就会造成断线,而Client 也可以再向 DHCP 主机要求再次分配 IP!
以上就是 DHCP 这个协议在 Server 端与 Client 端的运作状态,由上面这个运作状态来看,可以明白,只要Server 端设定没有问题,加上 Server 与 Client 在硬件联机上面确定是 OK 的,那么Client 就可以直接藉由 Server 来取得上网的网络参数,当然啦,只要我们这些管理员能够好好的、正确的管理好我们的DHCP 。
===========================================================================================
下面,我们就做个LINUX下的DHCP服务器案例
给服务器配置静态IP地址:
输入命令:[root@localhost ~]# setup
出现如下界面:
选择Network configuration
选择编辑设备
选择eth0网卡
设置以上参数。
===========================================================================================
挂载REDHAT光盘:
[root@localhost ~]# mount /dev/cdrom /mnt/cdrom
===========================================================================================
配置YUM客户端:
[root@localhost ~]# vim /etc/yum.repos.d/rhel-debuginfo.repo
配置命令如下:直接粘贴进去就行了
[rhel-Server]
name=Red Hat Enterprise Server $releasever - $basearch - Debug
baseurl=file:///mnt/cdrom/Server
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
[rhel-VT]
name=Red Hat Enterprise VT $releasever - $basearch - Debug
baseurl=file:///mnt/cdrom/VT
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
[rhel-Cluster]
name=Red Hat Enterprise Cluster $releasever - $basearch - Debug
baseurl=file:///mnt/cdrom/Cluster
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
[rhel-ClusterStorage]
name=Red Hat Enterprise ClusterStorage $releasever - $basearch – Debug
baseurl=file:///mnt/cdrom/ClusterStorage
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
然后保存,退出。
===========================================================================================
安装DHCP服务器:
[root@localhost cdrom]# yum install -y dhcp
===========================================================================================
配置DHCP配置文件:
[root@localhost cdrom] # vim /etc/dhcpd.conf
进入底行模式输入:-r /usr/share/doc/dhcp- 3.0.5 /dhcpd.conf.sample
在VIM编辑器的插入模式做以上修改。
===========================================================================================
dhcp.conf文件详解:
/etc/dhcpd.conf通常包括三部分:parameters、declarations 、option。
1.DHCP配置文件中的parameters(参数):表明如何执行任务,是否要执行任务,或将哪些网
络配置选项发送给客户
参 数 解 释
ddns-update-style 配置DHCP-DNS 互动更新模式。
allow/igore client-updates 允许/忽略客户端机更新DNS记录。
default-lease-time 指定确省租赁时间的长度,单位是秒。
max-lease-time 指定最大租赁时间长度,单位是秒。
hardware 指定网卡接口类型和MAC地址。
server-name 通知DHCP客户服务器名称。
get-lease-hostnames flag 检查客户端使用的IP地址。
fixed-address ip 分配给客户端一个固定的地址。
authritative 拒绝不正确的IP地址的要求。
2.DHCP配置文件中的declarations (声明):用来描述网络布局、提供客户的IP地址等
声 明 解释
shared-network 名称 {....} 定义超级作用域。
subnet 网络号 netmask 子网掩码 定义作用域(或IP子网)
range 起始IP地址 终止IP地址 定义作用域(或IP子网)范围。
host 主机名{....} 定义保留地址
group {....} 定义一组参数
allow unknown-clients;deny unknown-client 是否动态分配IP给未知的使用者。
allow bootp;deny bootp 是否响应激活查询。
allow booting;deny booting 是否响应使用者查询。
filename 开始启动文件的名称. 应用于无盘工作站。
next-server 设置服务器从引导文件中装如主机名,应用
于无盘工作站。
3. DHCP配置文件中的option(选项):用来配置DHCP可选参数,全部用option关键字作为开
始
选 项 解 释
subnet-mask 为客户端设定子网掩码。
domain-name 为客户端指明DNS名字。
domain-name-servers 为客户端指明DNS服务器IP地址。
host-name 为客户端指定主机名称。
routers 为客户端设定默认网关。
broadcast-address 为客户端设定广播地址。
ntp-server 为客户端设定网络时间服务器IP地址。
time-offset 为客户端设定和格林威治时间的偏移时间,单位是秒。
netbios-nade-type 为客户端指定节点类型。
netbios-name-servers 为客户端指定WINS服务器的IP地址
nis-servers 为客户端指定NIS域服务器的地址
nis-domain 为客户端指定所属的NIS域的名称
注意:如果客户端使用的是视窗操作系统,不要选择"host-name"选项,即不要为其指定主机