系统不使用 DNS 响应,但 nslookup 有效

系统不使用 DNS 响应,但 nslookup 有效

我正在设置一台 Windows 计算机。这是一个相当奇怪的设置,但我公司在 Linux 上开发的工作流程也必须在这里运行。我将在最后添加背景信息。但首先要说的是事实。

  • 我在 Windows 10 中使用 WSL2 设置了 Ubuntu 系统。
  • Ubuntu 系统是本地子网的网关。
  • 在本地子网内我有一个正在运行的私有 DNS 服务器。
    • 如果DNS 服务器8.8.8.8不知道答案,则将其作为后备服务器
    • 它是 Windows 中设置的唯一 DNS 服务器,没有其他 DNS 服务器
  • 当我打开 PowerShell 并 nslookup 一个域(在wwwlocal子网中)时,我收到了正确的响应。(Windows)
  • 当我 ping 域名或在 Web 浏览器中打开它时,它无法查找它。这适用于公共和私有域名(Windows)
  • 当我 ping nslookup 返回的 IP 地址或打开时,它工作正常(Windows)
  • 当我 ping dnsdock 并且它工作正常时(Ubuntu WSL2)

所有响应都是非权威的,这完全合理,因为它是通过私有 DNS 服务器转发的。Windows 会忽略非权威的答案吗?

背景

我认为这描述了我的问题,但我认为我不可避免地会收到评论,询问为什么我的设置如此复杂。这是我们一位开发人员的计算机。我们在 Docker 中进行开发,并且在 Ubuntu 内部 Docker 是本机安装的(而不是通过 Docker 桌面),因为这允许转发到实际的容器。

我可以 ping 通它们。为此,我必须将 Ubuntu 设置为路由器(IPv4 转发到活动状态,IP 表规则用于转发)。我还必须编写一个 PowerShell 脚本,在登录时重置路由,因为 Ubuntu 的 IP 地址在每次启动时都会发生变化。私有 DNS 服务器是DNSDock。它连接到 Docker 套接字并自动读出 Docker 容器。它将容器的名称或标签或环境参数转换为域名。

这允许对 Docker 容器进行 DNS 解析,并且无需绑定端口。这意味着我们可以运行任意数量的并行容器,而无需调整端口。对于多个项目或微服务来说,这非常棒!

不要忘记,它们必须经常相互通信。开发人员可以直接进入项目并运行,这一点很重要docker-compose up。整个想法是操作系统并不重要,不需要为使用 Windows 的人开发全新的方法。

以下是 nslookup 输出,供参考:

PS C:\WINDOWS\system32> nslookup www.yahoo.com 172.17.0.1
Server:  UnKnown
Address:  172.17.0.1

Non-authoritative answer:
Name:    new-fp-shed.wg1.b.yahoo.com
Addresses:  2a00:1288:110:c305::1:8000
          2a00:1288:110:c305::1:8001
          87.248.100.215
          87.248.100.216
Aliases:  www.yahoo.com

PS C:\WINDOWS\system32> nslookup www.yahoo.com
Server:  UnKnown
Address:  172.17.0.1

Non-authoritative answer:
Name:    new-fp-shed.wg1.b.yahoo.com
Addresses:  2a00:1288:110:c305::1:8000
          2a00:1288:110:c305::1:8001
          87.248.100.216
          87.248.100.215
Aliases:  www.yahoo.com

以下是启动并控制 DNS 服务器的 docker-compose 文件:

version: '3.7'
services:
  dnsdock:
    image: aacebedo/dnsdock:v1.16.4-amd64
    network_mode: bridge
    restart: unless-stopped
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    container_name: dnsdock
    ports:
      - 172.17.0.1:53:53/udp
      #- 53:53/udp
    environment:
      - nameserver="8.8.8.8:53"

docker 网络设置

/etc/resolv.conf

 nameserver 172.17.0.1

