OpenWrt 日常修理: DHCP 无法分配 IPV6 & DNS 不可用

问题表现

无法连接到 OpenWrt 路由器,本地查看网络连接信息可以发现路由只为本地分配了 IPV6,而没有分配 IPV4。

手动设置 IPV4 后,能够进入 OpenWrt,但依然无法正常上网。

问题成因

Dnsmasq 因配置文件有误导致无法启动,由于 Dnsmasq 同时负责提供 DHCP 与 DNS 服务,所以导致即使手动设置 IP 过后依然无法上网。

进入 OpenWrt 管理后台查看系统日志,会发现日志中有如下报错:

Fri Sep  9 18:07:47 2022 daemon.crit dnsmasq[1921]: directory /tmp/resolv.conf.d/resolv.conf.auto for resolv-file is missing, cannot poll
Fri Sep  9 18:07:47 2022 daemon.crit dnsmasq[1921]: FAILED to start up

从日志中可以看到,启动失败是由于 Dnsmasq 未找到 /tmp/resolv.conf.d/resolv.conf.auto 导致的。

解决方法

经检测发现路由启动后将 resolv.conf.auto 文件生成到了 /tmp 目录下,即正确的配置路径应为 /tmp/resolv.conf.auto

进入 OpenWrt 管理后台(网络 -> DHCP/DNS -> HOSTS 和解析文件 -> 解析文件),修改解析文件路径到正确路径后重启路由器(或 Dnsmasq服务)即可。

番外篇

OpenWrt 官方有类似的讨论: dnsmasq does not pick up nameservers from /tmp/resolv.conf.auto

若是日子有些许清闲,可以作为拓展知识了解一下。因为该讨论所涉问题与本文中处置的问题基本毫无关系🤣