智传网优云课堂,专注分享IT技术
与IT技术爱好者一起共同学习进步

Linux CentOS DHCP服务器搭建教程

1. 前言

本文主要介绍如何使用Linux系统搭建DHCP服务器,以CentOS 7.6为例为教程。
Linux CentOS DHCP服务器搭建教程

1.1 DHCP作用

DHCP就是动态主机配置协。可以自动为网络中的主机分配IP地址、子网掩码、网关以及DNS等TCP/IP信息。

1.2 DHCP名词解析

(1)名字解释:
DHCP客户端:DHCP客户是通过DHCP来获得网络配置参数的internet主机,通常就是普通的用户工作站。
DHCP服务器:DHCP服务器是提供网络参数的给DHCP客户的internet主机
DHCP/BOOTP中继代理:在DHCP客户和服务器之间转发DHCP消息的主机或者路由器
DHCP是基于客户机/服务器模型设计的,DHCP客户和DHCP服务器之间通过收发DHCP消息进行通讯。
作用域:一个完整连续的可用IP地址薄,DHCP服务主要就是通过作用域来管理网络分布、IP地址分配及相关配置参数。
排除范围:排除范围是作用域内从DHCP服务中排除的有限地址序列,排除范围确保在这些范围中的任何地址都不是由网络上的服务器提供给客户端的。其实说白了就是将作用域中的一些IP地址给排除在外使其不能分配给客户端。
地址池:在定义DHCP作用域并应用排除范围后,剩余的地址在作用域内形成的可用地址池,地址池中的地址可以动态分配给DHCP客户端。
租约:客户端可以使用动态分配IP地址的时间。
预约:创建从DHCP服务器到客户机的永久地址租约指定,预约可以保证子网上的特定硬件设备总是使用相同的IP。

1.3 DHCP工作原理

首先DHCP一般是局域网内的一个通讯协议,当客户端没有设定任何网络配置信息时候,他会想其所在的局域网上发出一个广播封包给局域网内的所有主机(其发送的是DHCP DISCVER数据包,为保证服务器能够接收到请求,数据包源地址设定为0.0.0.0,而目的地址为255.255.255.255,以广播形式发送DHCP DISCOVER的信息。),一般主机接收到这个封包后,会直接给予丢弃,但如果局域网中有DHCP服务器,则会自动响应。
当DHCP服务器监听到客户端发出的DHCP DISCOVER广播后,它会从那些还没有租出的地址范围内选择可用的IP及其他TCP/IP设定以DHCP OFFER数据包的形式发送给客户机。
如果客户端收到网络上多台DHCP服务器的响应,客户端会挑选最快的一个DHCP OFFER并向网络发送一个DHCP REQUEST广播封包,告诉所有DHCP服务器它将使用哪一台服务器提供的IP地址。同时,客户端还会向网络发送ARP广播数据包,查询网络上面有没有其他机器使用该IP地址,如果发现该IP地址已经被占用,客户端则会发送一个DHCP DECLINE数据包给DHCP服务器,拒绝接受其DHCP OFFER,并重新发送DHCP REQUEST信息。
注:实际上并不是所有DHCP客户端都会无条件接受DHCP服务器的响应,客户端可以保留自己的一些TCP/IP设定,比如网关、DNS地址等等
将地址分配给客户端后,DHCP服务器会发送一个DHCP ACK消息,以确认IP租约的正式生效,结束完整的DHCP工作过程。
DHCP客户端成功地从服务器取得IP地址之后,一般不需要再发送DHCP DISCOVER信息了,除非其租约已经到期或者IP地址重新设定回0.0.0.0。此时客户端会直接使用已经租用到的IP地址向为其发此IP地址的DHCP服务器发出DHCP REQUEST信息,DHCP服务器会尽量让客户端使用原来的IP地址,如果没有特殊的情况,会直接响应DHCP ACK,允许客户端继续使用该IP地址。如果该地址已经失效或者已经被其他主机使用了,服务器则会响应一个DHCP NACK数据包给客户端,要求其重新执行DHCP DISCOVER。
注意:客户端执行DHCP DISCOVER后,如果没有DHCP服务器响应客户端的请求,客户端会随机使用169.254.0.0/16网段中的一个IP地址配置本机地址。
简单的说就是在一个存在DHCP服务器的网络环境中,客户端发送一个目标地址为255.255.255.255的广播给网络中的所有主机,其他客户端收到此消息会直接丢弃,而DHCP服务器收到此消息后则会从其地址池中随机选择一个IP给发送此消息的客户端来配置其网络参数,客户端接收到消息后,就开始处理本身的网络参数,包括网关、DNS等等信息,并且会给服务器发送一个确认信息,表示该参数已经被接受了,可别又分给其他客户端。
这里有个地方需要注意一下,当客户端无论是关闭网络接口(ifdown)、重新启动(reboot)、关机(shutdown)等行为都算是脱机,这个时候服务器端会收回IP,并放到自己的备用区中,等待未来使用。但通过前面我们讲述原理知道“DHCP服务器会尽量让客户端使用原来的IP地址,如果没有特殊的情况,会直接响应DHCP ACK,允许客户端继续使用该IP地址”所以当重启网络服务的时候,常常会发现IP地址居然没有改变,原因就在这里。

