1 DHCP简介
DHCP(Dynamic Host Configuration Protocol),动态主机配置协议,是一个应用层协议。当我们将客户主机ip地址设置为动态获取方式时,DHCP服务器就会根据DHCP协议给客户端分配IP,使得客户机能够利用这个IP上网。
DHCP的前身是BOOTP协议(Bootstrap Protocol),BOOTP被创建出来为连接到网络中的设备自动分配地址,后来被DHCP取代了,DHCP比BOOTP更加复杂,功能更强大。后面可以看到,在用Wireshark过滤显示DHCP包,需要输入过滤条件BOOTP,而不是DHCP,但或许是因为我使用的Wireshark版本是比较旧的1.12.9,没有在新版本中尝试过,也许可以输入DHCP让其只显示DHCP包。
1.1 DHCP的实现
DHCP的实现分为6步,分别是:
-
发现阶段
在DHCP服务配置完成后,DHCP Client启动时,由于没有IP地址,会自动发送以discover的广播报文,源地址为0.0.0.0目的地址为255.255.255.255。网络上的所有支持TCP/IP的主机都会收到该DHCP Discovery报文,但是只有DHCP Server会响应该报文。 -
DHCP Server offer响应阶段
DHCP Server收到discover报文后,通过解析报文,查询dhcpd.conf配置文件,如果在地址池中能找到合适的IP地址,DHCP Server会给DHCP Client发送offer报文,告诉DHCP Client,该DHCP Server拥有资源,可以提供DHCP服务。 -
DHCP Client请求使用阶段
当DHCP Client收到offer报文时,知道在本网段中有可用的DHCP Server可以提供DHCP服务,因此,它会发送一个request请求报文,向该DHCP Server请求IP地址、掩码、网关、DNS等信息,以便登陆网络。 -
DHCP Server确认使用阶段(获得IP地址)
当DHCP Server收到DHCP Client发送的DHCP Request后,确认要为该DHCP Client提供的IP地址后,便向该DHCP Client响应一个包含该IP地址以及其他Option的报文,来告诉DHCP Client可以使用该IP地址了。然后DHCP Client即可以将该IP地址与网卡绑定。另外其他DHCP Server都将收回自己之前为DHCP Client提供的IP地址。 -
DHCP Client重新登录网络阶段
当DHCP Client重新登录后,发送一个以前的DHCP Server分配的IP地址信息的DHCP Request报文,当DHCP Server收到该请求后,会尝试让DHCP客户端继续使用该IP地址。并回答一个ACK报文。如果该IP地址无法再次分配给该DHCP Client后,DHCP回复一个NAK报文,当DHCP Client收到该NAK报文后,会重新发送DHCP Discovery报文来重新获取IP地址。 -
DHCP Client续约阶段
DHCP获取到的IP地址都有一个租约,租约过期后,DHCP Server将回收该IP地址,所以如果DHCP Client如果想继续使用该IP地址,则必须更新器租约。更新的方式就是,当当前租约期限过了一半后,DHCP Client都会发送DHCP Renew报文来续约租期。
2 DHCP-Server配置
2.1 关闭vmware workstation DHCP
依次点击:编辑–>虚拟网咯编辑器
点击:更改设置
依次选择:Vmnet8—>去掉"使用本地DHCP服务将IP地址分配给虚拟机–>确定"
2.2 安装DHCP-Server
yum install dhcp -y
2.3 配置DHCP-Server
主要的配置文件:/etc/dhcp/dhcpd.conf发现里面只有一些提示信息
备份配置
cp /etc/dhcp/dhcpd.conf{,.bak}
将模板文件内容导入到配置文件中,并修改配置
grep -Ev "^$|^#" /usr/share/doc/dhcp*/dhcpd.conf.example > /etc/dhcp/dhcpd.conf
[root@nginx-2 ~]# cat /etc/dhcp/dhcpd.conf
subnet 192.168.31.0 netmask 255.255.255.0 {
range 192.168.31.20 192.168.31.40;
option routers 192.168.31.2;
option broadcast-address 192.168.31.255;
default-lease-time 600;
max-lease-time 7200;
host break {
hardware ethernet 00:0c:29:f8:94:cf;
fixed-address 192.168.31.104;
}
}
配置文件含义
序号 | 内容 | 含义 |
---|---|---|
1 | subnet 192.168.31.0 netmask 255.255.255.0 { | 声明信息,指定作用域和子网 |
2 | range 192.168.31.20 192.168.31.40; | 指定动态IP地址的范围 |
3 | option routers 192.168.31.2; | 默认路由,网关地址 |
4 | option broadcast-address 192.168.31.255; | 广播地址 |
5 | default-lease-time 600; | 默认租约期限 |
6 | max-lease-time 7200; | 最大租约时间 |
7 | host break { | 本地主机配置 |
8 | hardware ethernet 00:0c:29:f8:94:cf; | 网卡绑定MAC地址 |
9 | fixed-address 192.168.31.104; | 设置网卡的固定的IP |
2.4 启动DHCP服务
systemctl enable --now dhcpd
2.5 查看服务端口状态
到此DHCP服务端配置已经完成
3 DHCP-Client配置
将BOOTPROTO设置成dhcp
启动网卡
ifup ens33
至此DHCP配置完成