禁用systemd-resolved后Avahi因缺失/etc/resolv.conf报错的抑制方法咨询
禁用systemd-resolved后Avahi因缺失/etc/resolv.conf报错的抑制方法咨询
老哥,我懂你这种情况——刚把带DDNS的Bind9配置好,按建议关掉systemd-resolved后一切顺畅,结果Avahi突然因为找不到原本由systemd-resolved维护的/etc/resolv.conf炸出错误,确实挺闹心的。下面给你几个靠谱的手动解决办法,按需选择:
方法一:手动创建最简版/etc/resolv.conf
Avahi其实只是需要这个文件存在就行,我们可以快速生成一个:
- 先创建空文件:
sudo touch /etc/resolv.conf - 如果需要让它指向你的Bind9服务(兼顾DNS解析功能),可以写入基础配置:
echo "nameserver 127.0.0.1" | sudo tee /etc/resolv.conf
做完这步,Avahi就能找到文件,不会再报找不到的错误了。
方法二:修改Avahi配置,跳过读取/etc/resolv.conf
直接让Avahi别碰这个文件,从根源解决报错:
- 打开Avahi的主配置文件:
sudo nano /etc/avahi/avahi-daemon.conf - 找到
[server]区块,添加或修改一行:use-resolvconf=no - 保存配置后重启Avahi服务:
sudo systemctl restart avahi-daemon
这样Avahi就不会再尝试读取/etc/resolv.conf,自然也就不会报错了。
方法三:让Bind9接管/etc/resolv.conf维护
如果希望/etc/resolv.conf保持正常DNS解析功能,可以让Bind9来管理它:
- 先按方法一的第二点写入指向Bind9的配置
- 为了防止其他程序篡改这个文件,可以给它加 immutable 属性:
sudo chattr +i /etc/resolv.conf(后续需要修改时用sudo chattr -i /etc/resolv.conf去掉即可)
优先试试方法一或者方法二,操作最简单,应该能快速搞定报错问题。
备注:内容来源于stack exchange,提问作者Pythonaire
相关产品推荐
相关产品推荐

