DHCP的概念
DHCP(动态主机配置协议)是一个局域网的网络协议。指的是由服务器控制一段IP地址范围,客户机登录服务器时就可以自动获得服务器分配的IP地址和子网掩码。默认情况下,DHCP作为Windows Server的一个服务组件不会被系统自动安装,还需要管理员手动安装并进行必要的配置。
DHCP是在BOOTP(引导程序协议BOOTstrap Protocol)基础上发展而来,但BOOTP运行在相对静态(每台主机都有固定的网络连接)的环境中,管理员为每台主机配置专门的BOOTP参数文件,该文件会在相当长的时间内保持不变。DHCP从以下两方面对BOOTP进行了扩展:
DHCP加入了对重新使用的网络地址的动态分配和附加配置选项的功能,可使计算机仅用一个消息就获取它所需要的所有配置信息。
DHCP允许计算机动态地获取IP地址,而不是静态为每台主机指定地址。
DHCP与BOOTP比较
1.BOOTP的发展与特点
在计算机网络发展初期,由于磁盘昂贵,无盘工作站被大量使用,这些没有硬盘的主机通过BOOTROM启动并初始化系统,再通过BOOTP协议由服务器为这些主机设定配置信息。但在早期的BOOTP协议中,设定BOOTP服务器前必须实现获得客户机的硬件地址,而且硬件地址与IP地址时静态绑定的,即使无盘工作站并没有连接到网络,IP地址也不能被其他主机使用。
随着网络的发展,客户端主机发生变动,BOOTP无法提供灵活的重新分配其配置信息的机制。DHCP使用租约的概念解决了BOOTP的固有问题,动态的为客户机提供操作所需的所有信息。
2.DHCP的特点
优点:
1)解决客户端不会配置IP地址的问题
2)解决客户端配置IP地址错误的问题
3)解决客户端配置IP地址冲突的问题
4)解决客户端配置IP地址工作量大的问题
缺点:
1)不能发现其他DHCP分发的IP地址
2)不能发现客户端手动配置的IP地址
DHCP的工作原理
DHCP 服务器被动打开 UDP 端口 67,等待客户端发来的报文
DHCP 客户从 UDP 端口 68发送 DHCP 发现报文
1.DHCP DISCOVER阶段
DHCP客户端发送DHCP DISCOVER报文来发现DHCP服务器。由于DHCP客户端不知道DHCP服务器的IP地址,所以DHCP客户端以广播方式发送DHCP DISCOVER报文(目的IP地址为255.255.255.255),同一网段内所有DHCP服务器或中继都能收到此报文。
2.DHCP OFFER阶段
位于同一网段的DHCP服务器都会接收到DHCP DISCOVER报文,每个DHCP服务器上可能会部署多个地址池,服务器通过地址池来管理可供分配的IP地址等网络参数。服务器接收到DHCP DISCOVER报文后,选择跟接收DHCP DISCOVER报文接口的IP地址处于同一网段的地址池,并且从中选择一个可用的IP地址,然后通过DHCP OFFER报文发送给DHCP客户端。DHCP OFFER报文里面携带了希望分配给指定MAC地址客户端的IP地址及其租期等配置参数。
3.DHCP REQUEST阶段
DHCP客户端接收到DHCP OFFER报文后,以广播方式发送DHCP REQUEST报文,该报文中包含客户端想选择的DHCP服务器标识符和客户端IP地址。
4.DHCP ACK阶段
当DHCP服务器收到DHCP客户端发送的DHCP REQUEST报文后,DHCP服务器回应DHCP ACK报文,表示DHCP REQUEST报文中请求的IP地址分配给客户端使用。
DHCP服务器端配置
1.软件的安装
yum install -y dhcp
2.查看软件包安装的文件
rpm -ql dhcp
/etc/dhcp/dhcpd.conf …DHCP服务的配置文件
/var/lib/dhcpd/dhcpd.leases …DHCP服务的租约文件
3.编辑配置文件
vim /etc/dhcp/dhcpd.conf
subnet 10.5.5.0 netmask 255.255.255.224 {
range 10.5.5.26 10.5.5.30;
option domain-name-servers ns1.internal.example.org;
option domain-name “internal.example.org”;
option routers 10.5.5.1;
option broadcast-address 10.5.5.31;
default-lease-time 600;
max-lease-time 7200;
}
subnet:要分发IP地址的网段(自己要能够通信) netmask:要分发IP地址的子网掩码
range:分发IP地址池(在一个subnet下支持多个range) option domain-name-servers:dns服务器
option domain-name:指定搜索域 option routers:分发IP地址的网关 option
broadcast-address:分发的IP地址 default-lease-time:默认租约期
max-lease-time:最大租约期
****每一个参数后面要以分号(;)结束
4.关闭防火墙和selinux
systemctl stop firewalld …临时关闭防火墙关闭selinux
setenforce 0 …临时关闭selinux
5.启动服务
systemctl start dhcpd …启动服务
systemctl enable dhcpd …下次开机自启
6.客户端
要与dhcp服务器在同一个交换环境中重启网卡,并选择自动获取IP地址即可
7.查看租约文件
vim /var/lib/dhcpd/dhcpd.leases
lease 166.112.219.254 {
starts 1 2007/09/17 14:14:18;
ends 1 2007/09/17 20:14:18;
binding state active;
next binding state free;
hardware ethernet 00:0c:29:d9:2e:c9;
}
DHCP服务器端配扩展
vim /etc/dhcp/dhcpd.conf
给服务器分配固定的IP地址
为MAC地址为00:0c:29:d9:2e:b9的主机保留192.168.1.192这个IP地址
host dhcp-client {
hardware ethernet 00:0c:29:d9:2e:b9;
fixed-address 192.168.1.192;
}
DHCP配置
查看DHCP的监听端口
netstat -anplut | grep dhcpd
-a:显示所有的套接字
-n:不反向解析
-p:显示进程号
-l:显示监听端口
-u:显示udp协议
-t:显示tcp协议