DHCP服务
DHCP基础知识
DHCP是什么
DHCP是动态主机配置协议,用于网络中分配ip地址。只要网络中安装了DHCP服务器,用户无需输入任何数据,就可以将一台计算机接入网络中,所有入网的必要参数都由DHCP服务器负责(如IP地址、网关地址、子网掩码、DNS地址等)
DHCP采用的模式
DHCP采用客户端/服务器的模式,当DHCP客户端启动时,会自动与DHCP服务器进行通信,由DHCP服务器为DHCP客户端自动分配IP地址。
凡是安装了DHCP服务的都称为DHCP服务器,启动了DHCP功能的都称为DHCP客户端
DHCP分配IP地址的方式
DHCP分配IP地址有以下两种方式
1.限定租期:这是一种动态分配的方式,能够很好地解决IP地址不够用的问题
2.永久租用:采用该方法的前提是IP地址够用,能够避免DHCP客户端频繁地向DHCP服务器提出续约请求
DHCP报文类型
DHCP客户端的报文类型
1.DHCP Discover:该报文用于DHCP客户端发现网段中的DHCP服务器,DHCP客户端请求IP地址时,并不知道服务器的位置,因此会在本网络中以广播的方式发送DHCP发现报文,所有收到Discover报文的DHCP服务器都会发送回应报文
2.DHCP Request:该报文用于DHCP客户端收到DHCP服务器端的Offer报文,DHCP客户端会从所有回复Offer报文中的DHCP服务器中选择一个服务器进行回应,一般是选择最快回复Offer报文的服务器进行回应,以广播的方式进行回应(通告选择的服务器)。获得IP地址后,会在地址使用租期过去1/2时,向DHCP服务器发送单播Request报文续延租期,如果没有收到DHCP ACK报文,在租期过去3/4时,会发送广播Request报文续延租期
3.DHCP Release:该报文用于DHCP客户端不再需要使用分配IP地址,则会向DHCP服务器发送该报文,DHCP服务器释放被绑定的租约
4.DHCP Inform:该报文用于DHCP客户端需要从服务器端获取更为详细的配置信息
5.DHCP Decline:该报文用于DHCP客户端收到服务器端的ACK报文后,通过地址冲突检测发现服务器分配的地址冲突或者由于其他原因导致不能使用,则发送Decline报文,通知服务器所分配的ip地址不可用
DHCP服务器端的报文类型
1.DHCP Offer:该报文用于DHCP服务器端收到DHCP客户端的Discover报文后,进行响应回复使用
2.DHCP ACK:该报文用于DHCP服务器端收到request报文后,能正常为其分配IP地址,根据dhcpd.conf文件中与之匹配的子网中取出一个可用的IP地址以及必要的网络参数返回给DHCP客户端
DHCP服务器从地址池中选择IP地址时,根据以下优先级进行选择:
1.当前已经存在的IP MAC地址的对应关系
2.客户端以前的IP地址
3.读取Discover报文中的Requested Ip Address Option的值,如果IP地址存在且可用,则为其分配该IP地址
4.从配置的子网中选择IP地址(选择IP地址时,会发送icmp测试报文,如果收到该IP地址的ICMP报文,则证明该IP地址已经在使用了,因此放弃分配该地址,一直用此方法找到可用的IP地址)
3.DHCP NCK:该报文用于DHCP服务器收到Request报文后,无法正常为其分配ip地址,则发送NCK报文作为回应,通知用户无法分配合适的ip地址
DHCP服务工作原理
如图,DHCP分配IP地址可简单分为以上4个阶段,还有其余情况如下:
配置DHCP服务
安装DHCP服务器
挂载光驱
#1.挂载光盘,telnet的安装包在centos系统中有
mount /dev/cdrom /mnt
#进入软件包目录,这里是以centos8为例
cd /mnt/BaseOS/Packages
#rpm安装dhcp,建议自动补齐rpm包的名字
rpm -ivh dhcp-server-4.3.6-40.el8.x86_64.rpm
修改配置文件,提供dhcp功能
查看dhcpd.conf配置文件中的示例文件地址(第二行,有see /usr/...),并将实例文件复制并覆盖原来的dhcpd.conf文件
cp /usr/share/doc/dhcp-server/dhcpd.conf.example /etc/dhcp/dhcpd.conf
编辑dhcpd.conf文件
vim /etc/dhcp/dhcpd.conf
因为DHCP服务器从地址池中选择IP地址时,会根据优先级进行选择,而已有的ip mac地址映射关系的优先级是最高的,因此可以修改文件内容如下:
subnet 192.168.16.0 netmask 255.255.255.240 { #表示分配的网段是192.168.16.0/28
range 192.168.16.1 192.168.16.14;#指定分配的地址范围
option domain-name-servers 8.8.8.8,114.114.114.114;#指定DNS服务器的IP地址
option domain-name "internal.example.org";#指定分配的域名信息
option routers 192.168.16.1;#指定分配的网关
option broadcast-address 192.168.16.15;#指定分配的广播地址
default-lease-time 600; #指定默认的租约时间
max-lease-time 7200;#指定最大租约时间
}
host boss1{
hardware ethernet 12:34:56:78:AB:CD;#给boss1主机分配mac地址
fixed-address 192.168.1.8;#给boss1主机分配ip地址
}
host boss2{
hardware ethernet 12:34:56:78:AB:CE;#给boss2主机分配mac地址
fixed-address 192.168.1.9;#给boss2主机分配ip地址
}
修改完之后,需要重启dhcp服务
service dhcpd restart
开启路由转发功能
DHCP服务器的IP就是该网段的网关,即DHCP服务器的网卡担当网关功能,因此需要打开DHCP的转发功能
修改文件,将net.ipv4.ip_forward=0修改为net.ipv4.ip_forward=1
vim /etc/sysctl.conf