-
-
Save danvy/9486bf730371436131cb888ff4c2ceb6 to your computer and use it in GitHub Desktop.
# Check these threads before proceeding: | |
# https://github.com/microsoft/WSL/discussions/5857 | |
# https://github.com/microsoft/WSL/issues/5821 | |
if (-Not ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] 'Administrator')) { | |
$CmdLine = "-File `"" + $MyInvocation.MyCommand.Path + "`" " + $MyInvocation.UnboundArguments | |
Start-Process -FilePath PowerShell.exe -Verb Runas -ArgumentList $CmdLine | |
Exit | |
} | |
# Restart the Host Network Service | |
Restart-Service -Force -Name hns | |
# Restart the Windows Subsystem for Linux Manager | |
Restart-Service LxssManager | |
# Restart the WSL Network adapter | |
Restart-NetAdapter -Name "vEthernet (WSL)" |
This works :) I initially copy pasted your code directly into PowerShell terminal and it didn't work. Then I created a separate .ps1 file and ran it and then it worked. Thanks!
This is works.
Thanks
I added
wsl --shutdown wsl ping google.com -c 4
At the end just to check that the wsl internet connection works at the end
This fixed things for me, Thank you!
After 1h30 of trying everything on stackoverflow, this worked ! I am surprised this is still needed and still works after 2 years.
@dtraparic Happy that it help you. I'm also surprised that it's still relevant.
Thank you so much! You saved me an entire day of frustration. I was stuck reconfiguring IPs, default routes, interface preferences, restarting LxssManager, my PC, and WSL multiple times. Even when everything seemed perfectly set up, nothing worked.
I ran your script, restarted my WSL instance, and suddenly everything went back to normal. The key component I was missing was:
Restart-Service -Force -Name hns
For those interested in why this works:
The Host Network Service (HNS) is a critical component in Windows that manages network virtualization and container networking. It's responsible for creating and managing virtual networks, including the one used by WSL.
When HNS encounters issues or gets into an inconsistent state, it can cause networking problems for WSL, even if all the configurations look correct. Restarting HNS forces it to reinitialize, which can clear up any stuck or inconsistent states.
This script effectively performs a "hard reset" on the networking components related to WSL:
- It restarts HNS, clearing any network virtualization issues.
- It restarts the LxssManager, which manages WSL instances.
- It restarts the WSL network adapter, ensuring it's in a clean state.
- Finally, it shuts down all WSL instances, forcing them to reinitialize their network stack on next start.
This comprehensive approach addresses multiple potential points of failure in the WSL networking stack, which is why it's so effective at resolving complex networking issues that persist even after seemingly correct configuration.
Again, thank you for sharing this solution. It's a real time-saver for anyone encountering stubborn WSL networking problems!
Thank you @hadamrd
Your additional information will help users too.
This did the trick for me!