为什么我的Windows有数百个临时IPv6地址?


17

几周前,我的ISP为我启用了IPv6。现在我注意到Windows(8.1)获得了许多临时的IPv6地址。ipconfig具有以下输出(混淆真实地址):

Windows IP Configuration

Ethernet adapter Ethernet:

    Connection-specific DNS Suffix  . : fritz.box
    IPv6 Address. . . . . . . . . . . : 2012:65:fd85:5712:e0ca:9e76:661f:c4f1
    Temporary IPv6 Address. . . . . . : 2012:65:fd85:5712:74:5cd9:163c:69ef
    Temporary IPv6 Address. . . . . . : 2012:65:fd85:5712:89:8f2:7643:e51e
    Temporary IPv6 Address. . . . . . : 2012:65:fd85:5712:e3:52fd:b15f:6d7d
    [...over 600 more entries...]
    Temporary IPv6 Address. . . . . . : 2012:65:fd85:5712:fda8:816e:6d3:7713
    Temporary IPv6 Address. . . . . . : 2012:65:fd85:5712:fdc9:7a6b:d2c5:e880
    Temporary IPv6 Address. . . . . . : 2012:65:fd85:5712:fdf4:11ed:9aba:9e27
    Link-local IPv6 Address . . . . . : fe80::e0ca:9e76:661f:c4f1%3
    IPv4 Address. . . . . . . . . . . : 192.168.178.22
    Subnet Mask . . . . . . . . . . . : 255.255.255.0
    Default Gateway . . . . . . . . . : fe80::a96:d7ff:fe1f:cb26%3
                                        192.168.178.1

我真的不知道所有这些地址都来自哪里。同一网络上的Mac OS X的临时IPv6地址没有问题。除了是一个奇怪的问题,我相信IPv6地址的数量正在减慢Windows上我的网络性能。

是否有人知道触发此行为的原因以及如何防止它。如果可能的话,我不想完全禁用临时IPv6地址。


在写这个问题的同时,我的Windows还获得了大约50个临时IPv6地址。
fschoenm 2014年

1
您是否有程序打开连接并使其保持打开状态?这是造成这种情况的常见原因。同样,这些地址实际上都不是有效的。2012::/8尚未分配。这也可能是一个问题。
迈克尔·汉普顿

@MichaelHampton:抱歉,我对地址有些混淆。收件人有效,您必须相信我:)
fschoenm 2014年

6
(顺便说一句,如果您想混淆您的IPv6地址,请始终使用2001:db8::/32,(RFC 3849),这将清楚表明它们是示例地址。)
Michael Hampton

1
地址本身是部分随机生成的。阅读以下Randomly generated interface identifier部分:msdn.microsoft.com/zh-cn/library/aa915616.aspx
Brian

Answers:


14

是否有人知道触发此行为的原因以及如何预防它?

Brian通过给您的链接,“为使用无状态地址自动配置的公共地址前缀生成了临时地址。”

更具体地说,每个进程都会生成资源请求,然后由OS交付。IPv6 SAA在RFC 2462中定义,但是“临时IPv6地址”是由于Windows的实现 RFC 4941。因此,问题就变成了哪个进程负责启动OS请求以打开具有这些Privacy Extensions的套接字。

为了回答您的问题是什么触发的,让我们看一下硬件和软件。

操作系统

Windows使用中定义的参数管理临时地址netsh interface ipv6 show privacy。修改netsh interface ipv6 set privacy ?

