我正在享受使用 IPv6 创建一些小型 Raspberry Pi Web 服务器的乐趣。然而,由于某些 DNS 问题,我的 Android 手机无法访问这些内容。
情况是这样的。
我注册了一个域名,每年只需 10 欧元,我们称之为 mydomain.nl 。我创建了一些本地服务器,例如:www.mydomain.nl和meter.mydomain.nl。使用 IPv6,两台服务器都可以在全球范围内访问,而无需旧的网络地址转换 (NAT) 功能。只要我将 DNS 配置为例如 8.8.8.8,这一切都可以在家里或外面的任何笔记本电脑上正常工作。
问题是我不知道如何在 Android 手机中配置 DNS,因此我必须使用默认的 DHCP 设置。
我发现一半的互联网提供商还不支持 IPv6,例如 T-Mobile 和 Vodafone,而我的手机使用的是 T-Mobile。但即使在家中使用 wifi,使用支持 IPv6 的 Xs4all cq KPN(如 Ziggo),我的手机也无法找到两个树莓派主机。
我没有在这些主机上配置 IPv4,因为 IPv4 无法用于将两个本地主机公开到外部 Internet。
我使用 PING、NSLOOKUP 和 HOST 测试了 DNS 解析。DIG 也是一个简洁的工具。我将问题深入到互联网调制解调器(路由器)、Fritzbox 7590、本地 IP 地址 192.168.3.27 以及 IPv6 主机地址。Fritzbox 使用四个 DNS 服务器:195.121.97.202 和其他 3 个,其中 2 个 IPv6 DNS 服务器地址。
使用此命令,我检查了每个 DNS 服务器地址是否都能正确找到我的 Raspberry Pi 服务器的 IPv6 地址:
nslookup meter.mydomain.nl 195.121.97.202 # OK: IPv6 address found
然而,使用相同的命令但名称服务器= 192.168.3.27,即Fritzbox的地址,无法找到Raspberry Pi服务器:
nslookup meter.mydomain.nl 192.168.3.27 # ERROR: no address found
尽管如此,Fritzbox 确实解析了外部 IPv6 服务器,例如:
nslookup ipv6.google.com 192.168.3.27 # OK: IPv6 address found
现在这很不幸,因为当我查看 Android 手机的设置时,最后一个 192.168.3.27 用于 DNS。加上额外的 IPv6 地址,但这些地址引用相同的 Fritzbox。
所以问题归结为以下几点:
- 在电话上我使用 Firefox 浏览 URL:meter.mydomain.nl
- 电话使用 fritz.box 上的 DNS 来解析该 URL
- fritzbox 配置了一些可以解析该 URL 的 DNS 服务器,但手机未收到 IP 地址,并且 Firefox 报告:找不到地址。
- 手机可以很好地找到外部 IPv6 站点,例如 ipv6.google.com
真正的问题是:
对于我在 wifi 上的手机,Fritzbox DNS 可以解析外部IPv6 主机(如 ipv6.google.com),但不能解析本地IPv6 主机(如我的 Raspberry Pi 服务器),而 Fritzbox 使用的 DNS 服务器可以很好地找到所有这些服务器。
如何解决这个问题?我已经没脑子了……
顺便说一句,我实际上检查了 5 部 Android 手机,Android 版本为 8、11、12、13,但我不认为问题出在手机上。全部使用相同的 fritzbox 地址作为 DNS。在这些中我都没有找到更改 DNS 服务器的设置。
我找到了一个解决方法:您可以在 Android 手机中的“设置”、“网络”、“专用 DNS”下添加 DNS 服务器。您无法输入 IP 地址,但可以输入主机名,例如,对于 8.8.8.8,您添加 dns.google,对于 1.1.1.1,您添加 1dot1dot1dot1.cloudflare-dns.com 。
但是为什么首先使用 google 解决所有 DNS 查询,这在隐私方面是可取的吗?所以我认为这是一个解决方法。我们应该在问题出现的地方解决问题,所以我将这个问题留待解决。
避免 google 的解决方法是查找 Fritzbox 使用的 DNS 服务器的 IP 地址的主机名。但同样,我想在调制解调器(路由器)本身上解决这个问题。