linux网络服务 DHCP动态主机配置协议

44 阅读6分钟

一、什么是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的分配方式

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

DHCP的特点

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

DHCP的建立过程

image.png

  1. 客户机请求IP地址(DHCP Discover)

当一个DHCP客户机启动时,客户机还没有IP地址,客户机要通过DHCP获取一个合法的地址。 此时DHCP客户机以广播方式发送 DHCP Discover 报文发现信息来寻找DHCP服务器。

  1. 服务器响应(DHCP Offer)

DHCP服务器接收到来自客户机请求lP地址的信息时,在自己的IP地址池中查找是否有合法的IP地址提供给客户机。 如果有,DHCP服务器将此IP地址做上标记,加入到DHCP Offer的消息中,然后广播一则 DHCP Offer 消息(包含网络配置信息:IP地址、子网掩码、DNS、租期等)。

  1. 客户机选择IP地址(DHCP Request)

DHCP客户机从接收到的第一个DHCP Offer消息中提取IP地址, 之后广播发送 DHCP Request 消息,通告给局域网中所有的DHCP服务器,它选择了哪个DHCP服务器的哪个IP以及租约期限。 让未被选中的DHCP服务器,把未使用的地址收回。同时发出IP地址的DHCP服务器将该地址保留,该地址就不能再分配给另一个DHCP客户机。

  1. 服务器确定租约(DHCP Ack)

DHCP服务器接收到DHCP Request消息后,以 DHCP ACK 消息的形式向客户机广播成功确认,该消息包含有IP地址的有效租约和其他可配置的信息。 当客户机收到DHCP ACK消息时,配置IP地址,完成TCP/IP的初始化。

DHCP动态配置主机地址

DHCP服务优点

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

可分配的地址信息主要包括

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

DHCP共有八种报文

报文说明
DHCP Discover这是客户机首次登录网络时进行 DHCP 过程的第一个报文,用来寻找 DHCP 服务器。
DHCP OfferDHCP服务器用来响应DHCP DISCOVER报文,此报文携带了各种配置信息。
DHCP Request客户端初始化后,发送广播的 DHCP REQUEST 报文来回应服务器的 DHCP OFFER 报文。 客户端重启初始化后,发送广播的 DHCP REQUEST 报文来确认先前被分配的 IP 地址等配置信息。 当客户端已经和某个 IP 地址绑定后,发送 DHCP REQUEST 报文来延长 IP 地址的租期。
DHCP ACK服务器对客户端的 DHCP REQUEST 报文的确认响应报文,客户端收到此报文后,才真正获得了 IP 地址和相关的配置信息。
DHCP NAK服务器对客户端的DHCP REQUEST报文的拒绝响应报文,通知客户端无法分配合适的 IP 地址。
DHCP Decline客户端发送给服务器,指示地址已被使用,并且会重新向服务器申请地址。
DHCP Release客户端发送给服务器,主动释放服务器分配给它的IP地址,取消剩余租约时间。
DHCP Inform客户端发送给服务器,客户端已经获得了 IP 地址,发送此报文的目的是为了从服务器获得其他的一些网络配置信息,比如网关地址、DNS 服务器地址等。极少用到。

DHCP配置文件

DHCP服务的配置文件:/etc/dhcp/dhcpd.conf 配置文件参数含义:


 # 设置全局配置参数
 option domain-name "example.org";     //指定默认域名
 option domain-name-servers 202.106.0.20202.106.148.1;      //指定DNS服务器地址
 default-lease-time 600;              //默认租约600秒(10分钟)
 max-lease-time 7200;                 //最大租约为7200秒(2小时)
 ddns-update-style none;              //禁用DNS动态更新
 ​
 ​
 # subnet网段声明(作用于整个子网段,部分配置参数优先级高于全局配置参数)
 subnet 192.168.100.0 netmask 255.255.255.0 {         //声明要分配的网段地址
 range 192.168.100.128 192.168.100.200;               //设置地址池
 option routers 192.168.100.10;                       //指定默认网关地址
 ​
 ​
 # host主机声明(给单机分配固定的IP地址)    
 host hgstname{                                //指定需要分配固定IP地址的客户机名称
 hardware ethernet 00:c0:c3:22:46:81;          //指定该主机的MAC地址
 fixed-address 192.168.4.100;                  //指定保留给该主机的IP地址

image.png

image.png

image.png

设置DHCP服务器并分配地址

实验步骤

1. Linux虚拟机关闭防火墙和selinux。 image.png

2.安装 dhcp 软件包,并查看配置文件。 image.png

3.编辑dhcp服务的配置文件/etc/dhcp/dhcpd.conf,设置网段、地址池、网关地址。

image.png

4.编辑dhcp服务的配置文件/etc/dhcp/dhcpd.conf,设置网段、地址池、网关地址。

# dhcpd.conf
#
# Sample configuration file for ISC dhcpd
#

# option definitions common to all supported networks...
option domain-name "example.org";
option domain-name-servers 114.114.114.114 ;              //修改默认的全局dns地址

default-lease-time 600;
max-lease-time 7200;

# Use this to enble / disable dynamic dns updates globally.
#ddns-update-style none;

# If this DHCP server is the official DHCP server for the local
# network, the authoritative directive should be uncommented.
#authoritative;

# Use this to send dhcp log messages to a different log file (you also
# have to hack syslog.conf to complete the redirection).
log-facility local7;

# No service will be given on this subnet, but declaring it helps the 
# DHCP server to understand the network topology.

subnet 10.152.187.0 netmask 255.255.255.0 {
}

# This is a very basic subnet declaration.

subnet 192.168.83.0 netmask 255.255.255.0 {        //设置子网IP地址、子网掩码
  range 192.168.83.10 192.168.83.50;               //设置地址池(IP地址的范围)
  option routers 192.168.83.2                      //设置网关地址
  option domain-name-servers 114.114.114.114;      //设置dns
}

# This declaration allows BOOTP clients to get dynamic addresses,
# which we don't really recommend.

subnet 10.254.239.32 netmask 255.255.255.224 {          
  range dynamic-bootp 10.254.239.40 10.254.239.60;      
  option broadcast-address 10.254.239.31;       
  option routers rtr-239-32-1.example.org;      
}

# A slightly different configuration for an internal subnet.
subnet 10.5.5.0 netmask 255.255.255.224 {
  range 10.5.5.26 10.5.5.30;
  option domain-name-servers ns1.internal.example.org;

5.动dhcp服务并查看状态。 image.png

6.切换到虚拟机终端,输入:vim /etc/sysconfig/network-scripts/ifcfg-ens33编辑ens33网卡信息 image.png

7.:重启网络,查看IP image.png

8.可以使用Windows中验证IP地址池是否建立完成,结果显示实验成功。

image.png

固定IP地址的DHCP

给部分需要固定IP地址的设备使用

编辑dhcp服务的配置文件/etc/dhcp/dhcpd.conf,设置固定网段以及Mac地址,根据网卡绑定IP地址。 image.png

找到对应的Mac地址 image.png

设置Mac地址及固定的网段 image.png

重启dhcp并查看状态。

image.png