服务简介
动态主机配置协议(DHCP)是一种基于UDP协议且仅限于在局域网内部使用的网络协议,主要用于大型的局域网环境或者存在较多移动办公设备的局域网环境中,其主要用途是为局域网内部的设备或网络供应商自动分配IP地址等参数。
DHCP 工作过程
①首先由客户端以广播方式发出“DHCP Discover”报文来寻找网络中的DHCP服务端。
②当服务端接收到来自客户端的“DHCP Discover”报文后,就在自己的地址池中查找是否有可提供的IP地址。如果有,服务端就将此IP地址做上标记,并用“DHCP Offer”报文将之发送回客户端。
③由于网络中可能会存在多台DHCP服务端,所以客户端可能会接收到多个“DHCP Offer”报文。此时客户端只选择最先到达的“DHCP Offer”,并再次以广播方式发送“DHCP Request”报文。一方面要告知它所选择的服务端,同时也要告知其它没有被选择的服务端,这样这些服务端就可以将之前所提供的IP地址收回。
④被选择的服务端接收到客户端发来的“DHCP Request”报文后,首先将刚才所提供的IP地址标记为已租用,然后向客户端发送一个“DHCP Ack”确认报文,该报文中包含有IP地址的有效租约以及默认网关和DNS服务器等网络配置信息。
当客户端收到“DHCP ACK”报文后,就成功获得了IP地址,完成了初始化过程。
OP:若是client送给server的封包,设为1,反向为2;
Htype:硬件类别,ethernet为1;
Hlen:硬件长度,ethernet为6;
Hops:若数据包需经过router传送,每站加1,若在同一网内,为0;
Transaction ID:事务ID,是个随机数,用于客户和服务器之间匹配请求和相应消息;
Seconds:由用户指定的时间,指开始地址获取和更新进行后的时间;
Flags:从0-15bits,最左一bit为1时表示server将以广播方式传送封包给 client,其余尚未使用;
Ciaddr:用户IP地址;
Yiaddr:客户IP地址;
Siaddr:用于bootstrap过程中的IP地址;
Giaddr:转发代理(网关)IP地址;
Chaddr:client的硬件地址;
Sname:可选server的名称,以0x00结尾;
File:启动文件名;
* Options:,厂商标识,可选的参数字段
常用的option:
- 1 netmask
- 3 router
- 6 DNS
- 12 host name
- 51 ip address lease time
- 53 message type (dhcp报文8种类型)
- 54 server identification
- 55 parameter request list (需要服务器给你提供哪些东西:ip地址,域名,网关)
- 61 client identification
- 82 relay agent http://network.51cto.com/art/201008/223009.htm
- 255 end
名词解释
作用域:一个完整的IP地址段,DHCP协议根据作用域来管理网络的分布、分配IP地址及其他配置参数。
超级作用域:用于管理处于同一个物理网络中的多个逻辑子网段。超级作用域中包含了可以统一管理的作用域列表。
排除范围:把作用域中的某些IP地址排除,确保这些IP地址不会分配给DHCP客户端。
地址池:在定义了DHCP的作用域并应用了排除范围后,剩余的用来动态分配给DHCP客户端的IP地址范围。
租约:DHCP客户端能够使用动态分配的IP地址的时间。
预约:保证网络中的特定设备总是获取到相同的IP地址。
DHCP 主配置文件
ddns-update-style none; 设置DNS服务不自动进行动态更新
ignore client-updates; 忽略客户端更新DNS记录
authoritative; 当客户端请求一个非本DHCP分配范围的地址时,DHCP服务器将会发出拒绝,而不会等待相应超时,当请求被拒绝时客户端会重新向当前DHCP发送IP请求获得新地址。
subnet 192.168.10.0 netmask 255.255.255.0 { 作用域为192.168.10.0/24网段
range 192.168.10.50 192.168.10.150; IP地址池为192.168.10.50-150(约100个IP地址)
option subnet-mask 255.255.255.0; 定义客户端默认的子网掩码
option routers 192.168.10.1; 定义客户端的网关地址
option domain-name "linuxprobe.com"; 定义默认的搜索域
option domain-name-servers 192.168.10.1; 定义客户端的DNS地址
default-lease-time 21600; 定义默认租约时间(单位:秒)
max-lease-time 43200; 定义最大预约时间(单位:秒)
option broadcast-address 192.168.16.255; 定义广播地址
}
DHCP 中继代理配置
DHCP 中继代理程序(dhcrelay)可让没有 DHCP 服务器的子网向其他子网中的一个或多个 DHCP 服务器发出 DHCP 和 BOOTP 请求。<br /> DHCP 客户端请求信息时,DHCP 中继代理程序会将该请求转发到启动 DHCP 中继代理时指定的 DHCP 服务器列表。DHCP 服务器返回回复后,会向最初发送请求的网络广播或单播这个回复。<br />拷贝配置文件:<br />cp /lib/systemd/system/dhcrelay.service /etc/systemd/system/<br />vi /etc/systemd/system/dhcrelay.service<br />编辑 [Service] 部分的 ExecStart 选项,在该行的结尾处添加一个或多个服务器 IPv4 地址,如果要指定 DHCP 中继代理侦听 DHCP 请求的接口,请使用 -i 参数将其添加到 ExecStart选项(否则会侦听所有接口)<br />ExecStart=/usr/sbin/dhcrelay -d --no-pid 192.168.1.1 -i em1<br />重启服务
systemctl --system daemon-reload
systemctl restart dhcrelay