DHCP
DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是一个局域网的网络协议,它允许服务器自动地将IP地址和其他网络配置参数分配给网络中的计算机。DHCP极大地简化了网络管理,尤其是当大量设备需要接入网络时,因为它减少了手动配置每个设备的需求。
DHCP的工作原理
-
DHCP发现(DHCP Discover):当一个新的设备(如计算机、智能手机等)连接到网络时,它会广播一个DHCP发现消息,询问网络中的DHCP服务器它的IP地址和其他网络配置信息。
-
DHCP提供(DHCP Offer):网络中的DHCP服务器接收到发现消息后,会选择一个可用的IP地址,并通过一个DHCP提供消息将这个地址和其他网络配置信息(如子网掩码、默认网关、DNS服务器地址等)发送给客户端设备。
-
DHCP请求(DHCP Request):客户端设备接收到提供消息后,会选择一个(通常是第一个收到的)提供的配置,并通过一个DHCP请求消息向服务器确认这个选择。
-
DHCP确认(DHCP Ack):DHCP服务器接收到客户端的请求后,会发送一个DHCP确认消息,正式将IP地址和其他配置分配给客户端设备。此时,客户端设备就可以使用这个IP地址和其他配置信息接入网络了。
DHCP的优点
-
简化网络管理:DHCP减少了手动配置每个设备的需求,使得网络管理更加简单和高效。
-
提高IP地址利用率:DHCP服务器可以动态地分配和回收IP地址,从而提高了IP地址的利用率。
-
增强网络安全性:通过DHCP,管理员可以集中管理网络配置,包括设置IP地址租期、限制特定设备的网络访问等,从而增强了网络的安全性。
部署DHCP服务
使用yum安装。
bash
[root@vm1 ~]# yum -y install dhcp-server
# 查看配置文件
[root@vm1 ~]# cat /etc/dhcp/dhcpd.conf
#
# DHCP Server Configuration file.
# see /usr/share/doc/dhcp-server/dhcpd.conf.example #示例文档
# see dhcpd.conf(5) man page
#
[root@vm1 ~]#
bash
# 修改vm1的地址为192.168.6.254:
[root@vm1 ~]# ip a s ens160
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:50:56:36:45:08 brd ff:ff:ff:ff:ff:ff
altname enp3s0
inet 192.168.6.254/24 brd 192.168.6.255 scope global noprefixroute ens160
valid_lft forever preferred_lft forever
inet6 fe80::75c4:d3cf:7e18:ad85/64 scope link noprefixroute
valid_lft forever preferred_lft forever
[root@vm1 ~]#
修改配置文件
bash
[root@vm1 ~]# cat /etc/dhcp/dhcpd.conf
#
# DHCP Server Configuration file.
# see /usr/share/doc/dhcp-server/dhcpd.conf.example
# see dhcpd.conf(5) man page
#
subnet 192.168.6.0 netmask 255.255.255.0 {
range 192.168.6.100 192.168.6.200; ip地址的范围
option domain-name-servers 8.8.8.8; 指定dns服务器
option routers 192.168.6.254; 指定网关
option broadcast-address 192.168.6.255; 广播地址
default-lease-time 600; 默认租约时间
max-lease-time 7200; 最长租约时间
}
[root@vm1 ~]#
# 重启服务,防火墙放行服务
[root@vm1 ~]# systemctl restart dhcpd
[root@vm1 ~]# firewall-cmd --add-service=dhcp
[root@vm1 ~]# firewall-cmd --add-service=dhcp --permanent
vm2测试动态获取地址
bash
[root@vm2 ~]# firewall-cmd --add-service=dhcp --permanent
success
[root@vm2 ~]# firewall-cmd --add-service=dhcp
success
[root@vm2 ~]# ip a s ens160
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:50:56:34:73:08 brd ff:ff:ff:ff:ff:ff
altname enp3s0
inet 192.168.6.100/24 brd 192.168.6.255 scope global dynamic noprefixroute ens160
valid_lft 598sec preferred_lft 598sec
inet6 fe80::250:56ff:fe34:7308/64 scope link noprefixroute
valid_lft forever preferred_lft forever
[root@vm2 ~]# cat /etc/resolv.conf
# Generated by NetworkManager
search tj.a.com
nameserver 8.8.8.8
[root@vm2 ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.6.254 0.0.0.0 UG 100 0 0 ens160
192.168.6.0 0.0.0.0 255.255.255.0 U 100 0 0 ens160
192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
[root@vm2 ~]#
练习
要求:
-
Vm1启用dhcp服务,地址范围为192.168.6.1 -192.168.6.100,且排除ip 192.168.6.1
-
能够给vm2分配192.168.6.0/25网段的地址,且地址固定为192.168.6.66/25, 网关为192.168.6.1,dns为192.168.6.1
-
vm1使用unbound服务配置缓存dns,vm2获取dns后,验证缓存dns的加速效果
过程
准备两台虚拟机:vm1(ens160 192.168.6.1/25);vm2(ens160 dhcp动态获取地址)
bash
[root@vm1 ~]# cat /etc/dhcp/dhcpd.conf | grep -v ^# | grep -v ^$
subnet 192.168.6.0 netmask 255.255.255.128 {
range 192.168.6.1 192.168.6.100;
option domain-name-servers 192.168.6.1;
option routers 192.168.6.1;
option broadcast-address 192.168.6.127;
default-lease-time 600;
max-lease-time 7200;
}
host vm2 {
hardware ethernet 00:50:56:34:73:08;
fixed-address 192.168.6.66;
}
host reserved-address {
hardware ethernet 00:00:00:00:00:00;
fixed-address 192.168.6.1;
}
[root@vm1 ~]# systemctl restart dhcpd
[root@vm1 ~]# cat /etc/unbound/unbound.conf | grep 192.168.6
interface: 192.168.6.1
access-control: 192.168.6.0/25 allow
[root@vm1 ~]# systemctl restart unbound
# 在vm2中获取地址查看
[root@vm2 ~]# ip a s ens160
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:50:56:34:73:08 brd ff:ff:ff:ff:ff:ff
altname enp3s0
inet 192.168.6.66/24 brd 192.168.6.255 scope global dynamic noprefixroute ens160
valid_lft 598sec preferred_lft 598sec
inet6 fe80::250:56ff:fe34:7308/64 scope link noprefixroute
valid_lft forever preferred_lft forever
[root@vm2 ~]#