DHCP服务器搭建
1、DHCP工作原理
1.1、DHCP协议的工作方式
DHCP通常是用于局域网内的一个通信协议,它主要是通过客户端发送广播数据报给整个物理网段的所有主机,若局域网内有DHCP服务器时,才会响应客户端的IP参数要求。所以,DHCP服务器与客户端应该在同一个物理网段内。
客户端获取IP参数的程序可以简化如下:
-
客户端:利用广播数据报发送DCHP服务器的数据报
当客户端开机或重新启动网卡的时候,客户端主机会发送查找DHCP服务器的UDP数据报给所有物理段内的计算机。此数据包的目标IP会是255.255.255.255.
-
服务器端:提供客户端网络相关的租约以供选择
DHCP服务器咋接收到客户端的要求后,会针对这个客户端的硬件MAC与本身的设置数据来进行下列工作:
- 到服务器的日志文件中查找是否曾经租用过某个IP,若有且该IP目前无人使用,则提供此IP给客户端;
- 若配置文件针对该MAC地址提供特定的固定IP时,则提供该固定的IP给客户端;
- 若不符合上述两个条件,则随机选取当前没有被使用的IP参数给客户端,并记录下来。
-
客户端:决定选择DHCP服务器提供的网络参数租约并向服务器确认
当决定好使用此服务器的网络参数租约后,客户端便开始使用这组网络参数来配置自己的网络环境。此外,客户端会发送一个广播数据报给所有物理网段内的主机,告诉已经接受该服务器的租约。
-
服务器端:记录该次租约行为并向客户端发送响应数据报信息以确认客户端的使用
当服务器端收到客户端的确认选择后,服务器端会回送确认的响应数据包,并且告知客户端这个网络参数租约的期限。那么租约何时到期并解约呢?
- 客户端脱机:关闭网络接口、重新启动、关机等
- 客户端租约到期
1.2、DHCP服务器给予客户端固定IP或动态IP
-
固定IP
绑定MAC地址,如果想分配固定IP的话,必须知道MAC地址
-
动态IP
由DHCP服务器在IP地址池中随机选择的IP地址提供给客户端
2、DHCP服务器端的配置
2.1、所需软件与文件结构
所需要的软件是dhcp,可以用yum安装。其中比较重要的配置文件如下:
文件 | 说明 |
---|---|
/etc/dhcp/dhcpd.conf | 主要配置文件,当不存在这个文件时可以把dhcpd.conf.sample文件复制为/etc/dhcp/dhcpd.conf |
/etc/sbin/dhcpd | 脚本文件 |
/var/lib/dhcp/dhcpd.leases | DHCP服务器与客户端租约建立的起始与到期就是记录在这个文件中 |
2.2、主要配置文件/etc/dhcp/dhcpd.conf的语法
规范:
- “#”为注释符号
- 除了右括号“)”后面之外,每行配置的最后都要以“,”作为结尾
- 语法主要形式是“<参数代码> <配置内容>”
- 某些配置项目必须以option来定义,基本形式为“option <参数代码> <配置内容>”
2.2.1、全局设置
参数设置 | 说明 |
---|---|
default-lease-time: | 默认的租约时间 |
max-lease-time: | 最大租约时间 |
option domain-name “域名” | 当你要查找主机名时,DNS系统会主动帮你在所要查找的主机名后加上这个域名后缀 |
option domain-name-servers IP1、IP2 | 这个参数可以修改客户端的/etc/resolv.conf文件,即nameserver后面接的DNS的IP |
ddns-update-style | 类型 |
ignore client-updates | |
option routers | 设定路由器的IP地址 |
2.2.2、IP分配设置(固定或动态)
首先,需要指定一个局域网:
subnet NETWORK_IP netmask NETMASK_IP {...}
{...}内的参数:
1、range IP1 IP2
2、host 主机名{...}
1、hardware ethernet 硬件地址
2、fixed-address IP地址
3、实验
3.1、实验准备
-
DHCP Server
配置信息:
IP外:10.0.0.185/8
VLAN(分配B类私有地址),IP内:172.16.0.1/16;网关:172.16.0.1
DNS:10.0.0.1
-
DHCP Client
位于DHCP Server的VLAN内
3.2、DCHP Server配置
DHCP Server的IP设置:
注意:DHCP Server一定要设置VLAN(LAN),否则DHCP给谁用呢?
# yum info dhcp #查看dhcp说明
# yum install dhcp -y #安装fhcp服务包
# rpm -ql dhcp #查看包的文件列表
查看包的文件列表 | 说明 |
---|---|
/usr/lib/systemd/system/dhcpd.service | 服务 |
/etc/dhcp/dhcpd.conf | 配置文件 |
/usr/share/doc/dhcp-4.2.5/dhcpd.conf.example | 配置范例 |
/usr/sbin/dhcpd | 脚本文件 |
注意:dhcp在空配置文件的情况下启动服务是起不来的 systemctl start dhcpd
拷贝范例文件来覆盖 .conf的配置文件:
# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
[root@server ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
BOOTPROTO=dhcp
/etc/dhcp/dhcpd.conf的配置如下:
[root@server ~]#vim /etc/dhcp/dhcpd.conf
#option domain-name "example.org"; 原本域名
option domain-name "li.com"; 可以任意修改
#option domain-name-servers ns1.example.org, ns2.example.org; 原DNS服务
option domain-name-servers 114.114.114.144,10.0.0.1; 建议修改
default-lease-time 600; 默认租期时长,时长根据环境来定
subnet 172.16.0.0 netmask 255.255.0.0 {
range 172.16.0.0 172.16.0.100;
option routers 172.16.0.1;
}
启动DHCP服务
[root@server ~]# systemctl start dhcpd
3.3、DHCP Client配置
DHCP Client配置网络配置(使用了固定IP),依次填入DHCP Server中配置的参数: