¿Cómo evitar que Windows 10 revierta la dirección IPv6 DHCPv6 omitida? ¿O cómo desactivar DHCPv6?

¿Cómo evitar que Windows 10 revierta la dirección IPv6 DHCPv6 omitida? ¿O cómo desactivar DHCPv6?

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 $ipcomo 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 SkipAsSourceen $Truepara 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 PrefixOrigines "Dhcp", se SkipAsSourceconvirtió 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 SkipAsSourcese 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+8y 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+8puede estar relacionada.

registro del sistema sobre el evento 7003 - Roaming completo

<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/Admintienen 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:

Eventos del cliente DHCP/registro de eventos administrativos sobre el evento 50067

<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>

Eventos del cliente DHCP/registro de eventos administrativos sobre el evento 50065

<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 SkipAsSourcecomo $True, volvió a aparecer $Falsehoras después. Ahora desactivé SLAAC netsh interface ipv6 set interface Wi-Fi routerdiscovery=disabledy mi problema se resolvió por completo ya que Windows tiene solo una dirección IPv6 pública.

información relacionada