Windows 客户端未使用 dnsmasq 解析内部主机名

Windows 客户端未使用 dnsmasq 解析内部主机名

设置

我的设置中至少涉及 3 个设备:

  • raspberry pi:这已配置 dnsmasq,仅用于作为我的 LAN 的 DNS 服务器,我可以选择使用它而不是路由器的上游服务器。
  • 个人笔记本电脑:我在这里从闪存驱动器运行 Web 服务器,并且需要 LAN 的其余部分可以访问它,因此需要 RPI。
  • 数量可变的 Windows 笔记本电脑:这些笔记本电脑正在配置中,并且网页用于指导我完成整个过程并提供安装资源。

问题

我正在配置的 Windows 笔记本电脑无法通过其 FQDN 找到我的个人笔记本电脑,因此需要我使用 IP 地址。在将 RPI 设置为 DNS 服务器后尝试使用我的 Android 手机进行测试时也是如此。这是我第一次配置 dnsmasq,但我对 DNS 或网络并不是特别陌生。

我在这里遗漏了什么,没有让我的 Windows/Android 客户端通过将其设置为其 DNS 服务器来连接到我的 RPI 主机?

测试

从运行 dnsmasq 的 RPI 主机,我可以使用 nslookup 来查找我的笔记本电脑。

# by its host name
pi@pi:~ $ nslookup nwirp
Server:         127.0.0.1
Address:        127.0.0.1#53

Name:   nwirp
Address: 10.0.0.210

# by its FQDN
pi@pi:~ $ nslookup nwirp.tools.localhost
Server:         127.0.0.1
Address:        127.0.0.1#53

Name:   nwirp.tools.localhost
Address: 10.0.0.210

在我的个人笔记本电脑上运行 Linux 的 VM 中,我将 RPI 设置为其 DNS 服务器后就能找到我的笔记本电脑:

owner@owo:~$ nslookup nwirp
Server:         10.0.0.100
Address:        10.0.0.100#53

Name:   nwirp
Address: 10.0.0.210

owner@owo:~$ nslookup nwirp.tools.localhost
Server:         10.0.0.100
Address:        10.0.0.100#53

Name:   nwirp.tools.localhost
Address: 10.0.0.210

但是当我进入 Windows 时并尝试这样做,尽管已经设置了 DNS 服务器,但它似乎从未默认或推迟到它,而是选择了康卡斯特服务器。

> nslookup nwirp
Server:  cdns01.comcast.net
Address:  2001:558:feed::1

*** cdns01.comcast.net can't find nwirp: Non-existent domain

> nslookup nwirp.tools.localhost
Server:  cdns01.comcast.net
Address:  2001:558:feed::1

*** cdns01.comcast.net can't find nwirp.tools.localhost: Non-existent domain

我知道我可以通过在命令末尾添加 IP 地址来强制 nslookup 使用我的服务器,如下所示

> nslookup nwirp.tools.localhost 10.0.0.100
Server:  tools.localhost
Address:  10.0.0.100

Name:    nwirp.tools.localhost
Address:  10.0.0.210

但问题是这只是在 nslookup 的范围内,我需要浏览器使用 DNS 服务器。

尝试让 Windows 使用 Dnsmasq

我试过了:

  • 通过我的 wifi 连接设置,通过静态 IP 设置来设置 DNS 服务器
  • 通过控制面板 > 网络和共享中心 > 连接 > Wi-Fi 属性在 IPv4 配置中进行设置
  • (编辑)从上一点开始,禁用 IPv6 配置以强制使用我的 IPv4 DNS 服务器。这使得 nslookup 可以在 Windows 上按预期工作,而无需指定我的 IP,但不会延续到浏览器,无论我使用哪种浏览器(FF、基于 Chrome/Chromium 的浏览器),浏览器都会告诉我连接被拒绝。有趣的是,禁用 IPv6 后,我可以使用 curl/Invoke-WebRequest 成功发送 GET 请求。
  • 通过 PowerShell 设置set-dnsclientserveraddress -interfacealias "wi-fi" -serveraddress ("10.0.0.100")
  • (编辑)在浏览器中将我的 RPI 指定为 DNS over HTTPS 提供程序。
  • (编辑)在浏览器中禁用 HTTPS 上的 DNS。

我部分地相信这是因为 Windows 需要做更多的工作来配置,而 Linux 在更新 /etc/resolv.conf 后似乎可以立即工作 - 但在指定 DNS 服务器后也有关于我的手机找不到它的说明,所以我不能排除 dnsmasq 配置不正确。

Dnsmasq 配置

