DHCP

简介

动态主机配置协议 DHCP(Dynamic Host Configuration Protocol,动态主机配置协议) 是 RFC 1541(已被 RFC 2131 取代)定义的标准协议,该协议允许服务器向客户端动态分配 IP 地址和配置信息。

使用UDP协议,C/S模式。

dhcp服务器使用 67/UDP,dhcp客户端使用 68/UDP。

分配IP方式

  • 将一个IP地址固定分配给一个客户端
  • 随机地将地址永久性分配给客户端
  • 随机地将地址分配给客户端使用一段时间(常用

地址的有效使用时间段称为租用期,租用期满之前,客户端必须向服务器请求继续租用。服务器接受请求后才能继续使用,否则无条件放弃

二八原则

避免单台DHCP服务器宕机,客户端将无法获取IP地址,通常有多台DHCP服务器;然而DHCP服务器之间没有监督机制,无法保证分配地址没有冲突,可使用两台DHCP服务器。

若主机A侧有200台主机,主机B侧有200台主机,DHCP服务器各自按二八原则划分管控的动态IP范围,DHCP A:10.0.0.1~10.0.0.160和192.168.0.161~192.168.0.200,DHCP B:10.0.0.161~10.0.0.200和192.168.0.1~192.168.0.160;主机A获取10网段IP,若DHCP A宕机,可通过DHCP中继获取DHCP B中的10网段IP;主机B同理

DHCP中继

默认情况下,路由器隔离广播包,不会将收到的广播包从一个子网发送到另一个子网。当DHCP服务器和客户端不在同一个子网时,充当客户端默认网关的路由器将广播包发送到DHCP服务器所在的子网,这一功能就称为DHCP中继(DHCP Relay)

DHCP工作过程

DHCP在工作过程中涉及到的报文种类及其作用如下:

1、DHCP DISCOVER:客户端开始DHCP过程的第一个报文,是请求IP地址和其它配置参数的广播报文。

2、DHCP OFFER:服务器对DHCP DISCOVER报文的响应,是包含有效IP地址及配置的单播(或广播)报文。

3、DHCP REQUEST:客户端对DHCP OFFER报文的响应,表示接受相关配置。客户端续延IP地址租期时也会发出该报文。

4、DHCP DECLINE:当客户端发现服务器分配的IP地址无法使用(如IP地址冲突时),将发出此报文,通知服务器禁止使用该IP地址。

5、DHCP ACK :服务器对客户端的DHCP REQUEST报文的确认响应报文。客户端收到此报文后,才真正获得了IP地址和相关的配置信息。

6、DHCP NAK:服务器对客户端的DHCP REQUEST报文的拒绝响应报文。客户端收到此报文后,会重新开始新的DHCP过程。

7、DHCP RELEASE:客户端主动释放服务器分配的IP地址。当服务器收到此报文后,则回收该IP地址,并可以将其分配给其它的客户端。

8、DHCP INFORM:客户端获得IP地址后,发送此报文请求获取服务器的其它一些网络配置信息,如DNS等。

续租

  1. 在使用租期过去50%时刻处, 客户端向服务器发送单播DHCP REQUEST报文续延租期。
  2. 如果收到服务器的DHCP ACK报文,则租期相应向前延长,续租成功。如果没有收到DHCP ACK报文,则客户端继续使用这个IP地址。在使用租期过去87.5%时刻处,向服务器发送广播DHCP REQUEST报文续延租期。
  3. 如果收到服务器的DHCP ACK报文,则租期相应向前延长,续租成功。如果没有收到DHCP ACK报文,则客户端继续使用这个IP地址。在使用租期到期时,客户端自动放弃使用这个IP地址,并开始新的DHCP过程。

实现

软件包

服务端

dhcp-server(centos8中)、dhcp(centos7及之前)

/usr/sbin/dhcpddhcp服务主程序
/etc/dhcp/dhcpd.confdhcp服务配置文件
/usr/share/doc/dhcp-server/dhcpd.conf.exampledhcp配置文件模板
/usr/lib/systemd/system/dhcpd.servicedhcp服务service文件
/var/lib/dhcpd/dhcpd.leases地址分配记录

客户端

dhcp-client

/usr/sbin/dhclient客户端程序
/var/lib/dhclient自动获取的IP信息

配置文件

查看dhcp配置文件模版

[root@wenzi ~]# vim /usr/share/doc/dhcp-server/dhcpd.conf.example
#指定客户端默认的域,局部或全局
option domain-name "example.org";
#指定客户端默认的DNS,局部或全局
option domain-name-servers ns1.example.org, ns2.example.org;

#最小租期时间,单位 秒
default-lease-time 600;
#最长租期时间  单位 秒
max-lease-time 7200;

#通过配置syslog.conf定义日志文件存放何处
log-facility local7;

#在这个子网上不提供服务,但是声明它可以帮助DHCP服务器理解网络拓扑
subnet 10.152.187.0 netmask 255.255.255.0 {
}

#这是一个非常基本的子网声明
subnet 10.254.239.0 netmask 255.255.255.224 {
  #客户端获取动态IP的范围,可有多个range,但IP范围不能重叠
  range 10.254.239.10 10.254.239.20;
  #为客户端指定默认网关
  option routers rtr-239-0-1.example.org, rtr-239-0-2.example.org;
}

#这个声明允许BOOTP(DHCP协议前身)客户端获取动态地址,我们不建议这样做。
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;
}

