温馨提示×

Linux DHCP如何分配IP

小樊
43
2026-08-06 04:09:17
栏目: 智能运维

在 Linux 中,DHCP 分配 IP 的过程主要遵循 DHCP 协议标准,通常由 DHCP 服务器(如 isc-dhcp-serverdnsmasq 等) 完成。下面我从 原理 → 流程 → 实际配置示例 三个层面说明。


一、DHCP 分配 IP 的基本原理

DHCP(Dynamic Host Configuration Protocol)用于 自动为客户端分配 IP 地址、子网掩码、网关、DNS 等信息

核心思想:

  • 客户端 没有 IP
  • 通过广播向网络请求 IP
  • 服务器从地址池中分配一个可用 IP
  • 分配是有 租期(lease)

二、DHCP 分配 IP 的完整流程(DORA)

DHCP 分配 IP 通常称为 DORA 过程

1️⃣ DHCP Discover(发现)

  • 客户端广播:
    DHCP Discover
    
  • 目的:寻找 DHCP 服务器

2️⃣ DHCP Offer(提供)

  • DHCP 服务器响应:
    DHCP Offer
    
  • 内容:
    • 可用 IP
    • 子网掩码
    • 网关
    • DNS
    • 租期

3️⃣ DHCP Request(请求)

  • 客户端广播:
    DHCP Request
    
  • 表示:我接受这个 IP

4️⃣ DHCP ACK(确认)

  • 服务器确认:
    DHCP ACK
    
  • IP 正式分配

✅ 此时客户端完成 IP 配置


三、Linux 中 DHCP 服务器如何分配 IP(以 ISC DHCP 为例)

1️⃣ 安装 DHCP 服务器

# Debian / Ubuntu
sudo apt install isc-dhcp-server

# CentOS / RHEL
sudo yum install dhcp

2️⃣ 配置 DHCP 地址池(核心)

配置文件:

/etc/dhcp/dhcpd.conf

示例配置:

subnet 192.168.1.0 netmask 255.255.255.0 {
  range 192.168.1.100 192.168.1.200;
  option routers 192.168.1.1;
  option subnet-mask 255.255.255.0;
  option domain-name-servers 8.8.8.8, 114.114.114.114;
  default-lease-time 600;
  max-lease-time 7200;
}

含义说明:

配置项 作用
range 可分配的 IP 范围
routers 默认网关
subnet-mask 子网掩码
domain-name-servers DNS
default-lease-time 默认租期(秒)
max-lease-time 最大租期

3️⃣ 指定 DHCP 监听网卡

# Ubuntu
sudo nano /etc/default/isc-dhcp-server
INTERFACESv4="eth0"

4️⃣ 启动 DHCP 服务

sudo systemctl restart isc-dhcp-server
sudo systemctl enable isc-dhcp-server

四、DHCP 如何“选择”分配哪个 IP?

DHCP 服务器通常按以下顺序决定:

  1. 是否有固定 IP(DHCP 保留)
    host server1 {
      hardware ethernet 00:11:22:33:44:55;
      fixed-address 192.168.1.10;
    }
    
  2. 是否之前分配过(根据 MAC 地址)
  3. 从地址池中分配一个未使用的 IP
  4. 优先分配租期已过期或释放的 IP

五、客户端如何获取 IP(Linux)

1️⃣ 使用 dhclient

dhclient eth0

2️⃣ 自动获取(NetworkManager)

nmcli device reapply eth0

六、查看 DHCP 分配记录

cat /var/lib/dhcp/dhcpd.leases

示例:

lease 192.168.1.101 {
  starts 3 2026/01/21 10:00:00;
  ends 3 2026/01/21 10:10:00;
  hardware ethernet 00:11:22:33:44:55;
}

七、常见错误排查

问题 原因
客户端拿不到 IP 防火墙、VLAN、DHCP 未监听正确网卡
IP 冲突 地址池与静态 IP 重叠
DHCP 服务未启动 配置语法错误

查看日志:

journalctl -u isc-dhcp-server

八、总结一句话

Linux DHCP 通过广播交互(DORA 过程),从地址池中动态分配 IP,并记录租约信息,确保网络中的设备自动获得可用 IP。

如果你需要:

  • 用 dnsmasq 做 DHCP
  • DHCP + VLAN
  • DHCP 中继(relay)
  • 企业网 DHCP 设计

可以直接告诉我你的使用场景。

0