/etc/hosts

pi@pi:~ $ cat /etc/hosts
127.0.0.1       localhost
::1             localhost ip6-localhost ip6-loopback
ff02::1         ip6-allnodes
ff02::2         ip6-allrouters
127.0.1.1       raspberrypi

10.0.0.210      nwirp
10.0.0.100      tools.localhost

/etc/resolv.conf

# This file is immutable

pi@pi:~ $ cat /etc/resolv.conf
# Generated by resolvconf
nameserver 127.0.0.1

/etc/dnsmasq.conf

pi@pi:~ $ cat /etc/dnsmasq.conf
expand-hosts
server=1.1.1.1
resolv-file=/etc/resolv.conf
log-queries
log-facility=/var/log/dnsmasq.log
domain=tools.localhost
local=/local./

Dnsmasq 日志

相关日志文件行

# RPI nslookup
pi@pi:~ $ sudo egrep "(nwirp|tools)" /var/log/dnsmasq.log
Jul 14 18:15:11 dnsmasq[7007]: query[A] nwirp from 127.0.0.1
Jul 14 18:15:11 dnsmasq[7007]: /etc/hosts nwirp is 10.0.0.210
Jul 14 18:15:11 dnsmasq[7007]: query[AAAA] nwirp from 127.0.0.1
Jul 14 18:15:11 dnsmasq[7007]: forwarded nwirp to 1.1.1.1
Jul 14 18:15:11 dnsmasq[7007]: reply nwirp is NODATA-IPv6

# RPI nslookup
Jul 14 18:16:57 dnsmasq[7007]: query[A] nwirp.tools.localhost from 127.0.0.1
Jul 14 18:16:57 dnsmasq[7007]: /etc/hosts nwirp.tools.localhost is 10.0.0.210
Jul 14 18:16:57 dnsmasq[7007]: query[AAAA] nwirp.tools.localhost from 127.0.0.1
Jul 14 18:16:57 dnsmasq[7007]: forwarded nwirp.tools.localhost to 1.1.1.1
Jul 14 18:16:57 dnsmasq[7007]: reply nwirp.tools.localhost is NODATA-IPv6

# Windows nslookup
Jul 14 18:17:57 dnsmasq[7007]: query[A] nwirp.hsd1.wa.comcast.net from 10.0.0.210
Jul 14 18:17:57 dnsmasq[7007]: forwarded nwirp.hsd1.wa.comcast.net to 1.1.1.1
Jul 14 18:17:57 dnsmasq[7007]: reply nwirp.hsd1.wa.comcast.net is NXDOMAIN

# Windows nslookup
Jul 14 18:17:57 dnsmasq[7007]: query[A] nwirp.hsd1.wa.comcast.net from 10.0.0.210
Jul 14 18:17:57 dnsmasq[7007]: cached nwirp.hsd1.wa.comcast.net is NXDOMAIN
Jul 14 18:19:48 dnsmasq[7007]: query[A] nwirp.hsd1.wa.comcast.net from 10.0.0.210
Jul 14 18:19:48 dnsmasq[7007]: cached nwirp.hsd1.wa.comcast.net is NXDOMAIN

# VM nslookup
Jul 14 18:19:48 dnsmasq[7007]: query[A] nwirp from 10.0.0.210
Jul 14 18:19:48 dnsmasq[7007]: /etc/hosts nwirp is 10.0.0.210
Jul 14 18:19:48 dnsmasq[7007]: query[AAAA] nwirp from 10.0.0.210
Jul 14 18:19:48 dnsmasq[7007]: cached nwirp is NODATA-IPv6

# VM nslookup
Jul 14 18:19:54 dnsmasq[7007]: query[A] nwirp.tools.localhost from 10.0.0.210
Jul 14 18:19:54 dnsmasq[7007]: /etc/hosts nwirp.tools.localhost is 10.0.0.210
Jul 14 18:19:54 dnsmasq[7007]: query[AAAA] nwirp.tools.localhost from 10.0.0.210
Jul 14 18:19:54 dnsmasq[7007]: cached nwirp.tools.localhost is NODATA-IPv6

更新:在 Linux 上测试类似的浏览器

我刚刚在我的 Linux VM + Firefox 上安装了一个 GUI,并确认 Linux 上的浏览​​器使用 dnsmasq 没有问题,但 Windows 上的浏览​​器却很难使用。至少有了这个,我很确定 (?) dnsmasq 设置正确,但我不知道该如何处理 Windows。

答案1

你在domain=tools.localhost

domain=tools.localhost.

相关内容