要检查它们在Linux机器上的设置,请检查中的内核变量/proc/sys/net。您可能会找到与发行版相关的值,sysctl -a --pattern ^net\..*ipv?6.*temp.*并使用更改所需的变量sysctl -w foo.bar.var=<new value>(在您的Apple机器上应该类似,请检查man sysctl

硬件/操作系统

你做了 netstat -p TCPv6,但它可能不是TCP连接。

做一个 netstat -bes相互几分钟,看到了* V6块之间的差异比较什么。

虽然我认为这可能是硬件问题,因为NIC固件无法处理ipv6,但更有可能是由软件OS /进程触发的。如果是硬件,则软件端可能无法正常处理会话中断,并且无法恢复先前IP上的连接。因此,将其标识为软件问题并不一定排除硬件问题。

软件/ OS系统流程和服务

为此,请使用http://www.nirsoft.net/utils/network_traffic_view.html查看网络流量以识别该过程。

因为按照定义,这些地址是临时的,所以它们可以在进程结束后临时保留,因此,如果套接字立即关闭,您可能看不到NTV中打开连接的当前正在运行的进程。

为此,请使用Process Explorer(http://live.sysinternals.com/tools/procexp.exe)和差异突出显示(选项>差异突出显示持续时间> 9),然后滚动到新进程(查看>滚动到新进程)。绿色/红色整行分别表示在最近9秒内创建或销毁的进程。

确定流程后,如果它是浏览器或任何带有插件的应用程序,则必须以安全模式启动浏览器并逐个启用插件,以调试可能导致问题的插件或网站javascript。


谢谢,我将尝试其中的一些东西。但是,重新启动后,我的Windows根本没有临时的IPv6地址,因此我必须等待。这真令人沮丧。
fschoenm 2014年

1
我想我发现了我的问题:当尝试按照您的建议使用NetworkTrafficView时,我注意到我的WinPcap安装已损坏。我不能同时使用Wireshark和NetworkTrafficView,因为它们在启动时都挂了。我重新安装了WinPcap,此后一切似乎都可以正常工作!
fschoenm 2014年

1

由于IPv6地址标识符保持静态,因此出于安全原因,使用了临时地址。临时地址是提供匿名级别的IPv6接口标识符。这些地址可以随机生成并随时间更改。Windows的IPv6协议默认情况下为全局地址前缀创建临时地址。

我不建议禁用临时IPv6地址。但是,您可以使用以下命令并重新启动来禁用临时IPv6地址

netsh interface ipv6 set global randomizeidentifiers=disabled
netsh interface ipv6 set privacy state=disabled

在Windows 10和Server 2016中,您可以使用PowerShell Set-NetIPv6Protocol cmdlet设置限制:

# The computer always generates temporary addresses by using random numbers. 
Set-NetIPv6Protocol -UseTemporaryAddresses Always

# The computer generates temporary addresses by using the interface identifier. 
# You typically use this identifier for test purposes. 
Set-NetIPv6Protocol -UseTemporaryAddresses Counter

# The computer does not use temporary addresses. 
Set-NetIPv6Protocol -UseTemporaryAddresses Disabled

# The computer uses temporary addresses.
Set-NetIPv6Protocol -UseTemporaryAddresses Enabled

要查找正在使用临时地址的进程,请检查本地地址列与netstat输出中的临时地址匹配的项:

netstat -p tcpv6 -o -f -b

如果找不到任何东西,则需要使用跟踪工具,例如Sysmon

要使用SysMon执行此操作,请创建带有以下文本的XML文件IPv6.xml:

<Sysmon schemaversion="3.2">
<EventFiltering>
    <NetworkConnect onmatch="include">
        <SourceIsIpv6>true</SourceIsIpv6>
    </NetworkConnect>
</EventFiltering>
</Sysmon>

然后下载SysMon并安装配置文件:

SysMon -i IPv6.xml

这将在应用程序和服务日志/ Microsoft / Windows / Sysmon / Operational下的Windows事件日志中记录IPv6连接。

监视完成后,停止监视:

SysMon -u

如果按“事件ID 3”进行过滤,则将获得网络事件,其详细信息如下:

Log Name:      Microsoft-Windows-Sysmon/Operational
Source:        Microsoft-Windows-Sysmon
Date:          9/01/2018 9:55:08 PM
Event ID:      3
Task Category: Network connection detected (rule: NetworkConnect)
Level:         Information
Keywords:      
User:          SYSTEM
Computer:      DESKTOP-RTTN04O
Description:
Network connection detected:
UtcTime: 2018-01-09 10:55:06.915
ProcessGuid: {14ab83bf-c0d9-5a52-0000-00102da40e00}
ProcessId: 3628
Image: C:\Windows\System32\svchost.exe
User: NT AUTHORITY\SYSTEM
Protocol: tcp
Initiated: true
SourceIsIpv6: true
SourceIp: 2001:8003:550d:d400:b81c:a2ed:f99a:b31f
SourceHostname: DESKTOP-RTTN04O.gateway
SourcePort: 55723
SourcePortName: 
DestinationIsIpv6: true
DestinationIp: 2001:8006:3510:393:0:0:0:25bb
DestinationHostname: 
DestinationPort: 443
DestinationPortName: https

-3

我敢打赌,您正在观看Netflix和/或Amazon Prime Video,并且浏览器正在为每个视频流设置一个临时v6地址。


2
没必要打赌。浏览器没有获得任何IPv6地址,仅仅是因为不能获得。
Daniel B
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.