#针对单独子网配置
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;
  option domain-name "internal.example.org";
  option routers 10.5.5.1;
  #广播地址
  option broadcast-address 10.5.5.31;
  default-lease-time 600;
  max-lease-time 7200;
}

#通过host 任意名 {} 配置
host passacaglia {
  #单个客户端主机MAC地址
  hardware ethernet 0:0:c0:5d:bd:95;
  #获取bootloader启动文件的名称
  filename "vmunix.passacaglia";
  #去 toccata.example.com 主机获取 vmunix.passacaglia 文件
  server-name "toccata.example.com";
}

#通过host 任意名 {} 配置单个客户端主机使得IP和MAC地址绑定,固定IP
host fantasia {
  hardware ethernet 08:00:07:26:c0:a5;
  #固定客户端主机的IP地址
  fixed-address fantasia.example.com;
}


#您可以声明一类客户端,然后基于此进行地址分配
#下面的示例显示了某个类中的所有客户端,获取10.17.224/24子网上的地址,所有其它客户端获取10.0.29/24 #子网上的地址的情况。
class "foo" {
  match if substring (option vendor-class-identifier, 0, 4) = "SUNW";
}
#告知是否为一些子网络分享相同网络
shared-network 224-29 {
  subnet 10.17.224.0 netmask 255.255.255.0 {
    option routers rtr-224.example.org;
  }
  subnet 10.0.29.0 netmask 255.255.255.0 {
    option routers rtr-29.example.org;
  }
  pool {
    allow members of "foo";
    range 10.17.224.10 10.17.224.250;
  }
  pool {
    deny members of "foo";
    range 10.0.29.10 10.0.29.230;
  }
}

其它配置选项

  • next-server 192.168.28.151        指定TFTP服务器地址,即提供引导文件的服务器地址
  • filename "pxelinux.0"                   指定引导文件名称
[root@wenzi ~]# vim /etc/dhcp/dhcpd.conf
option domain-name "example.com";
option domain-name-servers 180.76.76.76,223.6.6.6;
default-lease-time 600;
max-lease-time 7200;
log-facility local7;
subnet 192.168.28.0 netmask 255.255.255.0 {
  range 192.168.28.152 192.168.28.159;
  option routers 192.168.28.2;
  #指定TFTP服务器地址
  next-server 192.168.28.151;
  filename "pxelinux.0";
}

具体使用见自动化安装系统(二)_笔落_惊风雨的博客-CSDN博客

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值