Azure DNS 私有区域预览版无法与 ubuntu 虚拟机配合使用

Azure DNS 私有区域预览版无法与 ubuntu 虚拟机配合使用

我需要帮助才能使用 Azure DNS 私有区域进行 DNS 解析。我遵循了此处的文档:https://docs.microsoft.com/en-us/azure/dns/private-dns-getstarted-cli

我能够创建私有区域 example.local,并创建了一个名为 jump.example.local 的 A 记录。按照文档的说明,我随后创建了 2 个虚拟机 Ubuntu 18.04 LTS。取其中一个 IP 10.0.1.4,并用它来更新我的 jump.example.local 记录。

当我尝试从操作系统执行以下命令行时,我没有从我的 A 记录中得到任何结果。

    dig jump.example.local

如果我检查我的 DNS 解析配置,我会得到:

    systemd-resolve --status
    Global
            DNSSEC NTA: 10.in-addr.arpa
                        16.172.in-addr.arpa
                        168.192.in-addr.arpa
                        17.172.in-addr.arpa
                        18.172.in-addr.arpa
                        19.172.in-addr.arpa
                        20.172.in-addr.arpa
                        21.172.in-addr.arpa
                        22.172.in-addr.arpa
                        23.172.in-addr.arpa
                        24.172.in-addr.arpa
                        25.172.in-addr.arpa
                        26.172.in-addr.arpa
                        27.172.in-addr.arpa
                        28.172.in-addr.arpa
                        29.172.in-addr.arpa
                        30.172.in-addr.arpa
                        31.172.in-addr.arpa
                        corp
                        d.f.ip6.arpa
                        home
                        internal
                        intranet
                        lan
                        local
                        private
                        test

    Link 2 (eth0)
        Current Scopes: DNS
        LLMNR setting: yes
    MulticastDNS setting: no
        DNSSEC setting: no
        DNSSEC supported: no
            DNS Servers: 168.63.129.16
            DNS Domain: xqelsdawdufutaole0y2mhw4zb.vx.internal.cloudapp.net

如果我直接在 dig 中使用我的 dns 配置从 vm 中指出的 dns 服务器,它会找到所需的 A 记录。

    dig @168.63.129.16 jump.example.local 

    ; <<>> DiG 9.11.3-1ubuntu1.1-Ubuntu <<>> @168.63.129.16 jump.example.local
    ; (1 server found)
    ;; global options: +cmd
    ;; Got answer:
    ;; WARNING: .local is reserved for Multicast DNS
    ;; You are currently testing what happens when an mDNS query is leaked to DNS
    ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 62699
    ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

    ;; OPT PSEUDOSECTION:
    ; EDNS: version: 0, flags:; udp: 4000
    ; COOKIE: 4681bec0bce6fa9e (echoed)
    ;; QUESTION SECTION:
    ;jump.example.local.        IN  A

    ;; ANSWER SECTION:
    jump.example.local. 2042    IN  A   10.0.1.4

    ;; Query time: 1 msec
    ;; SERVER: 168.63.129.16#53(168.63.129.16)
    ;; WHEN: Mon Aug 27 16:11:54 UTC 2018
    ;; MSG SIZE  rcvd: 76

我尝试重启虚拟机,并尝试在 netplan 中注入配置。但似乎无法赶上要使用的 dns 服务器。

netplan 配置文件

    # /etc/netplan/50-cloud-init.yaml
    network:
        version: 2
        ethernets:
            ephemeral:
                dhcp4: true
                match:
                    driver: hv_netvsc
                    name: '!eth0'
                optional: true
            hotpluggedeth0:
                dhcp4: true
                match:
                    driver: hv_netvsc
                    name: 'eth0'
                nameservers:
                    addresses: [168.63.129.16]
                    search: [example.local]

在我看来,ubuntu 操作系统无法捕获应将 example.local 区域转发到 Azure DNS 的情况。

更新 #1

我曾想过使用另一个不存在或不在命令行systemd-resolve --status返回列表中的 TLD,但我改用了它.xyz,这次它没有任何问题。所以在我看来,我需要找出正确的 netplan 配置,以强制example.local搜索正确的名称服务器,而不是服务启动的 127.0.0.53:53 dns 名称解析器systemd-resolve

更新 #2

这是配置文件/etc/netplan/50-cloud-init.yaml

    # This file is generated from information provided by
    # the datasource.  Changes to it will not persist across an instance.
    # To disable cloud-init's network configuration capabilities, write a file
    # /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following:
    # network: {config: disabled}
    network:
        version: 2
        ethernets:
            eth0:
                dhcp4: true
                match:
                    macaddress: 00:0d:3a:f4:5a:99
                set-name: eth0
                nameservers:
                    addresses: [168.63.129.16]
                    search: [example.local]

编辑文件并应用命令行后,sudo netplan apply它就可以正常工作。我还尝试了重新启动,配置保持不变。感谢@nancy-xiong-msft 的测试。

答案1

看来你已经搞清楚了。我也使用 Ubuntu LTS 16 和 Ubuntu LTS 18.04 对此进行了测试。dig vm01.contoso.local在 Ubuntu LTS 18.04 中也发生了同样的无果情况。但是,它在 Ubuntu LTS 16 中确实有效。我认为这是因为 Ubuntu 管理网络接口的方式已经完全改变了。

另外,我在 netplan 配置中添加了以下内容

nameservers:
                    addresses: [168.63.129.16]
                    search: [contoso.local]

然后,运行sudo netplan apply,它现在可以正常工作了。

在此处输入图片描述

参考:在 Ubuntu 18.04 LTS 服务器上配置静态 IP 地址

相关内容