wiki/网络/DHCP/DHCP.md
2025-01-02 10:46:09 +08:00

155 lines
4.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
title: DHCP
categories:
- Linux服务
tags:
- DHCP
- Linux
date: 2021-03-27 21:55:45
---
# DHCP
## 定义
DHCP (Dynamic Host Configuration Protocol动态主机配置协议是一个工作在应用层的局域网网络协议数据传输时使用UDP不可靠传输协议工作通常被应用在大型的局域网络环境中主要作用是集中的管理、分配网络资源使网络环境中的主机能动态的获得IP地址、Gateway 地址、DNS服务器地址等信息并能够提升地址的使用率。
## DHCP工作原理
![](https://lzcwy-1257903760.cos.ap-beijing.myqcloud.com/%E8%BF%90%E7%BB%B4/DHCP/DHCP工作原理.png)
1、DHCP客户端进行IP请求
DHCP客户机启动时没有ip便会使用0.0.0.0作为源ip携带自己的mac地址使用255.255.255.255广播地址作为目标地址通过UDP67端口发送广播报文也就是DHCP Discover报文。没开UDP67端口的主机无法接受报文节省主机资源开销
2、DHCP服务器响应请求
当DHCP服务器收到客户及请求ip地址的信息时查看ip地址池找一个ip写入到DHCP OFFER的消息中然后DHCP使用自己的IP地址作为源地址使用255.255.255.255作为目标地址使用UDP68端口作为源端口来广播DHCP OFFER
DHCP OFFER的报文内容
```shell
DHCP客户机的MAC地址;
DHICP服务器提供的合法IP地址;
子网掩码;默认网关(路由);
租约的期限;
DHCP服务器的IP地址-MAC。
```
3、DHCP客户机选择IP
DHCP客户端从接收到的第一个DHCP OFFER消息中选择一个IP地址客户机将DHCP REQUEST消息广播到所有的DHCP服务器表明它接受提供的内容
4、DHCP服务器确认租约
DHCP服务器接收到DHCP REQUEST消息后以DHCPACK消息的形式向客户机广播成功的确认当客户机收到DHCP ACK消息时它就配置了IP地址完成了TCP/IP的初始化。
5、DHCP客户机续租
![](https://lzcwy-1257903760.cos.ap-beijing.myqcloud.com/%E8%BF%90%E7%BB%B4/DHCP/DHCP续租.png)
DHCP客户机会在租期过去50%的时候直接向为其提供IP地址的DHCP服务器发送DHCP REQUEST消息包。如果客户机接收到该服务器回应的DHCP ACK消息包客户机就根据包中所提供的新的租期以及其它已经更新的TCP/IP参数更新自己的配置IP租用更新完成。如果没有收到该服务器的回复则客户机继续使用现有的IP地址因为当前租期还有50%。
如果在租期过去50%的时候没有更新则DHCP客户机将在租期过去87.5%的时候再次向为其提供IP地址的DHCP那器联系。如果还不成功到租约的100%时候DHCP客户机必须放弃这个IP地址重新申请。如果此时无DHCP服务器用DHCP客户机会使用169.254.0.0/16中随机的一个地址并且每隔5分钟再进行尝试。
## DHCP服务搭建
### DHCP软件信息
软件名dhcpDHCP服务软件包 dhcp-commDHCP命令软件包
服务名dhcpdDHCP服务名dhcrelayDHCP中继服务名
端口号udp 67客户端目标端口udp 68服务器源端口
配置文件:
```
dhcpd服务的配置文件/etc/dhcp/dhcpd.conf
dhcpd.conf.sample dhcp的模板配置文件/usr/share/doc/dhcp-4.*.*/dhcpd.conf.sample
dhcrelay dhcp中继的配置文件/etc/sysconfig/dhcrelay
```
### DHCP配置文件详解
```shell
subnet 192.168.133.0 netmask 255.255.255.0 {
#声明要分配的网段和子网掩码
range 192.168.133.3 192.168.133.254;
#声明可用IP地址池
option domain-name "lzcwy.com" ;
#设置DNS域
option domain-name-servers 8.8.8.8 ;
#设置DNS服务器地址
option routers 192.168.133.2;
#默认网关的地址
option broadcast-address 192.168.133.255;
#广播地址(可不写)
default-lease-time 600;
#默认租约(s)
max-lease-time 7200;
#最大租约(s)
```
### DHCP部署
将DHCP配置文件模板覆盖配置文件
```shell
cp -a /usr/share/doc/dhcp-4.*.*/dhcpd.conf.sample /etc/dhcp/dhcpd.conf
```
修改配置文件
```shell
vim /etc/dhcp/dhcpd.conf
```
重启服务
```shell
systemctl restart dhcpd
```
重启客户机网卡
```
ifdown/ifup
```
### 配置静态ip
1、通过arp -a 查看客户端的ip地址
2、修改/etc/dhcp/dhcpd.conf文件
```shell
host fantasia {
hardware ethernet mac地址; #客户机的mac地址
fixed-address IP地址; #分配给客户机的静态ip地址
}
```
3、重启DHCP服务
```shell
systemctl restart dhcpd
```
4、重启客户机网卡验证IP获取是否成功
```shell
ifdown/ifup
```
### 配置DHCP超级作用域
待补充——我菜啊
### 配置DHCP中继
待补充——我菜啊