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:
该命令会显示系统的最新日志消息,其中包括服务启动时可能产生的错误日志。通常,错误信息会出现在这里,帮助您找出导致服务启动失败的具体原因。

 

posted @ 2024-10-28 15:27  在睡觉24  阅读(12)  评论(0编辑  收藏  举报