DHCP 详解
DHCP 相关概念介绍
1、网络配置
-
静态指定
-
动态获取
bootp # boot protocol (MAC与IP一一静态对应) dhcp # 增强的bootp,动态
2、DHCP(Dynamic Host Configuration Protocol)
- 动态主机配置协议
- 局域网协议,UDP协议(server:67 / client:68)
3、主要用途
- 用于内部网络和网络服务供应商自动分配IP地址给用户
- 用于内部网络管理员作为对所有电脑作集中管理的手段
4、使用场景
- 自动化安装系统
- 解决IPV4资源不足问题
5、DHCP 八种报文
- DHCP DISCOVER:客户端到服务器
- DHCP OFFER :服务器到客户端
- DHCP REQUEST:客户端到服务器
- DHCP ACK :服务器到客户端
- DHCP NAK:服务器到客户端,通知用户无法分配合适的IP地址
- DHCP DECLINE :客户端到服务器,指示地址已被使用
- DHCP RELEASE:客户端到服务器,放弃网络地址和取消剩余的租约时间
- DHCP INFORM:客户端到服务器, 客户端如果需要从DHCP服务器端获取更为详细的配置信息,则发送Inform报文向服务器进行请求,极少用到
6、续租
- 50% :租赁时间达到50%时来续租,刚向DHCP服务器发向新的DHCPREQUEST请求(单播)。如果dhcp服务没有拒绝的理由,则回应DHCPACK信息。当DHCP客户端收到该应答信息后,就重新开始新的租用周期
- 87.5%:如果之前DHCP Server没有回应续租请求,等到租约期的7/8时,主机会再发送一次广播请求
7、同网段多DHCP服务
- DHCP服务必须基于本地
- 先到先得的原则
8、跨网段
- RFC 1542 Compliant Routers
- dhcrelay: 中继
9、相关协议
- arp
- rarp
10、DHCP 工作流程
10.1 地址申请
- Client — dhcp discover
- Server — dhcp offer (IP/mask gw dns)
- Client — dhcp request
- Server — dhcp ack
10.2 地址续租
-
dhcp request(单播)
-
dhcp ack
-
dhcp request(单播)
-
dhcp nck
-
dhcp discover(无法获取到新地址时,会再次广播进行地址申请)
DHCP 的实现
1、实现方式
Linux DHCP协议的实现程序:
- dhcp
- dnsmasq(dhcp,dns)
2、DHCP Server
/usr/sbin/dhcpd
/etc/dhcp/dhcpd.conf --> /etc/rc.d/init.d/dhcpd
/etc/dhcp/dhcpd6.conf--> /etc/rc.d/init.d/dhcpd6
/usr/sbin/dhcrelay
/etc/rc.d/init.d/dhcrelay
dhcp server:67/udp
dhcp client: 68/udp
dhcpv6 client:546/udp
3、DHCP Client
dhclient:自动获取的IP信息: /var/lib/dhclient
[root@T-Neo ~]# dhclient -d # -d 表示 运行于前台
Internet Systems Consortium DHCP Client 4.2.5
Copyright 2004-2013 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/
Listening on LPF/ens38/00:0c:29:4a:0e:dd
Sending on LPF/ens38/00:0c:29:4a:0e:dd
Listening on LPF/ens37/00:0c:29:4a:0e:d3
Sending on LPF/ens37/00:0c:29:4a:0e:d3
Listening on LPF/ens33/00:0c:29:4a:0e:c9
Sending on LPF/ens33/00:0c:29:4a:0e:c9
Sending on Socket/fallback
DHCPREQUEST on ens38 to 255.255.255.255 port 67 (xid=0x5fb23cbb)
DHCPREQUEST on ens37 to 255.255.255.255 port 67 (xid=0x2e267e1d)
DHCPREQUEST on ens33 to 255.255.255.255 port 67 (xid=0x59a91ab1)
DHCPACK from 192.168.10.254 (xid=0x2e267e1d)
bound to 192.168.10.20 -- renewal in 744 seconds.
DHCPNAK from 192.168.200.10 (xid=0x5fb23cbb)
DHCPDISCOVER on ens38 to 255.255.255.255 port 67 interval 8 (xid=0x196ffb67)
DHCPACK from 192.168.1.1 (xid=0x59a91ab1)
bound to 192.168.1.10 -- renewal in 39975 seconds.
DHCPREQUEST on ens38 to 255.255.255.255 port 67 (xid=0x196ffb67)
DHCPOFFER from 192.168.200.10
DHCPACK from 192.168.200.10 (xid=0x196ffb67)
bound to 192.168.200.25 -- renewal in 19914 seconds.
4.3 dhcpd.conf 示例
option domain-name "magedu.com";
option domain-name-servers 192.168.0.1,8.8.8.8;
default-lease-time 86400;
max-lease-time 86400;
subnet 192.168.100.0 netmask 255.255.255.0 {
range 192.168.100.1 192.168.100.200;
option routers 192.168.100.1;
}
4、DHCP 配置文件
4.1 dhcpd.conf
帮助参考:man 5 dhcpd.conf
全局配置
subnet {
...
}
host {
}
其它配置选项:
filename: 指明引导文件名称
next-server:提供引导文件的服务器IP地址
示例:
filename "pxelinux.0";
next-server 192.168.100.100;
检查语法
service dhcpd configtest
4.2 地址分配记录
# /var/lib/dhcpd/dhcpd.leases
DHCP 示例
1、DHCP 安装
[root@Tang-Neo ~]# yum install dhcp -y
[</