Linux学习笔记--DHCP
Dynamic Host Configuration Protocol (DHCP)动态主机配置协议
DHCPv6(RFC 3315)IPv6使用
DHCPv4(RFC 2131)IPv4使用
本文主要介绍DHCPv4
DHCP是一种客户/服务器协议,它主要为客户端指定配置信息(IP 地址、子网掩码、网关IP、DNS IP)。DHCP的设计基于早期Internet 引导程序协议 (BOOTP 【RFC 0951】)。BOOT只为客户端提供有限的配置信息,并且没有提供一种机制来支持改变以提供的信息。DHCP使用租用的概念来扩展BOOTP,并且可提供主机操作所需的所有信息。租用允许客户使用一个商量的时间来配置信息。客户端可向DHCP服务器请求续订租约,并继续操作。客户端UDP 68,服务端 UDP 67。
DHCP 由两个部分组成:地址管理和配置数据交付
地址管理 地址分配和配置数据交互 (自动 动态 手动)
DHCP服务程序常见术语
作用域:一个完整的ip地址段,DHCP服务根据作用域来管理网路的分布、分配ip地址及其他配置参数
地址池: 专门为DHCP用途而分配的一个连续的ip地址范围
租用期:分配给客户的地址只在一段特定时间内有效
预约:保证局域子网中特定设备总是获取到相同的ip地址
DHCP和BOOTP报文格式
DHCP扩展了BOOTP。DHCP消息格式的定义采用扩展BOOTP的方式,以保持两种协议的兼容性,这样即使在没用安装DHCP服务器的网路中,BOOTP客户机仍然可以使用DHCP服务器和BOOTP中继代理支持DHCP服务。
报文详解
OP | 标识消息是请求(1)应答(2) |
---|---|
Htype | 硬件地址类型(以太网 1) |
Hlen | 表示硬件地址长度单位字节(以太网 6) |
Hops | 保存消息传输过程中中继次数,消息发送方将将该值设置为0 |
Xid | 是由客户端选择的一个随机数,服务端需要将它复制到响应中。用于应答与请求的匹配 |
Secs | 由客户端产生记录客户端获得ip或续租ip的时间 |
Flags | 此字段在BOOTP中保留未用,在DHCP中表示标志字段 只有标志字段的最高位才有意义,其余的位均被置为0。最左边的字段被解释为广播响应标志位,内容如下所示: • 0:客户端请求服务器以单播形式发送响应报文• 1:客户端请求服务器以广播形式发送响应报文 |
ciaddr | 如果客户处于BOUND、RENEW或REBINDING状态和回应arp请求时,填写客户ip地址 |
Yiaddr | ‘你’(客户)ip |
Siaddr | 下一个服务端ip地址用于BOOTP;服务端返回 DHCPOFFER,DHCPACK |
Giaddr | DHCP中继IP |
Chaddr | 客户硬件地址(以太网中mac地址) |
Sname | 可选的服务器主机名,以0的字符串结尾 |
File | 客户端启动配置文件名由dhcp服务端填写 |
Option | 选项参数长度可变,用于区分DHCP消息和传统BOOTP消息 |
常见选项
DHCP消息数据类型
选项值 | 消息数据包名称 | 使用 |
---|---|---|
1 | DHCPDISCOVER | 客户端广播给局域网内可用的服务端 |
2 | DHCPOFFER | 服务端给客户端发送DHCPOFFER(内有配置参数)相应DHCPDISCOVER |
3 | DHCPREQUEST | DHCP客户端可能会收到很多Offer请求报文,所以必须在这些应答中选择一个。通常是选择第一个Offer应答报文的服务器作为自己的目标服务器,并向该服务器发送一个广播的Request请求报文,通告选择的服务器,希望获得所分配的IP地址。另外,DHCP客户端在成功获取IP地址后,在地址使用租期达到50%时,会向DHCP服务器发送单播Request请求报文请求续延租约,如果没有收到ACK报文,在租期达到87.5%时,会再次发送广播的Request请求报文以请求续延租约。 |
4 | DHCPACK | 与DHCPOFFER报文相似。但客户端的FQDN选项包括在内。 |
5 | DHCPNAK | 服务端向客户端发送,客户端索要ip地址不正确(客户端移动到新的网路内)或客户端租期失效 |
6 | DHCPDECLINE | 客户端向服务端指出已有可用ip地址 |
7 | DHCPRELEASE | 客户端向服务端表示放弃ip地址和剩余的租期 |
8 | DHCPINFORM | 客户端向服务端请求局域网内配置信息,客户端已经连接上外部网路 |
9 | DHCPFORCERENEW | 详见RFC3203 |
10 | DHCPLEASEQUERY | 详见RFC4388 |
11 | DHCPLEASEUNASSIGNED | 详见RFC4388 |
12 | DHCPLEASEUNKNOWN | 详见RFC4388 |
13 | DHCPLEASEACTIVE | 详见RFC4388 |
DHCP过程
安装dhcpd程序
dhcpd程序用于提供dhcp协议服务,挂载光盘镜像,配置yum仓即可yum install dhcp
dhcp服务程序域配置文件 | 位置 |
---|---|
主配置文件 | /etc/dhcp/dhcpd.conf |
参考配置文件 | /usr/share/doc/dhcp*/dhcpd.conf.example |
执行程序 | /usr/sbin/dhcpd /usr/sbin/dhcrelay |
日志记录文件 | /var/lib/dhcpd/dhcpd.leases |
配置参数
参数 | 作用 |
---|---|
ddns-update-style类型 | 定义dns服务动态更新的类型 none (不支持动态更新),interim(互动更新模式)ad-hoc(特殊更新模式) |
allow/ignore client-update | 允许/忽略客户机更新dns记录 |
default-lease-time | 默认超时时间 |
max-lease-time | 最大超时时间 |
option domain-name-server+ip | 定义dns服务器地址 |
option domain-name | 定义dns域名 |
range+网段 | 定义用于分配的IP地址池 |
option subnet-mask | 定义客户机的子网掩码 |
option routers+ip | 定义客户机网关地址 |
broadcase-address+ip | 定义广播地址 |
ntp-server +ip | 定义客户机ntp |
nis-server +ip | 定义客户的nis |
hardware | 指定网卡接口类型域mac地址 |
server-name | DHCP服务端主机名 |
fixed-address+ip | 讲某个固定ip地址分配给指定主机 |
time-offset+时间 | 指定客户端与格林尼治时间的偏移差 |
linux --DHCP服务使用实例
1单网段配置
如果是虚拟机先将两台设备网络模式调为一致
服务端配置vim /etc/dhcp/dhcpd.conf
ddns-update-style interim;
ignore client-updates;
subnet 192.168.40.0 netmask 255.255.255.0 {
option routers 192.168.40.1;
option subnet-mask 255.255.255.0;
option domain-name-servers 114.114.114.114;
range dynamic-bootp 192.168.40.200 192.168.40.254;
default-lease-time 60;
max-lease-time 60;
}
systmectl restart dhcpd
客户端
进入虚拟机网络编辑器
不使用本地dhcp服务dhclient
2固定ip配置
vim /etc/dhcp/dhcpd.conf
host boss {
hardware ethernet 要绑定客户端的mac地址;
fixed-address 要绑定的ip地址;
}
host ns2 {
hardware ethernet 要绑定客户端的mac地址;
fixed-address 要绑定的ip地址;
}
参考文献:
1.[ tcp/ip 详解卷一](第二版)
2.RFC 2131 2132
3.《linux就该这样学》