我正在设置一台 Windows 计算机。这是一个相当奇怪的设置,但我公司在 Linux 上开发的工作流程也必须在这里运行。我将在最后添加背景信息。但首先要说的是事实。
- 我在 Windows 10 中使用 WSL2 设置了 Ubuntu 系统。
- Ubuntu 系统是本地子网的网关。
- 在本地子网内我有一个正在运行的私有 DNS 服务器。
- 如果DNS 服务器
8.8.8.8
不知道答案,则将其作为后备服务器 - 它是 Windows 中设置的唯一 DNS 服务器,没有其他 DNS 服务器
- 如果DNS 服务器
- 当我打开 PowerShell 并 nslookup 一个域(在
www
或local
子网中)时,我收到了正确的响应。(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"
/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 中的路由指标或接口索引来修复此问题,但这样做会变得很复杂。