![使用 Windows DHCP/DHCPv6 服务器而不设置静态地址](https://linux22.com/image/609017/%E4%BD%BF%E7%94%A8%20Windows%20DHCP%2FDHCPv6%20%E6%9C%8D%E5%8A%A1%E5%99%A8%E8%80%8C%E4%B8%8D%E8%AE%BE%E7%BD%AE%E9%9D%99%E6%80%81%E5%9C%B0%E5%9D%80.png)
您无法将 Windows DHCP/DHCPv6 服务器设置为侦听动态地址或所有地址,只能侦听静态地址。此限制是否有技术原因?是否有解决方法?
我的具体情况:
我正在使用路由器通告来配置此网络中的 IPv6 主机。地址前缀是从上游路由器获取的,可能会在未经通知的情况下更改。有问题的 Windows DHCPv6 服务器仅配置为分发域搜索列表和其他与地址无关的配置(它配置为无状态模式,不配置地址)。
DHCPv6 服务器可以使用相同的路由器通告配置自己的地址,但不会响应请求。我无法将其配置为使用静态地址,因为一旦前缀改变它就会中断。
我确实意识到我可以在这个子网中设置 ULA,但这是最后的手段(而不是答案)。
更新:有人质疑动态 IPv6 路由是否是个好主意。我认为即使您的 ISP 提供静态前缀,动态 IPv6 路由也是必要的。必须用于能够从故障转移中快速重新路由并模仿 IPv4 NAT 中的伪路由提供的其他功能。
答案1
现在我知道我说过建立 ULA 不是一个选择,但它实际上比我想象的要容易得多。您不需要发布前缀并且 ULA 子网中的其他地址甚至不需要存在于任何地方。
是的,这是一个垃圾地址,它扰乱了路由表,但至少它不会进入其他机器。
希望微软能在某些时候注意到这一点,并允许他们的 DHCPv6 服务器响应除静态地址之外的其他可用地址。在有状态地址分配期间要求使用静态地址是有意义的,以便可靠地将范围映射到接口。但它确实不是适用于无状态 DHCPv6。
不幸的是,这个问题没有其他答案。
答案2
我不知道微软强制 Windows 的 DHCP 服务仅监听静态配置的网络适配器的技术原因(尽管我能想到几个),但我确信这是一个要求,并且没有解决方法。
从http://technet.microsoft.com/en-us/library/cc755277.aspx:
对于某些类型的服务器,您必须在安装期间或安装后分配静态 IP 地址和子网掩码。这些服务器包括 DHCP 服务器、DNS 服务器、WINS 服务器 [...]
从http://technet.microsoft.com/en-us/library/cc770650.aspx:
DHCP 服务器服务执行默认服务绑定如下:
• 如果第一个网络连接使用手动指定的IP地址,则在服务器绑定中启用该连接。[...]
• 如果第一个网络连接使用动态配置的 IP 地址,则服务器绑定中禁用该连接。
答案3
一种可能的解决方法是使用多个接口,无论是物理还是虚拟交换机类型。我会为 DHCPv6 服务器接口绑定分配一个“私有”唯一本地地址块,例如 FC00::/8。由于您的客户端计算机可以拥有多个 IPv6 地址,因此它们仍然应该能够获得一个公共的自动配置的 /64 地址。