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

如何在Linux上配置DHCP服务器?

安装dhcpd服务,编辑/etc/dhcp/dhcpd.conf配置文件,定义子网、地址池、网关等参数,保存后启动dhcpd服务并设置开机自启。

在Linux系统中配置DHCP服务器需要安装并配置相关软件,以自动为网络中的设备分配IP地址、子网掩码、网关等网络参数,以下是基于ISC DHCP Server(行业标准工具)的详细步骤,适用于Ubuntu/Debian和CentOS/RHEL系统,配置前请确保您有root权限。


安装DHCP服务器

Ubuntu/Debian 系统

sudo apt update
sudo apt install isc-dhcp-server -y

CentOS/RHEL 系统

sudo yum install dhcp-server -y  # CentOS 7/8
sudo dnf install dhcp-server -y  # CentOS Stream/RHEL 9

配置DHCP服务

编辑主配置文件

配置文件路径:

  • Ubuntu/Debian: /etc/dhcp/dhcpd.conf
  • CentOS/RHEL: /etc/dhcp/dhcpd.conf

使用文本编辑器(如nano)打开文件:

sudo nano /etc/dhcp/dhcpd.conf

设置基础网络参数

以下是一个典型配置示例(根据实际网络修改):

# 定义全局默认租期(单位:秒)
default-lease-time 600;
max-lease-time 7200;
# 指定DNS服务器和域名
option domain-name "example.com";
option domain-name-servers 8.8.8.8, 8.8.4.4;
# 禁用DHCP服务日志(可选)
log-facility local7;
# 定义子网配置
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 subnet-mask 255.255.255.0;            # 子网掩码
  option broadcast-address 192.168.1.255;      # 广播地址
}

高级配置(可选)

  • 固定IP分配(MAC绑定)
    在配置文件中添加:

    如何在Linux上配置DHCP服务器?  第1张

    host Printer {
      hardware ethernet 00:1a:2b:3c:4d:5e;  # 设备的MAC地址
      fixed-address 192.168.1.50;           # 分配的固定IP
    }
  • 自定义DNS或网关
    subnet块内添加:

    option domain-name-servers 192.168.1.2;
    option routers 192.168.1.254;

指定服务监听的网卡

Ubuntu/Debian

编辑 /etc/default/isc-dhcp-server

INTERFACESv4="eth0"  # 替换为你的网卡名(如enp0s3)

CentOS/RHEL

创建覆盖配置(若需要):

sudo systemctl edit dhcpd

输入:

[Service]
ExecStart=/usr/sbin/dhcpd -4 -cf /etc/dhcp/dhcpd.conf -pf /var/run/dhcpd.pid eth0

启动服务并验证

启动DHCP服务

sudo systemctl start isc-dhcp-server  # Ubuntu/Debian
sudo systemctl start dhcpd            # CentOS/RHEL

设置开机自启

sudo systemctl enable isc-dhcp-server  # Ubuntu/Debian
sudo systemctl enable dhcpd            # CentOS/RHEL

检查服务状态

sudo systemctl status isc-dhcp-server  # 确保显示"active (running)"

测试DHCP分配

  • 在客户端执行:
    dhclient -v  # 强制更新IP(Linux客户端)
    ipconfig /renew  # Windows客户端
  • 查看服务器日志:
    journalctl -u isc-dhcp-server -f  # Ubuntu/Debian
    journalctl -u dhcpd -f            # CentOS/RHEL

防火墙配置

允许DHCP端口(UDP 67/68):

# Ubuntu/Debian (UFW)
sudo ufw allow 67/udp
sudo ufw allow 68/udp
# CentOS/RHEL (Firewalld)
sudo firewall-cmd --add-service=dhcp --permanent
sudo firewall-cmd --reload

常见问题解决

  1. 服务启动失败

    • 检查配置文件语法:sudo dhcpd -t
    • 确认网卡名正确(使用ip a查看)。
  2. 客户端无法获取IP

    • 确保客户端与服务器在同一子网。
    • 检查防火墙是否阻止UDP 67/68端口。
  3. IP冲突

    避免IP范围与静态IP重叠(如路由器分配的IP)。


安全建议

  1. 限制IP范围:仅分配必要数量的IP(如range 192.168.1.100 192.168.1.150)。
  2. 启用日志监控:定期检查/var/log/syslog(Ubuntu)或/var/log/messages(CentOS)。
  3. 隔离网络:将DHCP服务器部署在受信任的内网,避免暴露到公网。

通过以上步骤,您已成功在Linux上部署了DHCP服务器,此配置适用于小型办公或家庭网络,对于企业级需求(如多子网、负载均衡),建议结合网络设备(如路由器)或高级DHCP方案(如DHCP Relay)。

引用说明基于ISC DHCP官方文档(https://kb.isc.org/docs/isc-dhcp-44-manual-pages)及Linux发行版手册(Ubuntu/CentOS),实践前请确保理解网络拓扑结构,错误配置可能导致网络中断。

0