IPv6 客户端服务

IPv6 客户端服务

我有一个提供 DHCPv4 和 DHCPv6 的 Windows Server 2012。
服务器上的 NIC 有 2 个 IPv6 地址。我发现第二个 IPv6 来自“IPv6 客户端服务”,我确实需要它(仅服务 - 而不是 IPv6)用于另一个服务,但我不需要给定的 IPv6 地址 - 事实上 v6 IP 会产生一些错误。
我知道有一个 netsh 命令可以删除这个地址,但不幸的是,服务过一段时间后会创建另一个地址。有没有办法在不禁用整个服务的情况下禁用从“IPv6 客户端服务”生成另一个 IPv6?

/编辑:

Beschreibung. . . . . . . . . . . : Gigabit-Netzwerkverbindung Intel(R) 82574L<br/>
Physische Adresse . . . . . . . . : ??-??-??-??-??-??<br/>
DHCP aktiviert. . . . . . . . . . : Nein<br/>
Autokonfiguration aktiviert . . . : Ja<br/>
IPv6-Adresse. . . . . . . . . . . : 2a02:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx(Bevorzugt)<br/>
IPv6-Adresse. . . . . . . . . . . : 2a02:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx(Bevorzugt)<br/>
Lease erhalten. . . . . . . . . . : Montag, 10. November 2014 17:17:42<br/>

我的输出显示我获得了 2 个 IPv6 地址。一个来自 DHCP 服务器,是服务器自己分配的,另一个是静态地址。

为什么即使我禁用了 m 标志和路由器发现,服务器仍然使用其自身池中的 IPv6 地址?

/编辑2:

我刚刚找到了一个解决方案。虽然 Server 2008 R2 没有显示 IPv6 的这种特性,但 Server2012 R2 却有。这绝对是我们不希望看到的。虽然您可以使用 netshell 命令

Netsh int ipv6 delete address NIC ADDRESS删除第二个 IPv6(来自 IPv6 池的随机 IPv6),

但服务器本身会在一段时间后要求另一个 IPv6。即使所有需要的标志都是 0。
此错误的解决方案是使用 2 个 cmdlet 来激活标志并在激活后立即停用它们。它们甚至比 netshell 命令更强大 - 即使它们表面上执行相同的操作。

以下是命令:

$a = "INTERFACENAME"

Set-NetIPInterface "$a" -AddressFamily ipv6 -RouterDiscovery Enabled
Set-NetIPInterface "$a" -AddressFamily ipv6 -ManagedAddress Enabled

Set-NetIPInterface "$a" -AddressFamily ipv6 -RouterDiscovery Disabled
Set-NetIPInterface "$a" -AddressFamily ipv6 -ManagedAddress Disabled

现在您需要将其保存为 powershell 脚本并将其添加到任务计划程序中。您只需在重启后执行它即可。

打开任务计划程序,创建一个新任务,将触发器设置为“重新启动”,并将操作设置为:

%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe
-command "C:\Scripts\PATH_TO_THE_SCRIPT.ps1"

第一个是 powershell 的路径,第二个是脚本的路径。现在您只需指定在重新启动时以管理员权限运行脚本。我建议使用系统用户来运行此脚本。

现在是重新启动的时候了。执行它并打开 shell,输入ipconfig /all查看您的静态 IPv6 和 DHCPv6 池中不存在的 IPv6。

/编辑 3(最后一次编辑和解决方案):

此后服务器仍向多播地址 ff02::1:2 发送 DHCPv6 请求。
使用 Wireshark 显示它。
此行为发生在 Windows 8、Windows 8.1、Windows 7 和 Windows Server 2012 中。
在 Windows 8、Windows 8.1 和 Server 2012 中,您可以通过简单地执行这个小 CMDLet(它确实需要管理员权限)来禁用 DHCPv6 请求:

Set-NetIPInterface INTERFACENAME -AddressFamily IPv6 -DHCP Disabled

答案1

关闭路由器上的自主标志并打开手动标志。将网卡上的静态地址设置为使用前缀 128,您就成功了。

您可以使用 powershell 中的 get-netipaddress 诊断无状态地址分配,它将显示系统从哪里获取地址。

注意:如果打开了自主标志,Windows 服务器(即使设置为 dhcp)也会清除其手动地址并使用无状态。

编辑:我忘了添加这将设置有状态 IPv6,如果这不是你的目标,那么请忽略这个答案。

编辑:另请参阅:Windows 7 和 Ubuntu 12.04 上的 IPv6 地址首选项和隐私扩展

相关内容