2. Linux dhcp服务器搭建命令

2.1 安装DHCP服务

[root@zcwyou ~]# yum -y install dhcp

总下载量:513 k
安装大小:1.4 M
Downloading packages:
dhcp-4.2.5-68.el7.centos.1.x86_64.rpm | 513 kB 00:00:04
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
正在安装 : 12:dhcp-4.2.5-68.el7.centos.1.x86_64 1/1
验证中 : 12:dhcp-4.2.5-68.el7.centos.1.x86_64 1/1

已安装:
dhcp.x86_64 12:4.2.5-68.el7.centos.1

完毕!

安装DHCP服务

2.2 复制DHCP配置模版

[root@zcwyou ~]# rm -f /etc/dhcp/dhcpd.conf
[root@zcwyou ~]# cp  /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf

DHCP配置模版

2.3 修改DHCP配置模版

[root@zcwyou ~]# vi /etc/dhcp/dhcpd.conf

修改DHCP配置模版

dhcpd.conf配置文件参数说明

1.常用参数:
(1) ddns-update-style (none|interim|ad-hoc)
作用:定义所支持的DNS动态更新类型。
none:表示不支持动态更新
interim:表示DNS互动更新模式
ad-hoc:表示特殊DNS更新模式
因为 DHCP 客户端所取得的 IP 通常是一直变动的,所以某部主机的主机名与 IP 的对应就很难处理。此时 DHCP 可以透过 ddns 来更新主机名与 IP 的对应。
注意:这个选项是必选参数哈,配置文件中必须包含这一个参数并且要放在第一行。
(2) gnore client-updates
作用:忽略客户端更新
(3) default-lease-time number(数字)
作用:定义默认IP租约时间
(4) max-lease-time number(数字)
作用:定义客户端IP租约时间的最大值,当客户端超过租约
间却尚未更新 IP 时,最长可以使用该 IP 的时间;
注意:(3)、(4)都是以秒为单位的租约时间,该项参数可以作用在全局配置中,也可以作用在局部配置中。

2.常用DHCP配置参数
声明一般用来指定IP作用域、定义为客户端分配的IP地址池等等
声明格式如下:
声明 {
选项或参数;
}
常见声明的使用如下:
(1)subnet 网络号 netmask 子网掩码{……}
作用:定义作用域,指定子网
注意:网络号必须与DHCP服务器的网络号相同
(2)range 起始IP地址结束IP地址
作用:指定动态IP地址范围
注意:可以在subnet声明中指定多个range,但多个range所定义IP范围不能重复。

  1. 常用Linux DHCP命令选项介绍
    选项通常用来配置DHCP客户端的可选参数,比如定义客户端的DNS地址、默认网关等等。选项内容都是以option关键字开始滴
    常见选项使用如下:
    (1)option routers IP地址
    作用:为客户端指定默认网关
    (2)option subnet-mask 子网掩码
    作用:设置客户端的子网掩码
    (3)option domain-name-servers IP地址
    作用:为客户端指定DNS服务器地址
    (4) option broadcasst-address 广播地址:
    设定广播地址而已。如果没有设定的话,系统应该会自动依据 class A, B, C 的原则来计算出广播地址。

  2. Linux DHCP配置固定IP配置:
    (1)host 主机名 {……}
    作用:用于定义保留地址
    注意:该项通常搭配subnet声明使用。
    (2)hardware 类型硬件地址
    作用:定义网络接口类型和硬件地址。常用类型为以太网(ethernet),地址为MAC地址。
    (3)fixed-address IP地址
    作用:定义DHCP客户端指定的IP地址。
    注意:(2)、(3)项只能应用于host声明中。

