我最近在启用了 IPv6 DHCP 的网络上安装了 Debian 8。尽管已禁用所有 IPv6 DHCP、禁用 IPv6 自动配置且不存在 dhclient 进程,但 /etc/resolv.conf 仍不断被 IPv6 DHCP 条目覆盖。如果我修改路由器上的 IPv6 DHCP DNS 服务器,它们会在 /etc/resolv.conf 中快速更新。以下情况属实:
- 系统上没有 resolvconf
- 系统上没有 networkmanager
- 由于某种原因,前两个功能不够用,因此IPv6 的自动配置已被
net.ipv6.conf.all.autoconf=0
和net.ipv6.conf.all.accept_ra=0
AND强制禁用。net.ipv6.conf.eth0.autoconf=0
- 没有 dhclient 进程处于活动状态
- Auditd 返回了某个 shell 的 PID,该 shell 在查找 resolv.conf 的编辑时会立即终止。可能需要加强我的堆栈跟踪游戏。
dns-nameserver
/etc/network/interfaces
对于 ipv4 和 v6,中的条目将被完全忽略
我更希望答案不是“完全禁用 IPv6”,尽管我已经接近这一点了(并且可以说,如果这是一台物理机器而不是虚拟机,我早就把它扔出窗外了)。
编辑:请注意,sysctl 中的 net.ipv6.conf.all.disable_ipv6=0 修复了此问题,但似乎 resolv.conf 现在会定期被完全清除,从而破坏 DNS。
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet static
address xx.xx.xx.xx
netmask 255.255.255.248
gateway xx.xx.xxx.xx
dns-nameservers 8.8.8.8
#auto 6to4
#iface 6to4 inet6 6to4
# local xx.xx.xxx.xx
# dns-nameservers 2001:4860:4860::8888
答案1
您是否rdnssd
安装了该软件包?它运行一个守护进程,该守护进程会生成 shell 脚本,而这些脚本的行为肯定与上述描述一致。
请注意,dns-nameservers
接口上的属性仅适用于resolvconf
。
答案2
你可以监视一些东西来查看哪些进程正在修改文件
https://unix.stackexchange.com/questions/99074/find-which-process-is-modifying-a-file
如果需要,您可以暂时编辑 resolv.conf,然后
chattr +i /etc/resolv.conf
以防止任何东西修改它
答案3
我发现解决这个“问题”的最好方法是安装解析配置包裹。
sudo apt-get install resolvconf
在那之后,/etc/resolv.conf被替换为指向/etc/resolvconf/运行/resolv.conf由以下程序动态生成解析配置使用文件中的信息/etc/网络/接口
注意dns 名称服务器条目/etc/网络/接口如果你的系统中没有安装 resolvconf 包,则会被忽略。您可以找到有关解析配置Debian wiki 文档中的软件包信息或使用手册页。
man resolvconf