Write by lyc at 2019-3-27
参考博文:
DHCP动态分配主机地址
散尽浮华:linux下DHCP服务原理总结

1.dhcp 工作原理

  • dhcp运作方式:客户端传输广播包给整个物理网络段内的所有主机,如局域网内有DHCP服务器时,才会响应客户端的IP参数要求,所以DHCP服务器与客户端应该在同一个物理网段内。
  • 如果网络中存在多个DHCP Server,则多个DHCP Server均会回复dhcp客户端发送的DHCP Discovery报文。
  • 如果同一个 vlan 内没有DHCP Server,而该 VlanIf 配置了DHCP Relay 功能,则该 Vlanif 即为 DHCP中继,DHCP中继会将该DHCP报文的源IP地址修改为该 Vlanif 的IP地址,而目的地址则为DHCP Relay 配置的DHCP Server的IP地址。同时修改DHCP报文中,giaddress为 VlanIf 的IP地址。并以单播将DHCP Discovery 发送到DHCP Server端。
  • DHCP Client收到若干个DHCP Server响应的DHCP Offer 报文后,选择其中一个DHCP Server作为目标DHCP Server。选择策略通常为选择第一个响应的DHCP Offer报文所属的DHCP Server。
  • 然后以广播方式回答一个DHCP Request 报文,该报文中包含向目标DHCP请求的IP地址等信息。之所以是以广播方式发出的,是为了通知其他DHCP Server自己将选择该DHCP Server所提供的IP地址。

dhcp 的4步租约过程:

dhcp租约过程就是dhcp客户机动态获取IP地址的过程,dhcp租约过程分为4步:

  1. 客户机请求IP:客户机发 DHCPDISCOVER 广播包
  2. 服务器响应:服务器发 DHCPOFFER 广播包
  3. 客户机选择IP:客户机发 DHCPREQUEST 广播包
  4. 服务器确定租约:服务器发 DHCPACK 广播包

如何知道客户机从哪个DNS Server获得ip地址?

  • windows中直接查看网络链接详细信息,有个dhcp服务器,可以看到服务器的ip地址。
  • dhcpd linux服务器端的租约文件在/var/lib/dhcpd/dhcpd.leases,系统日志 /var/log/message 查看租约步骤

2.dhcpd 安装

1
2
3
$ yum install -y dhcp
$ systemctl enable dhcpd
$ systemctl start dhcpd

3.配置dhcpd.conf

  • dhcpd主配置文件:/etc/dhcp/dhcpd.conf,修改配置文件需要重启 dhcpd 服务生效
  • 如果没有配置rangedhcpd是不会自动分配IP地址的,这种方式属于公司静态绑定。
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
26
27
28
29
30
31
32
33
34
35
$ cat /etc/dhcp/dhcpd.conf 
#
# DHCP Server Configuration file.
# see /usr/share/doc/dhcp*/dhcpd.conf.sample
# see 'man 5 dhcpd.conf'
#
authoritative;
ddns-update-style interim;
ignore client-updates;
log-facility local4;

# 1.IP,MAC绑定
subnet 192.168.28.0 netmask 255.255.254.0 {
option routers 192.168.29.254; # 下发网关
option subnet-mask 255.255.254.0;; # 下发掩码
option broadcast-address 192.168.29.255; # 下发广播地址
option domain-name-servers 58.22.96.66,218.104.128.106,223.5.5.5,114.114.114.114; # 下发dns服务器
option time-offset 28800; # 设置时间偏差
default-lease-time 43200; # 设置默认租期,单位为秒
max-lease-time 432000; # 设置客户端最长租期,单位为秒
host 1330_192.168.28.138 {hardware ethernet 28:d2:44:13:f7:dc;fixed-address 192.168.28.138;} # IP,MAC绑定一台设备
}


# 2.range 自动分配ip地址
subnet 192.168.209.0 netmask 255.255.255.0 {
range 192.168.209.2 192.168.209.250; # 自动分配ip地址的ip池区间
option routers 192.168.209.2; # 下发网关
option subnet-mask 255.255.255.0; # 下发掩码
option broadcast-address 192.168.209.255; # 下发广播地址
option domain-name-servers 223.5.5.5,114.114.114.114; # 下发dns服务器
option time-offset 28800; # 设置时间偏差
default-lease-time 43200; # 设置默认租期,单位为秒
max-lease-time 432000; # 设置客户端最长租期,单位为秒
}