dnsmasq是linux下集成dns与dhcp的轻量级服务,需依次安装、启用服务、配置dhcp参数(如interface、dhcp-range)、开放udp 67/68端口,并通过dhclient和dnsmasq.leases验证分配效果。

如果您在Linux系统中需要快速部署一个集DNS与DHCP功能于一体的轻量级网络服务,则dnsmasq是典型选择。以下是针对CentOS/RHEL 8/7、Ubuntu等主流发行版安装并配置dnsmasq提供DHCP服务的具体操作步骤:
一、安装dnsmasq软件包
dnsmasq在多数Linux发行版的官方仓库中直接可用,无需编译源码即可完成安装。安装过程会同时拉取依赖项,并为后续服务启用奠定基础。
1、对于CentOS/RHEL 8/7系统,执行以下命令:
sudo yum install -y dnsmasq
2、对于Ubuntu/Debian系统,执行以下命令:
sudo apt-get update && sudo apt-get install -y dnsmasq
3、验证安装是否成功:
dnsmasq -v
二、启用并启动dnsmasq服务
安装完成后需确保服务已启用且处于运行状态,以支持后续DHCP请求响应。systemd管理机制下,需显式设置开机自启并立即启动实例。
1、启动dnsmasq服务:
sudo systemctl start dnsmasq
2、设置开机自启:
sudo systemctl enable dnsmasq
3、检查服务当前状态,确认Active字段显示active (running):
sudo systemctl status dnsmasq
三、配置DHCP服务参数
dnsmasq默认仅启用DNS功能,必须通过编辑主配置文件明确启用DHCP并设定地址池、网关、租期等关键参数。所有DHCP相关配置均需写入/etc/dnsmasq.conf或其包含的/etc/dnsmasq.d/子配置文件中。
1、备份原始配置文件以防误操作:
sudo cp /etc/dnsmasq.conf /etc/dnsmasq.conf.bak
2、使用文本编辑器打开主配置文件:
sudo vi /etc/dnsmasq.conf
3、取消注释并修改以下关键行(示例基于局域网192.168.56.0/24,服务器IP为192.168.56.10):
interface=eth0
listen-address=127.0.0.1,192.168.56.10
dhcp-range=192.168.56.100,192.168.56.200,12h
dhcp-option=option:router,192.168.56.1
dhcp-option=option:dns-server,192.168.56.10
4、保存退出后重启服务使配置生效:
sudo systemctl restart dnsmasq
四、开放防火墙端口
dnsmasq的DHCP服务依赖UDP端口67(服务器端)和68(客户端),若系统启用了iptables或firewalld,必须放行这些端口,否则客户端无法接收DHCP响应。
1、对于使用firewalld的系统(RHEL/CentOS 7+、Fedora):
sudo firewall-cmd --permanent --add-port=67/udp
sudo firewall-cmd --permanent --add-port=68/udp
sudo firewall-cmd --reload
2、对于使用iptables的传统系统(CentOS 6及部分定制环境):
sudo iptables -A INPUT -p udp --dport 67 -j ACCEPT
sudo iptables -A INPUT -p udp --dport 68 -j ACCEPT
sudo service iptables save
五、验证DHCP服务运行效果
配置生效后,需在另一台同网段Linux或Windows客户端上触发DHCP请求,观察是否能成功获取IP地址及相关网络参数。验证过程不依赖图形界面,纯命令行即可完成。
1、在客户端执行DHCP租约更新(Linux):
sudo dhclient -r && sudo dhclient
2、查看分配到的IP地址与网关信息:
ip addr show
3、检查DHCP租约记录(服务器端):
sudo cat /var/lib/misc/dnsmasq.leases
该文件将显示每个客户端的MAC地址、分配IP、租约起止时间等完整信息,每条记录末尾的时间戳应为当前系统时间附近。











