Linux学习130 dhcp服务简介
一、DHCP:
1、把一个主机接入TCP/IP网络,要为其配置哪些网络参数:
a、相应参数
IP/mask
Gateway
DNS Server
Wins Server,NTP Server
b、参数配置方式:
静态指定
动态分配:
bootp:boot protocol 引导协议,后来才发展为dhcp。早期的无盘工作站就是用的这种协议。
dhcp:引入了“租约”的bootp;也可以实现为特定主机保留某固定地址
2、DHCP:动态主机配置协议
a、arp:address resolving protocol :地址解析协议
IP --> MAC
b、rarp:reverse arp :反向地址解析协议
MAC --> IP
c、工作流程
(1)、Client:dhcp discover :客户端发dhcp discover 报文,即客户端问网络中有没有dhcp服务器,如果有的话请给我提供相应的信息
(2)、Server:dhcp offer(IP/mask,gw,...):dhcp服务器给客户端发送相应的配置信息
lease time:租约期限。即这个配置什么时候到期。
(3)、Client:dhcp request 。客户端确认使用哪台DHCP server的配置,即假如网络中有多台dhcp服务器,那么谁的报文先到达客户端客户端就用哪一个的配置,然后客户端再反馈确认信息
(4)、Server:dhcp ack 。服务端确认客户端发出的信息。
d、续租
(1)、一般租约期限到达一半的时候就会续租了,而不是直接到期后才续租。如果续租失败那么还是会继续租用,因为他租用的时间还没有到期。
(2)、续租是单播给dhcp服务器的
客户端会先发dhcp request给服务端
续租成功的话dhcp服务器会发ack给客户端
如果服务器端不租给你了会返回 dhcp nak 报文给客户端
如果客户端续租失败那么他就只能再重新广播dhcp discover报文看看还有哪些dhcp服务器会租用地址给她了。
e、CentOS:实现dhcp服务
(1)、dhcp(ISC,named):ISC提供的dhcp包只能提供dhcp服务,named提供dns服务
(2)、dnsmasq:dhcp && dns 可以提供dhcp服务和dns服务
(3)、dhcp服务安装
dhcpd:dhcp服务
dhcrelay:中继服务(一般不会和dhcp服务一起启用)
f、监听的端口
服务端监听端口:67/UDP
客户端监听端口:68/UDP ,如果你把网卡设置成的dhcp模式你就能看到我们的UDP端口68已经启动了。
3、dhcp安装(我们dhcp服务器也需要在分配的IP所在的子网中,否则无法分配成功,即如果我们分配的子网为192.168.10.0那么我们的dhcp服务器也需要在此子网中)
a、以192.168.10.41为例,我们首先安装dhcp服务
[root@node1 /]# yum install -y dhcp
b、我们来配置配置文件并启动服务
[root@node1 dhcp]# cat /etc/dhcp/dhcpd.conf option domain-name "node1"; #dns域的名称为node1 option domain-name-servers 192.168.10.41; #DNS服务器的地址,此处写的是本机,也可以不用是本机,只要是互联网上的DNS服务器地址都可以 default-lease-time 43200; #默认租约期限,这儿是43200秒 max-lease-time 86400; #最长租约期限,此处是一天一夜,也就是86400秒 log-facility local7; subnet 192.168.10.0 netmask 255.255.255.0 { range 192.168.10.150 192.168.10.200; #定义地址列表 }
[root@node1 dhcp]# systemctl restart dhcpd [root@node1 dhcp]# netstat -anptu |grep dhcp udp 0 0 0.0.0.0:67 0.0.0.0:* 9211/dhcpd
c、我们找一台主机尝试获取地址,可以看到可以获取到,并且该主机上的udp client端服务68也启动了
d、我们也可以在客户端通过命令来获取IP信息,通过 dhclient -d 命令即可,他的意思是将dhclient命令运行在前台,我们可以看到他也可以获取到地址
[root@node2 iperf-3.0.6]# dhclient -d Internet Systems Consortium DHCP Client 4.2.5 Copyright 2004-2013 Internet Systems Consortium. All rights reserved. For info, please visit https://www.isc.org/software/dhcp/ Listening on LPF/ens37/00:0c:29:d3:d4:11 Sending on LPF/ens37/00:0c:29:d3:d4:11 Listening on LPF/ens33/00:0c:29:d3:d4:07 Sending on LPF/ens33/00:0c:29:d3:d4:07 Sending on Socket/fallback DHCPDISCOVER on ens37 to 255.255.255.255 port 67 interval 4 (xid=0x5d205099) DHCPDISCOVER on ens33 to 255.255.255.255 port 67 interval 4 (xid=0x527d12af) DHCPREQUEST on ens33 to 255.255.255.255 port 67 (xid=0x527d12af) DHCPOFFER from 192.168.10.41 DHCPACK from 192.168.10.41 (xid=0x527d12af) bound to 192.168.10.150 -- renewal in 16675 seconds. DHCPDISCOVER on ens37 to 255.255.255.255 port 67 interval 10 (xid=0x5d205099)
e、现在我们将我们dhcp中分配的网关添加为192.168.10.253,然后可以看到我们客户端也能获取到网关
(1)、server端配置文件
[root@node1 ~]# cat /etc/dhcp/dhcpd.conf option domain-name "node1"; #dns域的名称为node1 option domain-name-servers 192.168.10.41; #DNS服务器的地址,此处写的是本机,也可以不用是本机,只要是互联网上的DNS服务器地址都可以 option routers 192.168.10.253; #添加全局网关为192.168.10.253 default-lease-time 43200; #默认租约期限,这儿是43200秒 max-lease-time 86400; #最长租约期限,此处是一天一夜,也就是86400秒 log-facility local7; subnet 192.168.10.0 netmask 255.255.255.0 { range 192.168.10.150 192.168.10.200; #定义地址列表 }
(2)、客户端获取后信息如下
f、现在我们来配置局部网关,在也存在全局网关的情况下最终生效的是局部网关
(1)、server端配置如下
[root@node1 ~]# cat /etc/dhcp/dhcpd.conf option domain-name "node1"; #dns域的名称为node1 option domain-name-servers 192.168.10.41; #DNS服务器的地址,此处写的是本机,也可以不用是本机,只要是互联网上的DNS服务器地址都可以 option routers 192.168.10.253; #添加全局网关为192.168.10.253 default-lease-time 43200; #默认租约期限,这儿是43200秒 max-lease-time 86400; #最长租约期限,此处是一天一夜,也就是86400秒 log-facility local7; subnet 192.168.10.0 netmask 255.255.255.0 { range 192.168.10.150 192.168.10.200; #定义地址列表 option routers 192.168.10.252; #添加局部网关为192.168.10.252,在已有全局网关的情况下,最终生效的是此局部网关192.168.10.252而不是全局网关192.168.10.253 }
(2)、客户端生效后配置如下
g、现在我们来配置局部DNS地址,也是同理
(1)、我们server端配置如下
[root@node1 ~]# cat /etc/dhcp/dhcpd.conf option domain-name "node1"; #dns域的名称为node1 option domain-name-servers 192.168.10.41; #DNS服务器的地址,此处写的是本机,也可以不用是本机,只要是互联网上的DNS服务器地址都可以 option routers 192.168.10.253; #添加全局网关为192.168.10.253 default-lease-time 43200; #默认租约期限,这儿是43200秒 max-lease-time 86400; #最长租约期限,此处是一天一夜,也就是86400秒 log-facility local7; subnet 192.168.10.0 netmask 255.255.255.0 { range 192.168.10.150 192.168.10.200; #定义地址列表 option routers 192.168.10.252; #添加局部网关为192.168.10.252,在已有全局网关的情况下,最终生效的是此局部网关192.168.10.252而不是全局网关192.168.10.253 option domain-name-servers 192.168.10.250; #DNS服务器的地址,同理,在全局都存在的情况下最终生效的是局部配置的DNS服务器信息,即分配的DNS地址是192.168.10.250 }
(2)、我们client端获取后配置如下
h、我们现在配置给某个主机指定固定地址,即只要是这个主机就永远指定这个地址
(1)、我们在server端配置信息如下
[root@node1 ~]# cat /etc/dhcp/dhcpd.conf option domain-name "node1"; #dns域的名称为node1 option domain-name-servers 192.168.10.41; #DNS服务器的地址,此处写的是本机,也可以不用是本机,只要是互联网上的DNS服务器地址都可以 option routers 192.168.10.253; #添加全局网关为192.168.10.253 default-lease-time 43200; #默认租约期限,这儿是43200秒 max-lease-time 86400; #最长租约期限,此处是一天一夜,也就是86400秒 log-facility local7; subnet 192.168.10.0 netmask 255.255.255.0 { range 192.168.10.150 192.168.10.200; #定义地址列表 option routers 192.168.10.252; #添加局部网关为192.168.10.252,在已有全局网关的情况下,最终生效的是此局部网关192.168.10.252而不是全局网关192.168.10.253 option domain-name-servers 192.168.10.250; #DNS服务器的地址,同理,在全局都存在的情况下最终生效的是局部配置的DNS服务器信息,即分配的DNS地址是192.168.10.250 } host passacaglia { #给固定的客户端配置固定的IP信息,注意固定地址不能使用别人地址池中分配的地址 hardware ethernet 00:0c:29:d3:d4:07; #此处的mac地址要使用客户端的mac地址 fixed-address 192.168.10.99; }
(2)、客户端信息如下
i、同理,我们也可以给固定的客户端配置固定的ip信息和网关dns信息等
(1)、服务端配置信息如下
[root@node1 ~]# cat /etc/dhcp/dhcpd.conf option domain-name "node1"; #dns域的名称为node1 option domain-name-servers 192.168.10.41; #DNS服务器的地址,此处写的是本机,也可以不用是本机,只要是互联网上的DNS服务器地址都可以 option routers 192.168.10.253; #添加全局网关为192.168.10.253 default-lease-time 43200; #默认租约期限,这儿是43200秒 max-lease-time 86400; #最长租约期限,此处是一天一夜,也就是86400秒 log-facility local7; subnet 192.168.10.0 netmask 255.255.255.0 { range 192.168.10.150 192.168.10.200; #定义地址列表 option routers 192.168.10.252; #添加局部网关为192.168.10.252,在已有全局网关的情况下,最终生效的是此局部网关192.168.10.252而不是全局网关192.168.10.253 option domain-name-servers 192.168.10.250; #DNS服务器的地址,同理,在全局都存在的情况下最终生效的是局部配置的DNS服务器信息,即分配的DNS地址是192.168.10.250 } host passacaglia { #给固定的客户端配置固定的IP信息,注意固定地址不能使用别人地址池中分配的地址 hardware ethernet 00:0c:29:d3:d4:07; #此处的mac地址要使用客户端的mac地址 fixed-address 192.168.10.99; option routers 192.168.10.252; #添加局部网关为192.168.10.252,在已有全局网关的情况下,最终生效的是此局部网关192.168.10.252而不是全局网关192.168.10.253 option domain-name-servers 192.168.10.250; #DNS服务器的地址,同理,在全局都存在的情况下最终生效的是局部配置的DNS服务器信息,即分配的DNS地址是192.168.10.250 }
(2)、客户端信息如下
j、我们dhcp的租约记录文件在/var/lib/dhcpd/dhcpd.leases中