우리 학교는 모든 학교 친구에게 /64 접두사 IPv6 블록을 할당했으며 Windows 10 22H2 PC의 64비트 접미사를 수정하고 싶어서 다음 PowerShell 스크립트를 실행하여 사용자 지정 IPv6 주소를 $ip
실제로 사용되는 유일한 IP로 설정했습니다. 나가는 패키지에 대해 성공했습니다.
사용자 정의 IPv6 주소를 추가합니다.
New-NetIPAddress -InterfaceAlias Wi-Fi -IPAddress $ip -PolicyStore ActiveStore -PrefixLength 64
Set-NetIPAddress -IPAddress $ip -SkipAsSource $False
다른 모든 공용 IPv6 주소가 나가는 패키지에 사용되는 것을 방지하려면 다음과 같이 SkipAsSource
설정 하십시오.$True
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
}
}
그러나 몇 분 후에 IPv6 주소가 가 PrefixOrigin
되어 "Dhcp"
내 PC가 나가는 패키지에 DHCP IPv6 주소를 사용하게 되었습니다 SkipAsSource
. $False
이유를 찾기 위해 다음 PowerShell 스크립트를 실행하여 DHCP IPv6 주소가 SkipAsSource
된 정확한 시간을 찾았습니다 $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"
}
}
}
}
내가 찾은 시간 범위는 ~ 사이 2023-07-12 02:20:00 UTC+8
이고 타임스탬프가 관련되었을 수 있는 2023-07-12 02:20:10 UTC+8
다음 시스템 로그를 찾았습니다 .2023-07-12 02:20:01 UTC+8
<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>
그리고 다음 두 로그의 Applications and Services Logs\Microsoft\Windows\Dhcp-Client\Microsoft-Windows-DHCP Client Events/Admin
타임스탬프가 동일합니다. 다음의 타임스탬프가 동일하거나 인접한 로그가 없습니다 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>
그렇다면 DHCP IPv6 주소가 되돌려지는 것을 방지하는 방법은 무엇입니까? 아니면 DHCPv6을 비활성화하는 방법은 무엇입니까?
답변1
.net 카드에 대해 DHCPv6을 비활성화할 수 있음을 발견했습니다 Set-NetIPInterface -Dhcp Disable -InterfaceAlias Wi-Fi -AddressFamily IPv6
. 이를 실행한 후 내 넷 카드에는 mannally와 SLAAC가 각각 설정한 공개 IPv6 주소가 2개만 있었습니다. 그러나 SLAAC IPv6를 SkipAsSource
으로 설정한 후에도 $True
여전히 몇 시간 후로 되돌아갔습니다 $False
. 이제 SLAAC를 비활성화했고 netsh interface ipv6 set interface Wi-Fi routerdiscovery=disabled
Windows에는 공용 IPv6 주소가 하나만 있으므로 문제가 완전히 해결되었습니다.