【问题标题】:Ubuntu 18.04 Server - how to check DNS IP server setting being usedUbuntu 18.04 服务器 - 如何检查正在使用的 DNS IP 服务器设置
【发布时间】:2018-10-22 06:42:17
【问题描述】:

使用 Ubuntu 18.04 Server LTS。我试图找到一种方法来检查通过 DHCP 设置时实际使用的 DNS IP。 resolv.conf 现在只会指向 127.0.0.53。 /etc/systemd/network 文件夹为空。 NSLOOKUP 输出也总是引用内部 127.0.0.53 IP。似乎所有的旧技巧都不起作用。

Ubuntu 文档尚未更新,因为它看起来仍然像 16.04 参考 eth0、ifup 和 ifdown 的帮助,这些在 18 上都已弃用:https://help.ubuntu.com/lts/serverguide/network-configuration.html

我尝试通过自定义 .yaml 使用 Netplan 设置静态适配器设置。设置工作正常,但我似乎无法找到我在任何地方设置的 DNS IP。我希望它在 DHCP 和静态设置之间保持一致,但我不知道现在该往哪里看。

此时我会选择 C ​​库调用或 bash CLI 方法。有没有人可以在 18.04 服务器上检查这个?

【问题讨论】:

    标签: ubuntu-server


    【解决方案1】:

    我发现以下通过适配器在输出末尾显示了我的 DNS 服务器:

    systemd-resolve --status
    

    它包含由 Link 组织的“DNS 服务器”下的列表。我认为这与以前的 Ubuntu 版本不同。这将需要一些文本解析工作,但这给了我我所追求的。

    【讨论】:

    • 这并不能回答您的问题。您的问题不是 dhcp 提供的 dns 服务器 ip。您的问题是如何检查正在使用的 DNS 服务器 IP。
    • @webmite :我正在寻找正在使用的 DNS 服务器,通过静态定义或 DHCP 指定。 systemd-resolve --status 是迄今为止我发现的唯一列出当前 DNS 解析引用的服务器的方法。
    • 如果您使用上面在我的回答中讨论的方法进行检查,您会发现无论传递的参数如何,都在使用真实的服务器。我发现我的系统默认激活了 dnsmasq,这意味着 dhcp 提供的 dns 服务器参数被忽略,直到我禁用它。请验证您的系统是否启用了 dnsmasq。
    • @webmite:我没有在 18.04 服务器上安装 NetworkManager,所以我不能完全尝试这个建议。我正在使用默认的 systemd-networkd。作为解决方案,我提供了应用程序现在使用的易于解析的 DNS IP。我假设在某处设置了类似的属性,因为它在跟踪信息中掩盖了 DNS 的实际 IP。
    • 我找到了对 dnsmasq 和 systemd-resolve [askubuntu.com/questions/907246/….它提到尝试禁用它可能会在通过 vpn 连接时破坏 dns。他们确实参考了错误报告。
    【解决方案2】:

    另一种方式是:

    cat /run/systemd/resolve/resolv.conf
    

    该文件由 systemd-resolved 动态生成,但包含实际的 DNS 服务器而不是 127.0.0.53。

    事实上,如果您想将其设为/etc/resolv.conf 的默认值,您只需为其创建符号链接。 (/etc/resolv.conf 是一个默认指向/run/systemd/resolve/stub-resolv.conf 的符号链接):

    sudo mv /etc/resolv.conf /etc/resolv.conf.orig
    sudo ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf
    

    示例/run/systemd/resolve/resolv.conf

    # This file is managed by man:systemd-resolved(8). Do not edit.
    #
    # This is a dynamic resolv.conf file for connecting local clients directly to
    # all known uplink DNS servers. This file lists all configured search domains.
    #
    # Third party programs must not access this file directly, but only through the
    # symlink at /etc/resolv.conf. To manage man:resolv.conf(5) in a different way,
    # replace this symlink by a static file or a different symlink.
    #
    # See man:systemd-resolved.service(8) for details about the supported modes of
    # operation for /etc/resolv.conf.
    
    nameserver 10.1.2.3
    search host.domain.com
    

    更多信息:

    http://manpages.ubuntu.com/manpages/bionic/man8/systemd-resolved.service.8.html

    【讨论】:

    • 如果您不希望 systemd 干扰您的 DNS 查询(例如,如果您希望路由器上的 DHCP 服务器处理 DNS 解析,那么这是设置网络的正确方法^tm,这大多数人可能想要)。
    【解决方案3】:

    你也可以使用:

    nmcli dev show eth0
    

    用您的网络接口替换 eth0 以查看它是如何配置的。如果您通过 DHCP 获得了 DNS 地址,您应该会在此处看到它。

    【讨论】:

    • 如果您有许多接口并且不知道哪个接口用于 DNS 查询,请使用 nmcli dev show(不带设备名称)。 nmcli dev show | grep DNS会直接给出答案。
    【解决方案4】:

    我也对此感到惊讶。我正在运行 Ubuntu 16.04 LTS 并看到类似的东西。

    如果你发出一个

    dig www.google.ca +trace | grep 'Received'
    

    响应中的第一个主机是为您的服务器进行查找的主机。

    $ dig www.google.ca +trace | grep 'Received'
    ;; Received 525 bytes from 127.0.1.1#53(127.0.1.1) in 19 ms
    ;; Received 42 bytes from 199.7.91.13#53(d.root-servers.net) in 32 ms
    

    这意味着这个盒子直接对根服务器进行它自己的 dns 查找,并递归地按照路径获取我的 dns 查找。

    发现问题是启用了 dnsmasq。要禁用它,请执行以下操作。

    编辑 NetworkManager.conf 文件

    sudo gedit /etc/NetworkManager/NetworkManager.conf
    

    注释掉 dnsmasq 行

    #dns=dnsmasq
    

    重启网络管理器服务

    sudo /etc/init.d/network-manager restart
    

    然后验证它是否使用通过 dhcp 分配的 dns-server

    $ dig www.google.ca +trace | grep 'Received'
    ;; Received 525 bytes from 192.168.30.1#53(192.168.30.1) in 18 ms
    ;; Received 42 bytes from 198.41.0.4#53(a.root-servers.net) in 32 ms
    

    【讨论】:

    • 是的,Ubuntu 在端口 53 上有一个内部侦听方案,但它应该使用 DHCP 发布的 DNS 服务器。通过这些更改,它现在看起来创建了一个新的内部环回 IP 127.0.0.53 以及另一个环回路径。 Resolv.conf 和其他用于报告正在使用的 IP 的方法。这就是我正在寻找的,DHCP 为外部 DNS 查找发布的 IP。我希望有人不会认为设备总是与互联网保持开放连接并使用它可能永远无法访问的顶级 DNS 服务器。
    • 这在 Ubuntu 18.04 中不起作用。当您执行dig <url> +trace 时,您会得到;; Received 28 bytes from 127.0.0.53#53(127.0.0.53) in 0 ms,这不是真正的DNS 服务器。此外,在 Ubuntu 18.04 中,NetworkManager.conf 甚至没有 dns=dnsmaq 行注释掉。
    • 如果使用 systemd-resolved(即 127.0.0.53 是什么),则不会那样工作。
    猜你喜欢
    • 2020-05-12
    • 2020-03-25
    • 1970-01-01
    • 2010-12-28
    • 2015-12-31
    • 2015-09-24
    • 1970-01-01
    • 2016-09-11
    • 1970-01-01
    相关资源
    最近更新 更多