文件 /etc/resolv.conf 在每次重新启动时都会被删除,为什么或什么?

文件 /etc/resolv.conf 在每次重新启动时都会被删除,为什么或什么?

我遇到一个问题,DHCP(我在其他类似主题中读到过)/etc/resolv.conf在每次启动时清除文件。自从我发现帖子以来,我不确定如何处理这个问题(1,2和其他一些)适用于基于 Debian 的发行版或其他发行版,但不适用于 Fedora。

ifcfg-enp0s31f6这是DHCP的输出:

cat /etc/sysconfig/network-scripts/ifcfg-enp0s31f6 
HWADDR=C8:5B:76:1A:8E:55
TYPE=Ethernet
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=no
IPV6_AUTOCONF=no
IPV6_DEFROUTE=no
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=enp0s31f6
UUID=0af812a3-ac8e-32a0-887d-10884872d6c7
ONBOOT=yes
IPV6_PEERDNS=no
IPV6_PEERROUTES=no
BOOTPROTO=dhcp
PEERDNS=yes
PEERROUTES=yes

另一方面,我不知道网络管理器是否正在为此做其他事情。

更新:NetworkManager.conf 的内容(我已经删除了评论,因为没有用)

$ cat /etc/NetworkManager/NetworkManager.conf 
[main]
#plugins=ifcfg-rh,ibft
dns=none

[logging]
#domains=ALL

我可以得到一些帮助吗?每次重新启动时都要一次又一次地设置该文件,这很烦人。

更新2

一个月后,我仍然遇到同样的问题,文件被“某物”删除。

以下是我为了进行新测试而遵循的步骤:

  • 重新启动电脑
  • 电脑重新启动后,打开终端并尝试访问pingGoogle 服务器,当然没有成功:

    $ ping google.com
    ping: google.com: Name or service not known
    
  • 检查网络配置一切似乎都很好:

    $ cat /etc/sysconfig/network-scripts/ifcfg-enp0s31f6 
    NAME=enp0s31f6
    ONBOOT=yes
    HWADDR=C8:5B:76:1A:8E:55
    MACADDR=C8:5B:76:1A:8E:55
    UUID=0af812a3-ac8e-32a0-887d-10884872d6c7
    BOOTPROTO=static
    PEERDNS=no
    DNS1=8.8.8.8
    DNS2=8.8.4.4
    DNS3=192.168.1.10
    NM_CONTROLLED=yes
    IPADDR=192.168.1.66
    NETMASK=255.255.255.0
    BROADCAST=192.168.1.255
    GATEWAY=192.168.1.1
    TYPE=Ethernet
    DEFROUTE=yes
    IPV4_FAILURE_FATAL=no
    IPV6INIT=no
    
  • 重新启动network服务:

    $ sudo service network restart
    [sudo] password for <current_user>: 
    Restarting network (via systemctl):                        [  OK  ]
    
  • 再次尝试ping谷歌服务器,没有成功:

    $ ping google.com
    ping: google.com: Name or service not known
    
  • 检查文件/etc/resolv.conf

    $ cat /etc/resolv.conf 
    cat: /etc/resolv.conf: No such file or directory
    
  • 文件不再存在 - 这就是每次重新启动时都会删除它的问题

  • 创建文件并添加DNS内容:

    $ sudo nano /etc/resolv.conf 
    
  • 这次 Ping Google 服务器成功:

    $ ping google.com
    PING google.com (216.58.192.110) 56(84) bytes of data.
    64 bytes from mia07s35-in-f110.1e100.net (216.58.192.110): icmp_seq=1 ttl=57 time=3.87 ms
    

对这里可能发生的事情有什么想法吗?

答案1

根据我的经验,/etc/resolv.conf它会在启动时重新生成,因此对其进行的任何手动更改都会被重置。

要解决此问题,您可以创建/etc/resolv.conf.head(或.tail取决于要添加到文件的哪一端)并在其中插入所需的自定义设置(通常nameserver会更改)。然后,当/etc/resolv.confNetworkManager(或负责系统上该文件的任何服务)生成该文件的内容时,该文件的内容会自动添加。

如果这不起作用,您可以修改/etc/resolvconf/resolv.conf.d/base- 它存储/etc/resolv.conf.

答案2

我有同样的问题。通过安装软件包解决了这个问题resolvconf。由于我使用的是 Debian,所以无法测试,但可能会有所帮助这个提示

  1. 以 sudo 打开(或创建):/etc/dhcp/dhclient.conf

  2. 添加:prepend domain-name-servers 127.0.0.1;

答案3

我认为你是对的。

它现在对我有用,但我没有这样做:

dns=none

关于:

/etc/sysconfig/network-scripts/ifcfg-enp0s31f6

我重新启动网络管理器后,它自动创建了解析:

sudo service NetworkManager restart

我重新启动,它仍然有效。

答案4

首先你一定要resolvconf service活跃。

sudo service resolvconf status   

Active:活跃(退出)以来

如果服务active删除resolvconf

sudo apt-get purge resolvconf

然后,如果删除后或未激活或未找到服务:

sudo apt-get update
sudo apt-get install resolvconf

然后重启服务:

sudo service resolvconf restart

现在看到/etc/resolv.conf

cat /etc/resolv.conf 

必须存在:

# 由 resolvconf(8) 生成的 glibc 解析器(3) 的动态 resolv.conf(5) 文件 # 不要手动编辑此文件 -- 您的更改将被覆盖 # 127.0.0.53 是 systemd 解析的存根解析器。 # 运行“systemd-resolve --status”以查看有关实际名称服务器的详细信息。

名称服务器 127.0.0.1

相关内容