介绍
DHCP, Dynamic Host Configuration Protocol, 是一个自动给 client machines 分发 TCP/IP 信息的网络协议.
每一个 client 通过连接 DHCP server, 来获取自己的网络配置信息 (包括, IP address, gateway, 和 DNS servers).
安装
配置
配置文件为: /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
|