
Mi escuela asignó un bloque IPv6 con prefijo /64 a todos mis compañeros de escuela. Quiero arreglar el sufijo de 64 bits de mi PC con Windows 10 22H2, así que ejecuté el siguiente script de PowerShell para configurar mi dirección IPv6 personalizada $ip
como la única IP que realmente se usa. para paquetes salientes y tuvo éxito.
Agregue una dirección IPv6 personalizada:
New-NetIPAddress -InterfaceAlias Wi-Fi -IPAddress $ip -PolicyStore ActiveStore -PrefixLength 64
Set-NetIPAddress -IPAddress $ip -SkipAsSource $False
Establezca todas las demás direcciones IPv6 públicas SkipAsSource
en $True
para evitar que se utilicen para paquetes salientes:
Get-NetIPAddress -InterfaceAlias Wi-Fi | ForEach-Object {
if( ($_.AddressFamily.ToString() -eq "IPv6") -And ($_.IPAddress -ne $ip) -And ($_.PrefixOrigin.ToString() -ne "WellKnown") ){
Set-NetIPAddress -IPAddress $_.IPAddress -SkipAsSource $True
}
}
Pero después de unos minutos, la dirección IPv6 cuyo PrefixOrigin
es "Dhcp"
, se SkipAsSource
convirtió en $False
, lo que hizo que mi PC usara la dirección DHCP IPv6 para los paquetes salientes. Para saber por qué, ejecuté el siguiente script de PowerShell para encontrar la hora exacta en la que la dirección DHCP IPv6 SkipAsSource
se convirtió en $False
:
$isChanged = $false
while( !$isChanged ){
Start-Sleep 10
Get-Date
Get-NetIPAddress -InterfaceAlias "Wi-Fi" -AddressFamily IPv6 | ForEach-Object{
if($_.PrefixOrigin -eq "Dhcp"){
if($_.SkipAsSource -eq $False){
$global:isChanged = $True
Write-Host -ForegroundColor Red "Found it"
break
}else{
Write-Host "Nothing wrong"
}
}
}
}
El lapso de tiempo que encontré es entre 2023-07-12 02:20:00 UTC+8
y 2023-07-12 02:20:10 UTC+8
, luego encontré el siguiente registro del sistema cuya marca de tiempo 2023-07-12 02:20:01 UTC+8
puede estar relacionada.
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
<System>
<Provider Name="Netwtw04" />
<EventID Qualifiers="16384">7003</EventID>
<Version>0</Version>
<Level>4</Level>
<Task>0</Task>
<Opcode>0</Opcode>
<Keywords>0x80000000000000</Keywords>
<TimeCreated SystemTime="2023-07-11T18:20:01.5397220Z" />
<EventRecordID>122318</EventRecordID>
<Correlation />
<Execution ProcessID="4" ThreadID="9152" />
<Channel>System</Channel>
<Computer>ComputerName</Computer>
<Security />
</System>
<EventData>
<Data>\Device\NDMP5</Data>
<Data>Intel(R) Dual Band Wireless-AC 3165</Data>
<Binary>0000080002003800000000005B1B00400000000000000000000000000000000000000000000000000000000000000000</Binary>
</EventData>
</Event>
Y los dos registros siguientes Applications and Services Logs\Microsoft\Windows\Dhcp-Client\Microsoft-Windows-DHCP Client Events/Admin
tienen la misma marca de tiempo. No hay ningún registro con la misma marca de tiempo o una vecina de Applications and Services Logs\Microsoft\Windows\Dhcp-Client\Microsoft-Windows-DHCPv6 Client Events/Admin
:
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
<System>
<Provider Name="Microsoft-Windows-Dhcp-Client" Guid="{15a7a4f8-0072-4eab-abad-f98a4d666aed}" />
<EventID>50067</EventID>
<Version>0</Version>
<Level>4</Level>
<Task>3</Task>
<Opcode>57</Opcode>
<Keywords>0x4000000000000000</Keywords>
<TimeCreated SystemTime="2023-07-11T18:20:01.5559344Z" />
<EventRecordID>6641</EventRecordID>
<Correlation />
<Execution ProcessID="2044" ThreadID="6392" />
<Channel>Microsoft-Windows-Dhcp-Client/Admin</Channel>
<Computer>sanfrancisco</Computer>
<Security UserID="S-1-5-19" />
</System>
<EventData>
<Data Name="NetworkHintString">SSID</Data>
<Data Name="NetworkHint">SSID hex</Data>
<Data Name="HWLength">6</Data>
<Data Name="HWAddress">MAC address</Data>
</EventData>
</Event>
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
<System>
<Provider Name="Microsoft-Windows-Dhcp-Client" Guid="{15a7a4f8-0072-4eab-abad-f98a4d666aed}" />
<EventID>50065</EventID>
<Version>0</Version>
<Level>4</Level>
<Task>3</Task>
<Opcode>55</Opcode>
<Keywords>0x4000000000000000</Keywords>
<TimeCreated SystemTime="2023-07-11T18:20:01.5559369Z" />
<EventRecordID>6642</EventRecordID>
<Correlation />
<Execution ProcessID="2044" ThreadID="6392" />
<Channel>Microsoft-Windows-Dhcp-Client/Admin</Channel>
<Computer>sanfrancisco</Computer>
<Security UserID="S-1-5-19" />
</System>
<EventData>
<Data Name="NetworkHintString">SSID</Data>
<Data Name="NetworkHint">SSID hex</Data>
<Data Name="HWLength">6</Data>
<Data Name="HWAddress">MAC address</Data>
</EventData>
</Event>
Entonces, ¿cómo evitar que se revierta la dirección DHCP IPv6? ¿O cómo desactivar DHCPv6?
Respuesta1
Descubrí que puedo desactivar DHCPv6 para una tarjeta de red mediante Set-NetIPInterface -Dhcp Disable -InterfaceAlias Wi-Fi -AddressFamily IPv6
. Después de ejecutar eso, mi tarjeta de red tenía solo 2 direcciones IPv6 públicas, configuradas respectivamente por mí y SLAAC. Pero incluso después de configurar SLAAC IPv6 SkipAsSource
como $True
, volvió a aparecer $False
horas después. Ahora desactivé SLAAC netsh interface ipv6 set interface Wi-Fi routerdiscovery=disabled
y mi problema se resolvió por completo ya que Windows tiene solo una dirección IPv6 pública.