DHCP-服务搭建

介绍

DHCP, Dynamic Host Configuration Protocol, 是一个自动给 client machines 分发 TCP/IP 信息的网络协议.

每一个 client 通过连接 DHCP server, 来获取自己的网络配置信息 (包括, IP address, gateway, 和 DNS servers).

安装

1
yum install -y dhcp

配置

配置文件为: /etc/dhcp/dhcp.conf, 这是一个空的配置文件, 在 /usr/share/doc/dhcp-your-version/ 目录下有示例配置文件.

DHCP 还是用 /var/lib/dhcpd/dhcpd.leases 文件存放 client lease database.

配置语法

# 为注释符号.

有两种语句:

  • Parameters, 单独的语句, 以 ; 结尾
  • Declaration, 就是有 {} 的部分

重新加载配置

借助 omshell 命令.

DHCP 服务配置示例

Subnet Declaration

1
2
3
4
5
6
7
8
subnet 192.168.1.0 netmask 255.255.255.0 {
option routers 192.168.1.254;
option subnet-mask 255.255.255.0;
option domain-search "example.com";
option domain-name-servers 192.168.1.1;
option time-offset -18000; # Eastern Standard Time
range 192.168.1.10 192.168.1.100;
}
  • subnet 定义一个子网
  • netmask 指定这个子网的范围.
  • option routers 指定 router 的 IP
  • option subnet-mask 为后面的客户端指定子网掩码
  • option domain-search 指定域名解析的搜索域
  • option domain-name-servers 指定 DNS 服务器 IP
  • option time-offset 用于时间同步
  • range 指定 DHCP 服务器可分配的 IP 范围

Range Parameter

1
2
3
4
5
6
7
8
9
10
default-lease-time 600;
max-lease-time 7200;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.1.255;
option routers 192.168.1.254;
option domain-name-servers 192.168.1.1, 192.168.1.2;
option domain-search "example.com";
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.10 192.168.1.100;
}

在 declaration 语句之外的 parameter 语句可以作用于其后的所有 section.

  • default-lease-time, 指定默认的 ip lease time, 即 client 获取这个 ip 的有效时间
  • max-lease-time, 指定最大 ip lease time
  • option broadcast-address, 指定网段中的广播地址

Static IP Address Using DHCP

1
2
3
4
5
host apex {
option host-name "apex.example.com";
hardware ethernet 00:A0:78:8E:9E:AA;
fixed-address 192.168.1.4;
}
  • host apex, 指定对一个特定的主机起作用, apex 为主机名条目 (在 dhcp 中的一个标识符, 用于区别多个配置)
  • option host-name, 指定主机名
  • hardware ethernet, 指定 MAC 地址
  • fixed-address, 指定对这个主机分配的固定 IP

Static IP Address Using DHCP on Multiple Interface

1
2
3
4
5
6
7
8
9
10
11
12
13
Host apex.0 {
option host-name “apex.example.com”;
hardware ethernet 00:A0:78:8E:9E:AA;
option dhcp-client-identifier=ff:00:00:00:00:00:02:00:00:02:c9:00:00:02:c9:03:00:31:7b:11;
fixed-address 172.31.0.50,172.31.2.50,172.31.1.50,172.31.3.50;
}

host apex.1 {
option host-name “apex.example.com”;
hardware ethernet 00:A0:78:8E:9E:AB;
option dhcp-client-identifier=ff:00:00:00:00:00:02:00:00:02:c9:00:00:02:c9:03:00:31:7b:12;
fixed-address 172.31.0.50,172.31.2.50,172.31.1.50,172.31.3.50;
}
  • option dhcp-client-identifier, 指定 DHCP 客户端标识符

DHCP client identifier 是一种替代使用 MAC 地址作为客户端标识的方式.

Shared-network Declaration

1
2
3
4
5
6
7
8
9
10
11
12
13
14
shared-network name {
option domain-search "test.redhat.com";
option domain-name-servers ns1.redhat.com, ns2.redhat.com;
option routers 192.168.0.254;
#more parameters for EXAMPLE shared-network
subnet 192.168.1.0 netmask 255.255.252.0 {
#parameters for subnet
range 192.168.1.1 192.168.1.254;
}
subnet 192.168.2.0 netmask 255.255.252.0 {
#parameters for subnet
range 192.168.2.1 192.168.2.254;
}
}
  • shared-network name 定义一个名为 “name” 的共享网络.

通常情况下, 一个 dhcp 服务器只为一个子网提供 IP 地址分配, 而使用 shared-network 则能为多个子网提供.

Group Declaration

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
group {
option routers 192.168.1.254;
option subnet-mask 255.255.255.0;
option domain-search "example.com";
option domain-name-servers 192.168.1.1;
option time-offset -18000; # Eastern Standard Time
host apex {
option host-name "apex.example.com";
hardware ethernet 00:A0:78:8E:9E:AA;
fixed-address 192.168.1.4;
}
host raleigh {
option host-name "raleigh.example.com";
hardware ethernet 00:A1:DD:74:C3:F2;
fixed-address 192.168.1.6;
}
}
  • group, 定义了一个 dhcp group, 对组内的设备应用相同的配置

Lease Database

/var/lib/dhcp/dhcpd.leases 文件存储 DHCP client 的 lease 信息. 一般不对这个文件做修改.

DHCP lease information 包含:

  • lease 的时长
  • lease 的开始和结束时间
  • 哪一个 IP 被分配
  • Client 的 MAC 地址

使用

服务的启用和停止

启用:

1
systemctl start dhcpd.servise

停止:

1
systemctl stop dhcpd.servise

PXE 配置示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
authoritative;
ddns-update-style interim;
default-lease-time 14400;
max-lease-time 14400;
allow booting;
allow bootp;

#Default gateway
option routers 192.168.177.1;
#DHCP network broadcast address
option broadcast-address 192.168.177.255;
#DHCP network subnet mask
option subnet-mask 255.255.255.0;
#IP address of DNS server
option domain-name-servers 192.168.177.1;
#Default NTP server
option ntp-servers time.google.com;
#Default domain name
option domain-name "pxe.com";

subnet 192.168.177.0 netmask 255.255.255.0 {
range 192.168.177.20 192.168.177.100;
filename "pxelinux.0";
next-server 192.168.177.2;
}
  • filename 指定要拉取的文件名 (这里是 pxe 启动的引导文件)
  • next-server 指定在哪里拉取文件 (这里是 TFTP 服务器位置)

Archlinux 上的搭建示例

1
cp /etc/dhcpd.conf /etc/dhcpd.conf.example

DHCP-服务搭建
http://example.com/2024/03/12/DHCP-服务搭建/
作者
Jie
发布于
2024年3月12日
许可协议