前言
我还远不能成为一名网络管理员,并且对 IPv6 还不太了解,但我必须慢慢了解。
我家里有一台基于 RPi4 的服务器,主要用于 Home Assistant 智能家居自动化(通过 Docker),但由于它可以很好地处理一些额外的实际事务,我将其用作本地 DNS 中继和带有“dnsmasq”的 DHCP 服务器。它的基础是官方的 Ubuntu - Server 22.10。
我在匈牙利通过沃达丰的有线网络,从外到内,使用他们的调制解调器,在自己的 D-Link DIR-880L 路由器上使用我的设备而不是他们的设备来管理我的网络,并在其上管理我所有的网络设备(有线或无线)。
我需要一个内部 DNS 服务器来通过本地域处理我的内部设备,并且因为“dnsmasq”可以很好地处理 DNS 和 DHCP 功能,所以我喜欢使用它来代替我的路由器的 DHCP 配置。
我有一个可行的 DDNS 解决方案,在我的路由器上有一个正确的 IPv4 端口转发,并且具有沃达丰调制解调器的桥接模式,因此我可以远程访问我的家庭助理,并且可以将我的家庭助理链接到 Google Home 来处理他们的设备语音控制。
IPv4 网络上一切都很顺利,直到 2 个月前,我对沃达丰调制解调器进行了软件升级,获得了一个“额外的”IPv6“地址”。第一眼看到它时我有点震惊,因为我对 IPv6 一无所知,所以我必须适应它,必须知道如何使用它(由于新的沃达丰调制解调器软件不提供 IPv4 NAT,所以基本上在 IPv4 上我无法远程管理我的内部设备,因此我不得不切换到 IPv6 来满足这些要求),但几周后看来它可以满足我的需求,但也存在一些问题,我根本无法理解。
从网络方面来看,目前我为我的调制解调器获得了一个 IPv4 地址,没有 NAT 功能,所以这里是分支的末尾,但当然我得到了一个 IPv6/64 子网,这对我来说基本上是完美的,只要有适当的防火墙配置。
IPv4:我的路由器位于 192.168.0.0 子网上,由调制解调器的 DHCP 管理。我真正的内部“局域网”位于 192.168.1.0 子网上,由 dnsmasq 的 DHCP4 管理,我的路由器处于路由器模式作为网关。它基本上可以正常工作,只是没有提到的 NAT 功能就无法进行远程管理。
IPv6:我的路由器位于调制解调器管理的无状态 DHCP + SLAAC(无法禁用)上,位于基于给定前缀的 IPv6 子网上。路由器配置了“无状态 DHCP + SLAAC”,并启用了“IPv6 地址分配”和“LAN 中的 DHCP-PD”功能。由于上述行,我的所有内部设备都获得/生成自动 IPv6 地址(通过 SLAAC),但当然这些地址不是由我管理的,也不是完全静态的,因为它们上面没有全状态 DHCP。因此,这里在 RPi 上执行“dnsmasq”的步骤,并进行全状态 DHCP6 配置。
此时,我的所有设备都获得了 1-1 SLAAC 和全状态 DHCP 管理的 IPv6 地址,并且工作正常。重要的是,这种“双重打击”非常实用,因为 Android 目前不支持全状态 DHCP 地址,因此使用并行配置,我的所有 Android 设备也都在 IPv6 网络上(使用无状态配置),而所有其他设备都位于由‘dnsmasq’的 DHCP6 管理的真实静态地址上。
问题
1.
设备重新连接到网络后,我立即从“dnsmasq”获得 DNS,但几分钟或几小时后,它们会随机自动更改为 Vodafone 的 DNS,因此从那时起,我无法访问使用本地域名调用的内部设备。我认为这是因为调制解调器具有“无状态 DHCP”功能,但遗憾的是我无法禁用它。但从另一个方面来看 - 正如我所写的 - 因为 Android 设备只需要“dnsmasq”附近“侧面”的 SLAAC 也提供状态 DHCP6。但 - 我认为 - 基本上这里的问题不是并行 SLAAC,而是调制解调器的“无状态 DHCP”功能,它“广播”它的 DNS 并时不时覆盖我的“dnsmasq”提供的 DNS。
我是否正确看待这一情况?有什么想法可以解决这个问题吗?
2.
由于我的 IPv6 子网比以前的 IPv4 地址更加静态 :D,我将之前使用的 DDNS 更改为自己的付费域名(当然我不是指当地的)使用固定配置的 AAAA 记录指向我的 RPi 的静态 IPv6 地址(它的地址是真正的静态地址,因为它本身就是有状态的 DHCP 服务器)。我可以通过上述 AAAA 记录上方的域名顺利访问 Home Assistant(目前在 Docker 中使用已命名但基本上是默认的桥接网络)但是... Android 设备上的 IPv6 网络时不时似乎会出现某种故障,我根本不知道最有趣的部分在哪里以及如何发生?!
在新的 Android 设备连接后,我可以通过上述域名访问我的 Home Assistant(非本地内容),因此相应域的解析工作正常,IPv6 网络也是如此,因为域只有 AAAA 记录。一段时间后,从同一个 Android 设备,我根本无法通过域访问我的 Home Assistant,但可以通过其 IPv6 地址访问。WTH?!IPv6 网络仍然有效,但失去域解析?在这种情况下,不仅处理了我的“dnsmasq”DNS 中继,因为相应的域不是本地的,它已经非常精细地分布/传播了。所以这对我来说真的是一个黑洞。这里会发生什么?
断开 Android 设备与网络的连接并重新连接后,几分钟后我又可以正常“链接”了,但几次之后,我又无法仅通过其 IPv6 地址(而不是域名)访问我的 Home Assistant,而所有其他域名解析似乎都正常。遗憾的是,此时我不确定何时使用 IPv4 或 IPv6 进程,因此可能是因为 IPv4 正常工作,而 IPv6 分支损坏,所以所有其他 DNS 解析似乎都正常工作,但在这种情况下,我如何通过其 IPv6 地址访问 Home Assistant?!。
正如我所写的,我还没有完全适应 IPv6 世界,但从一个方面来看一切都很好,而从另一个方面来看却并非如此 :(。
3.
整个 IPv6 世界都很好,我唯一的问题是匈牙利的沃达丰没有在其移动网络上提供 IPv6 地址(我也用过),因此如果以上所有条件都满足,我就无法通过手机访问我的家和 Home Assistant。但理论上,这个“小问题”可以通过 Google Home/Google Assistant 解决,就好像该服务可以处理我的 Home Assistant,Google Home 本身也可以通过 IPv4 访问,因此它可以成为两个“网络”之间的桥梁,但遗憾的是我无法将我的 Home Assistant 设置为通过 Google Home 可用,从我全新的 IPv6 世界开始也是如此。之前(仅限 IPv4)这也运行得很好。但这实际上并不是一个原始的服务器/网络配置问题,所以我不会在这里详细说明,因为这是一个 Home Assistant/Google Home 问题,这是另一个话题(还有另一个论坛:D,其中有趣的部分是,几年前我为那些在官方文档中迷失的人编写了如何配置它的分步说明)。
提前致谢,如果有人能给我指明正确的方向......
(如果它有帮助,我当然会放弃配置/等等,但首先我想如果我写下整个结构,有人可以指出我其中最有问题的部分。)