在Ubuntu 22.04路由器上部署DHCP服务器:Netplan是否参与其中?
在Ubuntu 22.04路由器上部署DHCP服务器:Netplan是否参与其中?
我来帮你理清Netplan和DHCP服务的关系,以及如何在你的Ubuntu 22.04路由器上部署DHCP并配置MAC-IP绑定:
Netplan与DHCP服务的分工
首先明确:Netplan完全不负责DHCP服务的配置或提供。它的核心作用是管理你的系统网络接口——比如你现在配置的桥接br0、各个网卡的DHCP开关、静态IP地址这些,都是Netplan的职责范畴。而DHCP服务是由独立的软件组件来实现的,和Netplan是相互独立的,但Netplan配置的网络接口是DHCP服务运行的基础(比如你的br0就是DHCP服务要监听的LAN/WAP侧接口)。
部署DHCP服务器的具体步骤(以常用的isc-dhcp-server为例)
1. 安装DHCP服务器
先更新软件源并安装服务:
sudo apt update && sudo apt install isc-dhcp-server
2. 指定DHCP服务监听的接口
编辑/etc/default/isc-dhcp-server文件,找到INTERFACESv4选项,设置为你的桥接接口br0:
INTERFACESv4="br0"
3. 配置DHCP地址池与网络参数
编辑主配置文件/etc/dhcp/dhcpd.conf,根据你br0上的两个网段(10.1.0.0/22和10.2.0.0/22)添加以下配置:
# 全局基础配置 option domain-name "your-local-domain"; # 替换成你的本地域名(可选) option domain-name-servers 10.1.0.1, 8.8.8.8; # 可以用本地路由器作为DNS,也加个公共DNS备用 default-lease-time 600; # 默认租期10分钟 max-lease-time 7200; # 最大租期2小时 authoritative; # 声明这是LAN内的权威DHCP服务器,避免冲突 # 配置10.1.0.0/22网段的DHCP参数 subnet 10.1.0.0 netmask 255.255.252.0 { range 10.1.0.100 10.1.3.254; # 动态分配的IP范围,避开你要静态绑定的IP option routers 10.1.0.1; # 网关地址就是br0的对应IP option subnet-mask 255.255.252.0; } # 配置10.2.0.0/22网段的DHCP参数(如果需要给这个网段分配IP的话) subnet 10.2.0.0 netmask 255.255.252.0 { range 10.2.0.100 10.2.3.254; option routers 10.2.0.1; option subnet-mask 255.255.252.0; }
4. 配置MAC地址与IP的静态绑定
在dhcpd.conf文件的末尾,为需要固定IP的设备添加主机条目,格式如下:
# 示例:绑定"living-room-tv"的MAC到10.1.0.10 host living-room-tv { hardware ethernet aa:bb:cc:dd:ee:ff; # 替换成设备的实际MAC地址 fixed-address 10.1.0.10; # 你想要分配的固定IP } # 可以添加多个这样的条目,对应不同设备 host office-pc { hardware ethernet 11:22:33:44:55:66; fixed-address 10.1.0.15; }
5. 启动并启用DHCP服务
完成配置后,启动服务并设置开机自启:
sudo systemctl start isc-dhcp-server sudo systemctl enable isc-dhcp-server
如果启动失败,可以查看日志排查问题:
sudo journalctl -u isc-dhcp-server
额外注意事项
- 确保你的Netplan配置已经生效:运行
sudo netplan apply确认br0接口已经正确获取到设置的静态IP。 - 避免DHCP服务冲突:如果你的系统上之前安装了
dnsmasq或其他DHCP相关服务,要先停止并禁用它们,防止端口冲突。 - 防火墙配置:如果启用了ufw,要允许DHCP的UDP端口(67和68):
sudo ufw allow in from any to any port 67,68 proto udp
备注:内容来源于stack exchange,提问作者Bram




