Linux网络服务之DHCP

193 阅读4分钟

DHCP服务

什么是DHCP

DHCP(Dynamic Host Configuration Protocol,动态主机配置协议),由Internet工作任务小组设计开发,专门用于为TCP/IP网络中计算机自动分配TCP/IP参数的协议。

DHCP是一个局域网的网络协议。指的是由服务器控制一段IP地址范围,客户机登录服务器时就可以自动获得服务器分配的IP地址和子网掩码。 默认情况下,DHCP作为Windows Server的一个服务组件不会被系统自动安装,还需要管理员手动安装并进行必要的配置。

DHCP采用C/S架构,C-client(客户机),S-server(服务器),客户机/服务器架构

DHCP服务采用传输层UDP协议,客户机使用UDP协议的68端口,服务器使用UDP的67端口。

DHCP 优点

  1. 减少管理员的工作量
  2. 避免输入错误的可能
  3. 避免IP地址冲突
  4. 当更改lP地址段时,不需要重新配置每个用户的IP地址
  5. 提高了IP地址的利用率
  6. 方便客户端的配置

DHCP 分配方式

  • 自动分配:分配到一个IP地址后永久使用
  • 手动分配:由DHCP服务器管理员专门指定IP地址
  • 动态分配:使用完后释放该IP,供其它客户机使用

DHCP 租约过程

1.首先客户机加入到当前网络中是没有地址的,他会发送一个dhcp discover 广播报文 来寻找dhcp服务器

2.服务器接收到discover 报文 会回复offer (ip地址(合法地址地址中挑出),子网掩码,dns地址,网关等信息)

3.客户机收到 offer 以后 会发送一个 request 的报文 告诉服务器 我收到了你的 offer,并且我很满意你的地址,我就使用它了,不要再分配给别人了

4.当服务器收到 request 的报文 以后 好了解 会发送一个ack 报文确认消息告诉客户端 你放心使用,不会再给别人分配你的ip地址

更新租约:

  • 当DHCP服务器向客户机出租的IP地址租期达到50%时,就需要更新租约;
  • 客户机直接向提供租约的服务器发送DHCP Request包,要求更新现有的地址租约。
  • 当租约到期前,DHCP服务器还没有收到客户机的请求,就会释放该IP地址。

使用 DHCP动态配置地址

优点

  • 为大量客户机自动分配地址,提供集中管理
  • 减轻管理和维护成本、提高网络配置效率

可分配地址范围

  • 网卡的IP地址、子网掩码
  • 对应的网络地址、广播地址
  • 默认网关地址
  • DNS服务器地址

八种报文

报文说明
DHCP DISCOVER客户端到服务器
DHCP OFFER服务器到客户端
DHCP REQUEST客户端到服务器
DHCPACK服务器到客户端
DHCPNAK服务器到客户端通知用户无法分配合适的IP地址
DHCP DECLINE客户端到服务器,指示地址已被使用
DHCP RELEASE客户端到服务器,放弃网络地址取消剩余的租约时间
DHCP INFORM客户端到服务器,客户端如果需要从DHCP服务器端获取更为单ffl的配置信息,则 发送Inform报文向服务器进行请求,极少用到

设置DHCP服务器并分配地址

1.关闭防火墙和selinux

 [root@localhost ~]# systemctl stop firewalld.service 
 [root@localhost ~]# setenforce 0

2.安装 dhcp 软件包,查看配置文件

 [root@localhost ~]# yum install dhcp -y      
 [root@localhost ~]# rpm -qc dhcp
 /etc/dhcp/dhcpd.conf                     
 /etc/dhcp/dhcpd6.conf
 /etc/openldap/schema/dhcp.schema
 /etc/sysconfig/dhcpd
 /var/lib/dhcpd/dhcpd.leases
 [root@localhost ~]# cat /etc/dhcp/dhcpd.conf      
 #
 # DHCP Server Configuration file.
 #   see /usr/share/doc/dhcp*/dhcpd.conf.example    
 #   see dhcpd.conf(5) man page
 #

3.修改网络模式为仅主机模式

image.png

4.修改网卡配置文件后重启服务

 [root@localhost ~]# vim /sysconfig/net-scripts/ifcfg-ens33   //修改网卡配置文件 
 [root@localhost ~]# systemctl restart network     //重启网络服务            

image.png

5.编辑dhcp服务的配置文件,设置网段、地址池、网关地址,重启dhcp服务。

[root@localhost ~]# cd /usr/share/doc/dhcp-4.2.5/  
[root@localhost dhcp-4.2.5]# ls  dhcpd6.conf.example dhcpd.conf.example ldap [root@localhost dhcp-4.2.5]# cp dhcpd.conf.example /etc/dhcp/dhcpd.conf 
cp:是否覆盖"/etc/dhcp/dhcpd.conf"? yes 

# 编辑dhcp配置文件 
[root@localhost ~]# vim /etc/dhcp/dhcpd.conf
.............

subnet 192.168.233.0 netmask 255.255.255.0 {
  range 192.168.233.10 192.168.233.30;
  option routers 192.168.233.100;
  option domain-name-servers 114.114.114.114;
}

............

[root@localhost ~]# systemctl restart dhcpd     //重启dhcp服务

image.png

6.验证win10虚拟机能否获取DHCP服务器分配IP地址 新建win10虚拟机,将网络类型改为“仅主机模式”

释放IP地址后重新获取

ipconfig /release       #释放地址  
ipconfig /renew         #重新获取地址  
ipconfig /all           #可以看到详情信息

image.png

获取了地址池内的IP地址且DNS地址为设置地址。