ipconfig 打印输出

PS C:\Users\<redacted>> ipconfig /all

Windows IP Configuration

   Host Name . . . . . . . . . . . . : <redacted>
   Primary Dns Suffix  . . . . . . . :
   Node Type . . . . . . . . . . . . : Hybrid
   IP Routing Enabled. . . . . . . . : No
   WINS Proxy Enabled. . . . . . . . : No

Wireless LAN adapter LAN-Verbindung* 1:

   Media State . . . . . . . . . . . : Media disconnected
   Connection-specific DNS Suffix  . :
   Description . . . . . . . . . . . : Microsoft Wi-Fi Direct Virtual Adapter
   Physical Address. . . . . . . . . : <redacted>
   DHCP Enabled. . . . . . . . . . . : Yes
   Autoconfiguration Enabled . . . . : Yes

Wireless LAN adapter WLAN:

   Connection-specific DNS Suffix  . :
   Description . . . . . . . . . . . : Marvell AVASTAR Wireless-AC Network Controller
   Physical Address. . . . . . . . . : <redacted>
   DHCP Enabled. . . . . . . . . . . : Yes
   Autoconfiguration Enabled . . . . : Yes
   IPv4 Address. . . . . . . . . . . : 192.168.0.191(Preferred)
   Subnet Mask . . . . . . . . . . . : 255.255.255.0
   Lease Obtained. . . . . . . . . . : Thursday, January 14, 2021 7:07:52 AM
   Lease Expires . . . . . . . . . . : Thursday, January 14, 2021 8:07:50 AM
   Default Gateway . . . . . . . . . : 192.168.0.1
   DHCP Server . . . . . . . . . . . : 192.168.0.1
   DNS Servers . . . . . . . . . . . : 172.17.0.1
   NetBIOS over Tcpip. . . . . . . . : Enabled

Ethernet adapter Bluetooth-Netzwerkverbindung:

   Media State . . . . . . . . . . . : Media disconnected
   Connection-specific DNS Suffix  . :
   Description . . . . . . . . . . . : Bluetooth Device (Personal Area Network)
   Physical Address. . . . . . . . . : <redacted>
   DHCP Enabled. . . . . . . . . . . : Yes
   Autoconfiguration Enabled . . . . : Yes

Ethernet adapter vEthernet (WSL):

   Connection-specific DNS Suffix  . :
   Description . . . . . . . . . . . : Hyper-V Virtual Ethernet Adapter
   Physical Address. . . . . . . . . : <redacted>
   DHCP Enabled. . . . . . . . . . . : No
   Autoconfiguration Enabled . . . . : Yes
   IPv4 Address. . . . . . . . . . . : 172.18.9.65(Preferred)
   Subnet Mask . . . . . . . . . . . : 255.255.255.240
   Default Gateway . . . . . . . . . :
   NetBIOS over Tcpip. . . . . . . . : Enabled

Ethernet adapter vEthernet (Default Switch):

   Connection-specific DNS Suffix  . :
   Description . . . . . . . . . . . : Hyper-V Virtual Ethernet Adapter #2
   Physical Address. . . . . . . . . : <redacted>
   DHCP Enabled. . . . . . . . . . . : No
   Autoconfiguration Enabled . . . . : Yes
   IPv4 Address. . . . . . . . . . . : 172.18.63.65(Preferred)
   Subnet Mask . . . . . . . . . . . : 255.255.255.240
   Default Gateway . . . . . . . . . :
   NetBIOS over Tcpip. . . . . . . . : Enabled

答案1

将 DNS 服务器添加到其他 2 个“NIC”。NIC 的优先级可能会导致其中一个适配器在 DNS 查找中返回“不存在”错误,因为它们没有根据您的 ipconfig /all 设置 DNS 服务器。您可能仍可以通过调整 Windows 中的路由指标或接口索引来修复此问题,但这样做会变得很复杂。

相关内容