microsoft / microsoft/WSL

Bug Report: WSL2 Network Behavior Diverges from Windows During Mixed Interface Conditions

Open
#13,682 6 comments 0 reactions 0 assignees View on GitHub
emailed-logs network
Dominant language
C++
Stars
33.7k
Forks
1.8k
Avg merge
3d 17h
Merged PRs (30d)
116

Description

### Windows Version

Microsoft Windows [Version 10.0.26200.6901]

### WSL Version

WSL version: 2.6.1.0 Kernel version: 6.6.87.2-1 WSLg version: 1.0.66 MSRDC version: 1.2.6353 Direct3D version: 1.611.1-81528511 DXCore version: 10.0.26100.1-240331-1435.ge-release Windows version: 10.0.26200.6901

### Are you using WSL 1 or WSL 2?

- [x] WSL 2
- [ ] WSL 1

### Kernel Version

6.6.87.2-1

### Distro Version

Ubuntu 24.04

### Other Software

_No response_

### Repro Steps

### Steps to Reproduce

1. Connect both Ethernet and Wi-Fi to your Windows machine.
2. Ensure Ethernet is active but does **not** have external internet (e.g., ISP outage).
3. Use PowerShell to `ping www.google.com` — it succeeds via Wi-Fi (e.g mobile phone personal hotspot).
4. Open WSL2 terminal and run `ping www.google.com` — it fails with 100% packet loss.
5. Run `docker pull ollama/ollama` inside WSL2 — it succeeds, albeit slowly.
6. Disconnect the Ethernet cable. You now have just your mobile phone personal hotspot connected to your computer.
7. Retry `ping www.google.com` in WSL2 — it now succeeds.

```bash
(base) sono99@somedesktopcomputer:~()$ ping www.google.com
PING www.google.com (142.250.178.196) 56(84) bytes of data.
^C
--- www.google.com ping statistics ---
11 packets transmitted, 0 received, 100% packet loss, time 10223ms

(base) sono99@somedesktopcomputer:~()$ ping www.google.com
PING www.google.com (142.250.178.196) 56(84) bytes of data.
64 bytes from pnzrha-aj-in-f4.1e100.net (142.250.178.196): icmp_seq=1 ttl=117 time=102 ms
64 bytes from pnzrha-aj-in-f4.1e100.net (142.250.178.196): icmp_seq=2 ttl=117 time=56.8 ms
64 bytes from pnzrha-aj-in-f4.1e100.net (142.250.178.196): icmp_seq=3 ttl=117 time=12.3 ms
64 bytes from pnzrha-aj-in-f4.1e100.net (142.250.178.196): icmp_seq=4 ttl=117 time=15.1 ms
^C
--- www.google.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3005ms
rtt min/avg/max/mdev = 12.309/46.522/101.790/36.455 ms
(base) sono99@somedesktopcomputer:~()$ lsb_release -r
No LSB modules are available.
Release: 24.04
(base) sono99@somedesktopcomputer:~()$
```
The difference between failing to ping and succeeding is on unplugging the ethernet cable.

###WSL2 config
- **WSL2 Configuration**:
```ini
[wsl2]
memory=80GB
processors=0
networkingMode=mirrored
```

### Expected Behavior

WSL2 demonstrates inconsistent and unreliable network behavior when both Ethernet and Wi-Fi interfaces are connected, but
only one—typically the slower Wi-Fi—provides actual internet access. While Windows correctly prioritizes the functional Wi-Fi connection for external traffic, WSL2 terminals often fail to establish outbound connectivity under these conditions. Notably, Docker operations such as `docker pull` may still succeed, likely due to integration with the Windows host network stack. However, to restore full network functionality within WSL2, physically disconnecting the non-functional Ethernet cable becomes a necessary workaround.

### Expected Behavior

WSL2 should mirror Windows' routing behavior and use the active interface with internet access (Wi-Fi) even when Ethernet is present but non-functional.

### Actual Behavior

### Actual Behavior

WSL2 fails to reach external hosts via `ping` or other terminal-based network tools when Ethernet is present—even if Ethernet lacks internet access and Wi-Fi is fully functional.

### Diagnostic Logs

You can see in the Cline issue:
[https://github.com/cline/cline/issues/7109](https://github.com/cline/cline/issues/7109)

The `docker pull` command worked perfectly for updating a Docker image.
However, there were clear issues with the `ping` command when executed from within WSL2.
In contrast, the `ping` command worked reliably 100% of the time from Windows PowerShell.

Running `wsl --shutdown` or `wsl --restart` did not resolve the issue.
The only effective solution was physically disconnecting the Ethernet cable from the network interface that lacked external internet connectivity.

Contributor guide

Open the contributing guide

Research direction

Reproduce the setup with WSL 2 mirrored networking, Ubuntu 24.04, and both Ethernet and Wi-Fi connected while only Wi-Fi has internet access. Compare PowerShell and WSL2 ping behavior, and check whether Docker pull still succeeds; done means WSL2 uses the reachable interface without requiring the Ethernet cable to be disconnected.

Written by the indexing model from the issue text.

Assessment

Tech stack
docker, ubuntu
Domain
networking, operating-systems
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.