![Windows 中的静态 IPv6 地址未用于传出连接](https://linux22.com/image/618658/Windows%20%E4%B8%AD%E7%9A%84%E9%9D%99%E6%80%81%20IPv6%20%E5%9C%B0%E5%9D%80%E6%9C%AA%E7%94%A8%E4%BA%8E%E4%BC%A0%E5%87%BA%E8%BF%9E%E6%8E%A5.png)
我正在运行 Windows 服务器,并尝试让它使用静态 IPv6 地址来向外连接到其他 IPv6 主机(例如 Gmail)。我需要这样做是因为 Gmail 需要 ptr 记录,而我无法为随机地址设置 ptr 记录。
静态地址是在主机上配置的,但它似乎还有一个临时的隐私地址以及来自路由器的随机地址。默认情况下,Windows 使用隐私地址;这似乎是预期的行为(对于没有设置静态地址的人/用户来说,这完全合理,但我设置了!)。
我尝试使用以下方法禁用隐私地址:
netsh int ipv6 set privacy disabled
这确实摆脱了隐私地址,但我仍然拥有路由器分配的随机地址。要禁用此功能,据说我需要使用以下命令禁用“路由器发现”:
net interface ipv6 set interface 14 routerdiscovery=disabled
执行此操作后,所有 IPv6 连接都会丢失。如果我在 ping Gmail 时执行此操作,输入命令后它会立即报告“目标主机无法访问”。在静态 IPv6 配置中,我确实配置了默认网关和前缀长度,所以我不明白为什么无法连接。可能与 IPv6 中缺少 ARP 以及无法解析路由器的 MAC 有关,但我不知道如何解决这个问题。
最后我尝试了禁用 DHCPv6 租约使用以下命令:
netsh interface ipv6 set interface "IDMZ Team" managedaddress=disabled
netsh interface ipv6 set interface "IDMZ Team" otherstateful=disabled
但无济于事;主机继续获取并使用路由器分配的 IPv6 地址。
路由器是 FritzBox 7340,它显示了主机(由 MAC 标识)使用的所有 IPv4 和 IPv6 地址,但我无法更改分配的地址。也许可以通过路由器的 telnet 接口以某种方式完成此操作,但同样,即使这是可行的方法,我也不知道该怎么做。
简而言之,以下任何一种方法都可能解决我的问题:
- 改变 Windows 的源地址选择行为。
- 让Windows不从路由器获取地址并且不生成隐私地址;
- 让路由器分发一个静态地址并让 Windows 使用该地址作为源地址。
- 在 Windows 上禁用路由器发现后恢复连接。
或者,我可以使用一些(批处理、perl 等)脚本来丢弃除所需地址之外的所有 IPv6 地址,但这感觉有点不靠谱。如果这是唯一的方法(或者比其他不靠谱的解决方案更不靠谱),那么它可能是一个选择。
谢谢!
答案1
“来自路由器的随机地址”可能是您的 EUI-64 地址,它基于您的 MAC 地址。因此它可能不是随机的,并且会随着时间的推移保持稳定(直到您更换硬件)。将您的 MAC 地址与您的 IPv6 地址进行比较。如果您的 MAC 地址是,01:23:45:67:89:ab
那么您的 IPv6 地址将以 结尾...:0323:45ff:fe67:89ab
。您也可以为该地址添加 PTR 记录。
但我想建议另一种解决方案:如果您直接将邮件发送到接收方的邮件服务器,则您正在运行邮件服务器软件。您应该能够将该服务器软件绑定到特定的 IP 地址。这样,您的邮件服务器在进行出站连接时将始终使用配置的地址,而所有其他软件都可以使用您的主机上可用的任何地址(静态、自动配置、DHCPv6、隐私等)