Linux下实现DHCP与DNS集成可采用以下方案,核心是通过配置服务器实现IP分配与域名解析的联动:
安装软件
# Debian/Ubuntu
sudo apt-get install isc-dhcp-server bind9
# CentOS/RHEL
sudo yum install dhcp bind bind-utils
配置DHCP动态更新DNS
编辑/etc/dhcp/dhcpd.conf,添加:
ddns-update-style interim; # 启用动态更新
update-static-leases on; # 允许更新静态租约
option domain-name "example.com";
option domain-name-servers 192.168.1.1; # 指定DNS服务器
zone "example.com" {
primary 127.0.0.1;
key "rndc-key"; # 指定密钥
}
配置BIND允许动态更新
编辑/etc/bind/named.conf.local,添加区域配置:
zone "example.com" {
type master;
file "/var/lib/bind/db.example.com";
allow-update { key "rndc-key"; }; # 允许DHCP服务器更新
}
创建安全密钥
生成/etc/bind/rndc.key,内容示例:
key "rndc-key" {
algorithm hmac-sha256;
secret "your-secure-key";
};
确保DHCP和BIND配置中密钥一致。
重启服务并验证
sudo systemctl restart isc-dhcp-server bind9
# 验证DNS记录
dig @localhost example.com
安装dnsmasq
sudo apt-get install dnsmasq # Debian/Ubuntu
sudo yum install dnsmasq # CentOS/RHEL
配置DHCP与DNS服务
编辑/etc/dnsmasq.conf:
interface=eth0
dhcp-range=192.168.1.100,192.168.1.200,12h
dhcp-option=option:dns-server,192.168.1.1
enable-dns
# 启用动态DNS更新(需配合BIND)
dhcp-script=/etc/dnsmasq.d/update-dns.sh
编写更新脚本(可选)
创建/etc/dnsmasq.d/update-dns.sh,通过nsupdate命令更新DNS记录。
重启服务
sudo systemctl restart dnsmasq
rndc-key)加密DHCP与DNS的通信,避免未授权更新。/etc/bind/rndc.key权限为600,且属主为bind用户。journalctl -u isc-dhcp-server或/var/log/syslog查看服务状态及错误信息。以上方案可根据网络规模选择,ISC DHCP + BIND适合企业级复杂环境,dnsmasq适合中小型网络快速部署。