Alpine Linux 有时 DNS 无法解析

Dim*_*las 7 resolv.conf alpine-linux

有时当我运行命令时:

sudo apk update && sudo apk upgrade
Run Code Online (Sandbox Code Playgroud)

即使连接到互联网,Alpine linux 也无法更新软件包。但是,如果我这样做了,sudo su "echo 'nameserver 8.8.8.8' > /etc/resolv.conf"我会设法下载它们。但是这个解决方案:

  • 让我感到沮丧,我需要一直设置 dns。
  • 有时/etc/resolv.conf会被自己覆盖。

我怎样才能有一个更永久的解决方案?

Tho*_*ban 7

tl;博士

  1. 使用文本编辑器打开文件/etc/udhcpc/udhcpc.conf
    如果文件丢失,您只需创建它(可能还有它的包含文件夹)。

  2. 追加行

    RESOLV_CONF=no
    
    Run Code Online (Sandbox Code Playgroud)

完毕。

在这里找到:https : //wiki.alpinelinux.org/wiki/Udhcpc


在我的情况下,接受的答案并不令人满意

  • 它导致很多东西在不知道它在做什么的情况下被粘贴,
  • 它需要安装额外的软件和
  • 它只是将给定的 DNS 服务器添加到它写入/etc/resolv.conf 的任何内容中,而不是替换它。

我确信有更多关于如何让 dhclient 替换东西而不是预先添加东西的说明,但是对于像阻止 DHCP根本替换/etc/resolv.conf这样简单的事情来说,这需要太多的研究和头痛。


Dim*_*las 6

您可以通过安装dhclient软件包来解决问题。最后一次通过运行来启用 Google 的 DNS 服务器:

sudo su "echo 'nameserver 8.8.8.8' > /etc/resolv.conf"
Run Code Online (Sandbox Code Playgroud)

然后运行这个命令组合:

sudo apk update && sudo apk upgrade && sudo apk add dhclient
Run Code Online (Sandbox Code Playgroud)

为了获得新的软件包并安装dhclient. 然后配置/etc/dhcp/dhclient.conf并放置以下内容:

option rfc3442-classless-static-routes code 121 = array of unsigned integer 8;

send host-name = gethostname();
request subnet-mask, broadcast-address, time-offset, routers,
        domain-name, domain-name-servers, domain-search, host-name,
        dhcp6.name-servers, dhcp6.domain-search, dhcp6.fqdn, dhcp6.sntp-servers,
        netbios-name-servers, netbios-scope, interface-mtu,
        rfc3442-classless-static-routes, ntp-servers;

prepend domain-name-servers 8.8.8.8, 8.8.4.4;
Run Code Online (Sandbox Code Playgroud)

并重新启动网络:

sudo rc-service networking restart
Run Code Online (Sandbox Code Playgroud)

(可选)如果您运行,您可以确认它有效:

sudo reboot
Run Code Online (Sandbox Code Playgroud)

无论哪种情况,您都可以通过 ping google 确认 dns 已解析。

ping google.com
Run Code Online (Sandbox Code Playgroud)