当前位置:首页 > Linux > 正文

Linux如何开启DHCP服务?

安装dhcpd或isc-dhcp-server软件包,编辑/etc/dhcp/dhcpd.conf配置文件定义地址池等参数,使用systemctl start dhcpd启动服务,并用systemctl enable dhcpd设置开机自启。

在Linux系统中,开启DHCP服务通常涉及两种场景:将本机配置为DHCP客户端(自动获取IP)将本机配置为DHCP服务器(为其他设备分配IP),以下是详细操作指南,涵盖主流发行版(Ubuntu/Debian、CentOS/RHEL)的配置方法。


Linux 作为 DHCP 客户端(自动获取IP)

适用于通过DHCP自动获取IP地址,无需手动配置网络。

使用 NetworkManager(推荐)

适用系统:Ubuntu/Debian、CentOS/RHEL(桌面/服务器版通用)

# 查看网络接口名称
nmcli device status
# 启用DHCP(以接口 eth0 为例)
nmcli connection modify "有线连接1" ipv4.method auto  # 设置为自动获取IP
nmcli connection down "有线连接1" && nmcli connection up "有线连接1"  # 重启连接

修改网络配置文件

  • Ubuntu/Debian(Netplan)
    编辑配置文件(如 /etc/netplan/01-netcfg.yaml):

    network:
      version: 2
      ethernets:
        eth0:
          dhcp4: true  # 启用DHCP

    应用配置:

    Linux如何开启DHCP服务?  第1张

    sudo netplan apply
  • CentOS/RHEL(ifcfg 文件)
    编辑配置文件(如 /etc/sysconfig/network-scripts/ifcfg-eth0):

    BOOTPROTO=dhcp  # 关键参数
    ONBOOT=yes

    重启网络服务:

    sudo systemctl restart NetworkManager

验证DHCP客户端

ip addr show eth0  # 查看IP是否以 dhcp 分配
dhclient -v eth0   # 手动请求IP(调试用)

Linux 作为 DHCP 服务器(为其他设备分配IP)

通过 isc-dhcp-server 软件提供DHCP服务。

安装 DHCP 服务

  • Ubuntu/Debian
    sudo apt update
    sudo apt install isc-dhcp-server
  • CentOS/RHEL
    sudo yum install dhcp

配置 DHCP 服务器

编辑主配置文件 /etc/dhcp/dhcpd.conf

subnet 192.168.1.0 netmask 255.255.255.0 {  # 分配的子网
  range 192.168.1.100 192.168.1.200;        # IP地址池
  option routers 192.168.1.1;               # 网关地址
  option domain-name-servers 8.8.8.8;       # DNS服务器
  default-lease-time 600;                   # 默认租期(秒)
  max-lease-time 7200;                      # 最大租期
}

指定服务监听的网卡

编辑 /etc/default/isc-dhcp-server(Ubuntu/Debian)或 /etc/sysconfig/dhcpd(CentOS):

INTERFACESv4="eth0"  # 替换为你的网卡名

启动服务并验证

sudo systemctl start isc-dhcp-server  # Ubuntu/Debian
sudo systemctl start dhcpd            # CentOS/RHEL
sudo systemctl enable dhcpd           # 设置开机自启
# 检查状态
sudo systemctl status isc-dhcp-server
tail -f /var/log/syslog | grep dhcp   # 查看日志(Ubuntu)

故障排除与注意事项

  1. 防火墙放行
    DHCP服务使用UDP端口67(服务器)和68(客户端):

    sudo ufw allow 67/udp  # Ubuntu
    sudo firewall-cmd --add-service=dhcp --permanent  # CentOS
  2. 多网卡冲突
    确保 dhcpd.conf 中的子网配置与监听网卡的IP段匹配。

  3. 客户端无法获取IP

    • 检查服务状态:systemctl status isc-dhcp-server
    • 重启服务:sudo systemctl restart isc-dhcp-server
    • 释放客户端IP:dhclient -r eth0 && dhclient eth0
  4. 日志位置

    • Ubuntu/Debian:/var/log/syslog
    • CentOS:/var/log/messages

  • 客户端模式:通过 NetworkManager 或配置文件设置 dhcp4: true/BOOTPROTO=dhcp
  • 服务器模式:安装 isc-dhcp-server,配置子网/IP池,监听指定网卡。
  • 关键点:配置文件语法、防火墙规则、日志监控是成功部署的核心。

引用说明

  • DHCP协议规范:RFC 2131 (https://tools.ietf.org/html/rfc2131)
  • ISC DHCP官方文档:https://kb.isc.org/docs/isc-dhcp-44-manual-pages-dhcpd
  • Ubuntu Netplan配置指南:https://netplan.io/examples
  • Red Hat网络配置手册:https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8
0