DHCP部署
一、DHCP服务理论
动态主机配置协议(Dynamic Host Configuration Protocol,动态主机配置协议)
1. 其目的主要是为TCP/IP协议网络自动分配IP地址和相关参数(可分配的相关网络参数为主机的IP地址、子网掩码、广播地址、默认网关、DNS地址等)。
2. 工作在局域网的网络应用层协议,使用UDP协议工作。服务端监听67 客户端监听68
3. 主要作用:减轻管理员配置网络尤其是配置IP地址的压力,灵活、方便、快捷,也减轻了IP地址的使用浪费,避免IP地址冲突。
DHCP的分配方式
固定分配(不需要考虑租约问题)
手动分配
动态分配(使用完毕即释放)
DHCP四次交互原理
DHCP客户端通过和DHCP服务器的交互通讯以获得IP地址租约。为了从DHCP服务器获得一个IP地址,在标准情况下DHCP客户端和DHCP服务器之间会进行四次通讯。DHCP协议通讯使用端口UDP 67(服务器端)和UDP 68(客户端)进行通讯,UDP68端口用于客户端请求,UDP67用于服务器响应,并且大部分DHCP协议通讯使用广播进行。
第一阶段 DHCP DISCOVER
DHCP客户端(自动获取IP地址)进行初始化(DHCP客户端启动计算机、启用网络适配器或者连接到网络时);
DHCP客户端请求某个IP地址被DHCP服务器拒绝,通常发生在已获得租约的DHCP客户端连接到不同的网络中;
DHCP客户端释放已有租约并请求新的租约。
APIPA(自动专有IP地址,169.254.0.0/16),如果没有配置APIPA地址和备用IP地址,则DHCP客户端会每隔5分钟再发送DHCPDISCOVER广播消息,直到从DHCP服务器获取IP地址为止。
第二阶段 DHCP OFFER
所有接收到DHCP客户端发送的DHCPDISCOVER广播消息的DHCP服务器会检查自己的配置,
如果具有有效的DHCP作用域和富余的IP地址,则DHCP服务器发起DHCPOFFER广播消息来应答发起DHCPDISCOVER广播的DHCP客户端,此消息包含以下内容:
客户端MAC地址;
DHCP服务器提供的客户端IP地址;
DHCP服务器的IP地址;
DHCP服务器提供的客户端子网掩码;
其他作用域选项,例如DNS服务器、网关、WINS服务器等;租约期限等。
因此DHCP客户端没有IP地址,所以DHCP服务器同样使用广播进行通讯:
源IP地址为DHCP服务器的IP地址,而目的IP地址为255.255.255.255。同时,DHCP服务器为此客户保留它提供的IP地址,从而不会为其他DHCP客户分配此IP地址。
如果有多个DHCP服务器给予此DHCP客户端回复DHCPOFFER消息,则DHCP客户端接受它接收到的第一个DHCPOFFER消息中的IP地址。
第三阶段 DHCP REQUEST
当DHCP客户端接受DHCP服务器的租约时,它将发起DHCPREQUEST广播消息,告诉所有DHCP服务器自己已经做出选择,接受了某个DHCP服务器的租约。
在此DHCPREQUEST广播消息中包含了DHCP客户端的MAC地址、接受的租约中的IP地址、提供此租约的DHCP服务器地址等,
所有其他的DHCP服务器将收回它们为此DHCP客户端所保留的IP地址租约,以给其他DHCP客户端使用。
此时由于没有得到DHCP服务器最后确认,DHCP客户端仍然不能使用租约中提供的IP地址,所以在数据包中仍然使用0.0.0.0作为源IP地址,
广播地址255.255.255.255作为目的地址。
第四阶段 DHCP ACK
提供的租约被接受的DHCP服务器在接收到DHCP客户端发起的DHCPREQUEST广播消息后,
会发送DHCP ACK广播消息进行最后的确认,在这个消息中同样包含了租约期限及其他TCP/IP选项信息。
如果没有其他主机使用此IP地址,则DHCP客户端的TCP/IP使用租约中提供的IP地址完成初始化,从而可以和其他网络中的主机进行通讯。
至于其他TCP/IP选项,如DNS服务器和WINS服务器等,本地手动配置将覆盖从DHCP服务器获得的值。
租约到期
DHCP客户机重新登录,直接发起一个之前使用的IP地址的request请求,如服务器已分配,重新执行上述四阶段。
DHCP服务器将IP地址提供给DHCP客户端时,会包含租约的有效期,默认租约期限为8天(691200秒),
客户机租用的IP地址达到50%,就要更新租约,若服务器未回复,最大可以使用期限的87.5%,到达后客户机进行IP租用寻址,进行四个阶段
二、DHCP服务器的搭建
1. 安装配置
yum -y install dhcp-server //安装配置
配置方式
dhcp主配置文件:/etc/dhcp/dhcpd.conf
dhcp模板配置文件:/usr/share/doc/dhcp-4.2.5/dhcpd.conf.example
dhcp分配ip和租约记录文本配置文件:/var/lib/dhcpd/dhcpd.leases //租约调试记录
cp /usr/share/doc/dhcp-server/dhcpd.conf.example /etc/dhcp/dhcpd.conf //复制模板
vim /etc/dhcp/dhcpd.conf //更改主配置文件,完成DHCP服务器的设置
#47-55行
46 # A slightly different configuration for an internal subnet.
#地址池
47 subnet 192.168.10.0 netmask 255.255.255.0 {
48 range 192.168.10.20 192.168.10.30;
49 option domain-name-servers 192.168.10.100;
50 option domain-name "xiaok.org";
51 option routers 192.168.10.2;
52 option broadcast-address 192.168.10.255;
53 default-lease-time 36000;
54 max-lease-time 72000;
55 }
#DHCP绑定固定ip 76行为绑定者的MAC地址
75 host fantasia {
76 hardware ethernet 08:00:07:26:c0:a5;
77 fixed-address fantasia.example.com;
78 }
systemctl enable --now dhcpd #设置开机自启
systemctl start dhcpd #启动服务
ss -unl #查看dhcp监听地址
客户端测试注意将网卡改为自动获取ip
2. DHCP服务器的中继服务
通常情况下,DHCP只能在广播域使用,为了实现广播域外一定范围的DHCP服务,需要使用DHCP中继技术。
实验配置DHCP中继
环境:
DHCP服务器node-1:网卡NAT 192.168.10.100
DHCP中继服务器node-2:两张网卡分别为NAT和仅主机
NAT IP:192.168.10.110/24
仅主机IP:192.168.66.100
DHCP客户端node-3:网卡仅主机 192.168.66.120
中继服务器为新网卡添加地址
nmcli connection add con-name eth1 ifname eth1 type ethernet autoconnect yes ipv4.addresses 192.168.66.100/24
重启网卡
nmcli connection down eth1
nmcli connection up eth1
查看中继服务器的路由,并添加路由转发功能
route -n
echo "1" >/proc/sys/net/ipv4/ip_forward
将DHCP客户端2网卡改为仅主机(网段192.168.66.0/24)
修改网卡配置文件,地址为静态,注释掉dns 重启网卡
cd /etc/NetworkManager/system-connections
vim eth0.nmconnection
重启网卡 添加路由
nmcli connection reload
nmcli connection down eth0
nmcli connection up eth0
dhcp Server添加路由
ip r a 192.168.66.0/24 via 192.168.10.110
此时,可以保证客户端node-3和dhcpser间的连通性
客户端node-3网卡改为自动获取
中继器安装服务,开启dhcp推送
yum -y install dhcp-relay
dhcrelay 192.168.10.100
dhcp服务器改配置文件
vim /etc/dhcp/dhcpd.conf
46 # A slightly different configuration for an internal subnet.
47 subnet 192.168.10.0 netmask 255.255.255.0 {
48 range 192.168.10.20 192.168.10.30;
49 option domain-name-servers 192.168.10.100;
50 option domain-name "xiaok.org";
51 option routers 192.168.10.2;
52 option broadcast-address 192.168.10.255;
53 default-lease-time 36000;
54 max-lease-time 72000;
55 }
56 subnet 192.168.66.0 netmask 255.255.255.0 { #为66段增加地址池
57 range 192.168.66.20 192.168.66.30;
58 option domain-name-servers 192.168.10.100;
59 option domain-name "xiaok.org";
60 option routers 192.168.66.1;
61 option broadcast-address 192.168.66.255;
62 default-lease-time 36000;
63 max-lease-time 72000;
64 }
systemctl restart dhcpd #重启服务
客户端重启网卡
nmcli connection reload
nmcli connection down eth0
nmcli connection up eth0