【问题标题】:How can I use a custom DNS server in Azure App Services with Linux?如何在带有 Linux 的 Azure 应用服务中使用自定义 DNS 服务器?
【发布时间】:2019-06-10 22:15:57
【问题描述】:

我有一个使用 Windows 在 Azure 应用服务中运行的 .NET Core API 应用,但现在我想使用 Linux 对其进行测试。该应用使用自定义 DNS 区域来将自定义主机名映射到特定 IP 地址。

为了在我的 Windows 应用服务中实现这一点,我使用了 this page 中所述的以下应用程序设置:WEBSITE_DNS_SERVERWEBSITE_ALT_DNS_SERVER。尽管它看起来像是一种解决方法,但它与 Windows 应用服务配合得很好。但在 Linux 中,它似乎没有任何效果,而且我的应用程序没有根据需要解析主机名。

如何在带有 Linux 的 Azure 应用服务中使用自定义 DNS 服务器或添加自定义主机名(如编辑 hosts 文件)?

【问题讨论】:

    标签: linux azure dns azure-web-app-service


    【解决方案1】:

    与我们的应用服务 Windows 不同,nameresolver.exe 不可用,并且“WEBSITES_ALT_DNS”和“WEBSITES_DNS”的应用程序设置不会填充容器内的配置文件。由于您没有提及您使用的是 Linux 容器还是默认的 Linux 操作系统,因此以下步骤是针对基于“Alpine”的映像的问题排查步骤。

    安装绑定工具-

    1. APK 更新
    2. apk 添加绑定工具

    运行 Nslookup-

    安装 bind-tools 后,您将看到正在使用的服务器。如果未安装绑定工具,则不会显示 DNS 服务器。示例如下。

    9031977be93a:~# nslookup google.com
    Server:         127.0.0.11
    Address:        127.0.0.11#53
     
    Non-authoritative answer:
    Name:   google.com
    Address: 216.58.194.174
    Name:   google.com
    Address: 2607:f8b0:4005:801::200e

    更新配置文件-

    要使用不同的 DNS 服务器进行测试,请更新 /etc/resolv.conf 文件并更新“名称服务器”以使用不同的 DNS 服务器。在此示例中,我们使用的是 Google 的 DNS。

    1. vi /etc/resolv.conf
    2. 默认情况下,resolv.conf 文件中将包含以下内容。

    搜索 reddog.microsoft.com 名称服务器 127.0.0.11 选项超时:1 次尝试:5 ndots:0cd /etc

    1. 如果您不熟悉“vi”,请按键盘上的“i”开始编辑文件。
    2. 完成后,按“esc”和“:wq!”然后输入。

    搜索 reddog.microsoft.com 名称服务器 8.8.8.8 选项超时:1 次尝试:5 ndots:0

    1. 再次运行 Nslookup,您将看到正在使用的新名称服务器。

    9031977be93a:~# nslookup google.com
    Server:         8.8.8.8
    Address:        8.8.8.8#53
     
    Non-authoritative answer:
    Name:   google.com
    Address: 216.58.194.174
    Name:   google.com
    Address: 2607:f8b0:4005:804::200e

    硬编码主机名-

    您还可以硬编码相关主机名的 IP 地址以进行测试。为此,您需要更新以下文件。

    1. vi /etc/hosts
    2. 添加您希望 DNS 指向的 IP 地址。在此示例中,我将更改自定义域的 IP。

    127.0.0.1       localhost
    ::1     localhost ip6-localhost ip6-loopback
    fe00::0 ip6-localnet
    ff00::0 ip6-mcastprefix
    ff02::1 ip6-allnodes
    ff02::2 ip6-allrouters
    172.20.0.2      9031977be93a
    10.10.10.10 www.polytechniks.com
     
    1. 保存更改并使用“ping”或“traceroute”查看正在使用的 IP。注意:Nslookup 不使用 /etc/hosts 文件,因此您仍会看到与 DNS 关联的 IP 地址。

    9031977be93a:~# ping www.polytechniks.com
    PING www.polytechniks.com (10.10.10.10): 56 data bytes
    --- www.polytechniks.com ping statistics ---
    8 packets transmitted, 0 packets received, 100% packet loss
     
    9031977be93a:~# traceroute www.polytechniks.com
    traceroute to www.polytechniks.com (10.10.10.10), 30 hops max, 46 byte packets
     1  172.20.0.1 (172.20.0.1)  0.005 ms  0.004 ms  0.004 ms

    【讨论】:

    • 非常感谢布莱恩。它工作得很好。我只是想知道是否有办法在生产环境中做到这一点?
    • 抱歉耽搁了。你能解释一下你对生产环境的意思吗?你希望使用 Azure Web Apps for Containers (Linux) 来执行此操作吗?
    • 好吧,我只是想知道。现在我需要它,但我的应用程序仍在开发中,所以这个解决方法很好,但我不确定一旦它投入生产我是否需要它,所以我可能需要一个更“最终”的解决方案。
    猜你喜欢
    • 1970-01-01
    • 2021-02-07
    • 2018-03-19
    • 1970-01-01
    • 2011-01-15
    • 1970-01-01
    • 2014-12-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多