2.4 Linux dhcp server 配置参数参考

[root@zcwyou ~]# cat /etc/dhcp/dhcpd.conf |grep -Ev "^$|#"

#域名

option domain-name "example.com";

分配给客户端的DNS服务器

option domain-name-servers 223.5.5.5, 223.6.6.6;

默认时间值

default-lease-time 600;
max-lease-time 7200;
log-facility local7;

核心自定义配置,网络,网关,DNS都在这里指定,配置文件必须至少包含本地一张网卡的网段

subnet 10.0.88.0 netmask 255.255.255.0 {
  range 10.0.88.2 10.0.88.254;
  option domain-name-servers 223.5.5.5,223.6.6.6;
  option domain-name "example.com";
  option routers 10.0.88.1;
  option broadcast-address 10.0.88.255;
  default-lease-time 600;
  max-lease-time 7200;
}

以下是一份可用的配置,假设本机某张网卡固定IP为192.168.28.1/24

option domain-name "linuxrumen.com";
option domain-name-servers 223.5.5.5, 223.6.6.6;
default-lease-time 600;
max-lease-time 7200;
authoritative;
log-facility local7;
subnet 192.168.28.0 netmask 255.255.255.0 {
  range 192.168.28.2 192.168.28.254;
  option domain-name-servers 223.5.5.5,223.6.6.6;
  option routers 192.168.28.1;
  option broadcast-address 192.168.28.255;
  default-lease-time 600;
  max-lease-time 7200;
}

为其它VLAN的主机分配IP

subnet 10.0.77.0 netmask 255.255.255.0 {
  range 10.0.77.2 10.0.77.254;
  option domain-name-servers 223.5.5.5,223.6.6.6;
  option domain-name "example.com";
  option routers 10.0.77.1;
  option broadcast-address 10.0.77.255;
  default-lease-time 600;
  max-lease-time 7200;
}

特定主机固定配置信息

host passacaglia {
  hardware ethernet 0:0:c0:5d:bd:95;
  filename "vmunix.passacaglia";
  server-name "toccata.fugue.com";
}

特定主机固定IP

host fantasia {
  hardware ethernet 00:0C:29:a5:f0:d4;
  fixed-address 10.0.88.88;
}

多网卡共享,一般不需要

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;
  }
}

如果有多网卡,指定监听的网卡XXX

[root@zcwyou ~]# vi /etc/sysconfig/dhcpd

DHCPDARGS=XXX

2.5 Linux dhcp 服务管理

修改后配置文件后,

重启启动DHCP服务

[root@zcwyou ~]# systemctl restart dhcpd

设置Linux dhcpd 服务开机启动

[root@zcwyou ~]# systemctl enable dhcpd

防火墙设置:

[root@zcwyou ~]# firewall-cmd --permanent --add-service=dhcp
[root@zcwyou ~]# firewall-cmd --reload

3. Linux dhcp client 查询(以Centos为例)

即以CentOS系统作为客户端,向DHCP服务器请求网络配置,方法如下:

网络参数设置:

[root@zcwyou ~]# vi /etc/sysconfig/network-scripts/ifcfg-XXX

##检查以下两个参数###

BOOTPROTO=dhcp
ONBOOT=yes

防火墙设置:

[root@zcwyou ~]# firewall-cmd --permanent --add-service=dhcp
[root@zcwyou ~]# firewall-cmd --reload

重启网络:

[root@zcwyou ~]# systemctl restart network

检查是否可以获取IP地址

[root@zcwyou ~]# ip addr

检查是否正常获取,域名和DNS服务器信息

[root@zcwyou ~]# cat /etc/resolv.conf

查看路由,看看没有Destination为0.0.0.0的默认路由,Gateway指向DHCP配置的网关地址

[root@zcwyou ~]# route -n

如果是Windows系统作为DHCP客户端,请自行查看网卡的属性。

4. 总结

Linux DHCP服务器搭建是较为基础的技能,也是网络中经常使用的服务之一。运维人员必须掌握并能熟悉排错 。

赞(0)
未经允许不得转载:Linux入门学习到精通 » Linux CentOS DHCP服务器搭建教程
分享到: 更多 (0)

学习QQ群:557371664

关注微信公众号自助视频学习

评论 抢沙发

评论前必须登录!