我正在尝试使用 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。但即使在家里使用支持 IPv6 的 Xs4all cq KPN(比如 Ziggo)的 wifi 时,我的手机也找不到两个 Raspberry Pi 主机。
我没有在这些主机上配置 IPv4,因为 IPv4 不能用于将两个本地主机暴露给外部互联网。
我使用 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
真正的问题是:
对于我的手机,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。
但为什么要先使用谷歌解决所有 DNS 查询,这对隐私而言可取吗?所以我认为这是一种解决方法。我们应该在问题出现的地方解决问题,所以我将这个问题留待以后再回答。
避免使用谷歌的解决方法是找到 Fritzbox 使用的 DNS 服务器的 IP 地址的主机名。但同样,我想在调制解调器(路由器)本身上修复此问题。
答案1
令我惊讶的是,这个问题原来不是一个错误,而是一个功能!
此注释调制解调器制造商表示,DNS是故意为本地主机屏蔽的,以避免DNS 重新绑定攻击。
该说明还描述了如何配置异常,效果非常好。
我通过谷歌搜索这个问题并提及 Fritzbox 模型找到了这个解决方案。如果我这样搜索,就可以省去很多麻烦,也可以解决这个问题。但也许只有在分析了这个问题之后,你才能想到这样的谷歌搜索。