DHCP服务器
一.基础知识:
1.DHCP简介
1.DHCP简介:
DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)通常被应用在大型的局域网络环境中,主要作用是集中的管理、分配IP地址,使网络环境中的主机动态的获得IP地址、Gateway地址、DNS服务器地址等信息,并能够提升地址的使用率。
2.DHCP服务器简介:
DHCP服务器指的是由服务器控制一段IP地址范围,客户端登录服务器时就可以自动获得服务器分配的IP地址和子网掩码。
3.DHCP一般不为服务器分配IP,因为他们要使用固定IP,所以DHCP一般只为办公环境的主机分配IP。
2.DHCP服务器IP分配三种方式
1)自动分配(Automatic Allocation)(MAC地址与IP绑定)
自动分配是当DHCP客户端第一次成功地从DHCP服务器端分配到一个IP地址之后,就永远使用这个地址。
2)动态分配(Dynamic Allocation)常用方式
动态分配是当DHCP客户端第一次从DHCP服务器分配到IP地址后,并非永久地使用该地址,每次使用完后,DHCP客户端就得释放这个IP地址,以给其他客户端使用。
3)手动分配
手动分配是由DHCP服务器管理员专门为客户端指定IP地址。
3.DHCP服务工作流程
第一步:搜索阶段
当DHCP客户端第一次登录网络的时候,计算机发现本机上没有任何IP地址设定,将以广播方式发送DHCP discover发现信息来寻找DHCP服务器,即向255.255.255.255发送特定的广播信息。
网络上每一台安装了TCP/IP协议的主机都会接收这个广播信息,但只有DHCP服务器才会做出响应。(DHCP DISCOVER)
第二步:提供阶段
在网络中接收到DHCP discover发现信息的DHCP服务器就会做出响应,它从尚未分配的IP地址池中挑选一个分配给DHCP客户机,
第三步:选择阶段
DHCP客户端接受到DHCP offer提供信息之后,选择第一个接收到的提供信息,
然后以广播的方式回答一个DHCP request请求信息,该信息包含向它所选定的DHCP服务器请求IP地址的内容。(DHCP REQUEST)
第四步:确认阶段
当DHCP服务器收到DHCP客户端回答的DHCP request请求信息之后,便向DHCP客户端发送一个包含它所提供的IP地址和其他设置的DHCP ack确认信息,确认租约,并指定租约时长。
告诉DHCP客户端可以使用它提供的IP地址。
二.DHCP服务器的相关配置:
常用的几个配置文件:
/etc/dhcp/dhcpd.conf # DHCP配置文件
/usr/sbin/dhcpd # DHCP服务程序
/usr/sbin/dhcrelay # 中继命令程序,用于跨网段提供DHCP服务
/var/lib/dhcpd/dhcpd.leases # 存放租借信息(如IP)和租约信息(如租约时长)
/usr/share/doc/dhcp-4.2.5/dhcpd.conf.example # 配置文件的范例文件
安装前需要的设置:关闭虚拟机自带的DHCP功能
1.安装DHCP服务:
yum -y install dhcp*
2.进行配置:
(1)开启dhcp服务
systemctl start dhcpd
(2)更改配置文件
cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf //复制dhcp的模板文件
7 option domain-name "server.com"; ##域名:参见/etc/resolv.conf
8 option domain-name-servers 172.25.10.254; ##指定dns服务器,多台用逗号隔开。如果不指定dns,客户端无法解析外面的网址
30 subnet 172.25.10.0 netmask 255.255.255.0 { ##指定子网络及子网掩码
31 range 172.25.10.10 172.25.10.20; ##指定IP范围
32 option routers 172.25.10.254; ##指定默认网关
33 }
# 固定地址分配给特定MAC地址的主机
host server1 { //固定地址的配置,host后面的是标识符,没意义
hardware ethernet 00:11:22:33:44:55; //mac地址
fixed-address 192.168.1.50; //固定IP
}
注意:
每个参数都是以分号结束(;)
主配置文件查看更多
注意:区分全局配置(大多在文件开头部分)和局部配置(一般在全局配置之后),如果在特定的声明中则是局部配置
default-lease-time [21600] //默认租约
max-lease-time [43200] //最大租约
broadcase-address[广播地址] //定义客户端的广播地址
fixed-address[IP地址] //将某个固定的IP地址分配给指定主机
ntp-server[IP地址] //定义客户端的网络时间服务器(NTP)
nis-servers[IP地址] //定义客户端的NIS域服务器的地址
server-name[主机名] //向DHCP客户端通知DHCP服务器的主机名
ddns-update-style [类型] //定义DNS服务动态更新的类型,类型包括none(不支持动态更新)、interim(互动更新模式)与ad-hoc(特殊更新模式)
4、启动DHCP服务
启动服务前可以通过命令检查dhcp配置文件
dhcpd
#需要关闭服务器防火墙或者防火墙放行dhcp服务,否则客户端是分配不到地址的
[root@s145 ~]# systemctl stop firewalld
[root@s145 ~]# systemctl start dhcpd
[root@s145 ~]# systemctl status dhcpd //查看服务状态
三、客户端设置
1.客户端dhclient:
dhclient是一个DHCP协议客户端
语法格式:dhclient [参数] [网络接口]
常用参数:
-p 指定dhcp客户端监听的端口号(默认端口号86)
-d 总是以前台方式运行程序
-q 安静模式,不打印任何错误的提示信息
-r 释放ip地址
-n 不配置任何接口
-x 停止正在运行的DHCP客户端,而不释放当前租约,杀死现有的dhclient
-s 在获取ip地址之前指定DHCP服务器
-w 即使没有找到广播接口,也继续运行
2.dhclient简单使用:
1)在指定网络接口上发出DHCP请求
$ dhclient ens37
2)释放IP地址(这里注意一点,静态ip也会被释放,小心操作)
# 释放所有网卡绑定的ip
$ dhclient -r
# 指定释放哪个网卡
$ dhclient -r ens37
3)从指定的DHCP服务器获取ip地址
$ dhclient -s 192.168.159.30 ens160
4)停止运行dhclient(这里也会释放所有ip,包括静态ip,谨慎操作)
$ dhclient -x
5)恢复:可重新获取一个dhcp地址
重启网卡(systemctl restart network),会恢复静态ip和动态获取ip
执行dhclient,不会恢复静态ip,只会动态获取一个ip
3.设置网卡配置文件
cd /etc/sysconfig/network-scripts/
4、重启网卡查看获取的地址
方法1:systemctl restart network //但是每次重启网络很麻烦,可以使用客户端命令dhclient。
方法2:接执行dhclient命令
这种方法下会显示4部请求中需要显示的步骤信息,以及最终分配的地址,所以是一个很好的理解dhcp工作的工具。
但是这种方法只能使用一次,第二次执行命令会提示该进程已经在执行,因为dhclient是一个进程。可以kill掉该进程再执行dhclient,或者使用dhclient -d选项。
方法三:dhclient -d
5.如何重新获取IP地址?
每次重启网卡默认都获取的同一个ip,有时候想换个ip都很麻烦。在/var/lib/dhclient/目录下有".leases"文件,将它们清空或者删除这些文件中对应网卡的部分,再重启网络就可以获取新的动态ip。
# 释放ip
$ /sbin/dhclient -r ens37 //或者dhclient -r
# 停掉网卡
$ ip link set ens37 down
# 启动网卡
$ ip link set ens37 up
四,出现问题时,排查
方法1:
systemctl status dhcpd.service:
该命令将显示dhcpd服务当前的状态以及最后一次启动尝试的详细信息,包括任何错误消息。这有助于识别为何服务无法启动的原因。
方法2:
journalctl -xe:
该命令会显示系统的最新日志消息,其中包括服务启动时可能产生的错误日志。通常,错误信息会出现在这里,帮助您找出导致服务启动失败的具体原因。