From 3391510b8bad0ba4d9ef13c0febf17e27269a2f1 Mon Sep 17 00:00:00 2001 From: Jimm Chen WDK10 Date: Sun, 28 Jul 2024 22:51:35 +0800 Subject: [PATCH 1/3] Reworked networking.md, big overhaul. Now much more reader friendly. --- WSL/media/network-mirrored-mode1.png | Bin 0 -> 41780 bytes WSL/media/network-mirrored-mode2.png | Bin 0 -> 61095 bytes WSL/media/network-nat-mode.png | Bin 0 -> 58867 bytes WSL/networking.md | 234 +++++++++++++++++++-------- 4 files changed, 170 insertions(+), 64 deletions(-) create mode 100644 WSL/media/network-mirrored-mode1.png create mode 100644 WSL/media/network-mirrored-mode2.png create mode 100644 WSL/media/network-nat-mode.png diff --git a/WSL/media/network-mirrored-mode1.png b/WSL/media/network-mirrored-mode1.png new file mode 100644 index 0000000000000000000000000000000000000000..0c77739b79317d5392cf483e46355e30c8a02e58 GIT binary patch literal 41780 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

q5R~pqTZ>zTwP@!93E!m=LaGzj^eZMwhu+_ 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%0AkXlidRLwc;)5%!u<*_;@8`=>feR#< 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 literal 0 HcmV?d00001 diff --git a/WSL/networking.md b/WSL/networking.md index 8eefbaae..f5d2a3b4 100644 --- a/WSL/networking.md +++ b/WSL/networking.md @@ -6,130 +6,236 @@ ms.date: 07/16/2024 ms.topic: article --- -# Accessing network applications with WSL +# WSL networking behavior and configuration -There are a few considerations to be aware of when working with networking apps and WSL. By default WSL uses a [NAT based architecture](#default-networking-mode-nat), and we recommend trying the new [Mirrored networking mode](#mirrored-mode-networking) to get the latest features and improvements. +## The big picture -### Identify IP address +A running WSL instance is like a VM(virtual machine) running inside a Windows machine. Let's consider this Windows machine(abbreviated as WinHost in this article) a real-world physical machine who connects to a physical network(or LAN). So the PCs/Servers running on the physical network appear to WSL instances as "outside world". -There are two scenarios to consider when identifying the IP address used for a Linux distribution running via WSL: +Then we come up with two major questions: -**Scenario One:** From the perspective of the Windows host, you want to query a Linux distribution's IP address running via WSL2, so that a program on Windows host can connect to a server program running inside the distribution (instance). +- How do those WSL instances connect themselves to the physical network, so that, a WSL instance and access server applications(Web server, Email server etc) served by WinHost itself, or even by other machines from the "outside world"? +- How do the "outside world"(as client) connect to server applications running inside a WSL instance? -The Windows host can use command: +That is not a question which can be answers in one simple sentence. We need some elaboration here. + +A WSL instance can operate in three flavors, and there are two WSL networking mode involved. + +| WSL flavor | WSL1 | WSL2 in NAT mode | WSL2 in mirrored mode | +| -------- | ---- | ------------------- | -------------------------| +| Networking behavior | Shares WinHost's IP address(es).

Looks like it has network cable directly attached to the physical LAN. | Attached to an internal virtual LAN inside WinHost.

Has a dynamically allocated internal IP, which is different than WinHost's own IP. | Behaves the same as WSL1. | + +So we call them "mirrored mode" and "NAT mode". Illustration helps highlight there difference. + +### WSL instances running in mirrored mode + +Figure 1: A WinHost running two WSL instances in mirrored mode, with one NIC(network interface card). + +![Networking mirrored mode one NIC](media/network-mirrored-mode1.png) + +Figure 2: A WinHost running two WSL instances in mirrored mode, with two NICs: + +![Networking mirrored mode two NICs](media/network-mirrored-mode2.png) + +Key characteristics: In mirrored mode, a WSL instance, although as a self-contained VM, does not have its own dedicated IP address. Windows WSL engine magically shares physical NIC's IP address(es) among all mirrored-mode-enabled WSL VMs. +- If WinHost has one physical NIC configured with IP 10.2.3.1, then the WSL instance accordingly sees itself equipped with an NIC also configured with IP 10.2.3.1 . +- If WinHost has two physical NICs with IP 10.2.3.1 and 192.168.3.1 respectively, then the WSL instance also sees two NICs with IP 10.2.3.1 and 192.168.3.1 respectively. + + +### WSL instances running in NAT mode + + +Figure 3: A WinHost running two WSL instances both in NAT mode + +![Networking NAT mode](media/network-nat-mode.png) + + +We see that: + +- WinHost is equipped with one physical NIC (blue) connecting to physical LAN. +- WinHost is also equipped with one virtual NIC(pink) connecting to all running WSL instances. + + +Each WSL instance(actually a Hyper-V virtual machine) has its own virtual NIC and its own IP address in the virtual LAN. This IP address(172.28.240.53 for example) is automatically allocated by WSL engine. + +Key characteristics: The physical LAN(10.2.X.X) and the virtual LAN(172.28.X.X) are two different LAN segments, so IP packets are not directly reachable from one to the other. The Windows operating system provides some workarounds to make them finally reachable. +- **From WSL instance to outside world:** WSL engine's NAT code is always ready, so that the WSL instance(172.28.240.53 for example) can connect to a outside world TCP/UDP port(10.2.3.51's TCP port 80 for example) without extra work from the application code. A little drawback is that, the server side machine(10.2.3.51) only see the TCP/UDP connection is from WinHost's IP, which is due to NAT(Network Address Translation) protocol's working nature. +- **From outside world to WSL instance:** The whole virtual LAN is actually hidden from the outside world, so, iF the client PC 10.2.3.52 wants to connect to a network server program inside WSL2 VM, WinHost has to relay that connection. This relay action is not a out-of-box behavior of the Windows OS, so user has to configure it manually. This is described in later section "NAT mode: WSL as server, physical LAN machines as client". + + + +## How to determine current networking mode for a WSL instance? + +First, you should determine whether a WSL instance is running as WSL1 or WSL2. If it is WSL1, that instance is using mirrored mode. + +Second, for those WSL2 instances, they either all run in NAT mode, or all run in mirrored mode, no mixing allowed. + +On WinHost, the command `wsl -l -v` shows WSL version(WSL1 or WSL2), on the right-most `VERSION` column, for each instance. Output is something like this: ``` -wsl -d hostname -I + NAME STATE VERSION + Ubuntu-22.04 Stopped 1 +* WSL2-Ubuntu-24.04 Stopped 2 + WSL1-Ubuntu-20.04 Stopped 1 + openSUSE-Leap-15.6 Stopped 2 + docker-desktop Stopped 2 + docker-desktop-data Stopped 2 ``` -If querying the default distribution, this part of the command designating the distribution can be omitted: `-d `. Be sure to use a capital `-I` flag and not a lower-case `-i`. +For a WSL2 instance, you run query command `wslinfo --networking-mode` inside that Linux instance. There can be three results: +- It prints `nat`, then it is in NAT mode. +- It prints `mirrored`, then it is in mirrored mode. +- It blames `wslinfo` command not found, or some other wacky output info, that means your WinHost's WSL software is now new enough to support mirrored mode. -Under the hood, host command `wsl.exe` launches the target instance and executes Linux command `hostname -I`. This command then prints the IP address of the WSL instance to `STDOUT`. The `STDOUT` text content is then relayed back to wsl.exe. Finally, wsl.exe displays that output to the command line. +### How to enable WSL2 mirrored mode? -A typical output might be: +WSL2 mirrored mode is a relatively new feature which requires at least Windows 11 22H2, and, `wsl --update` should be run to update WSL engine code to the latest version. -```powershell -172.30.98.229 +Besides, you should enable WSL mode explicitly, by editing `%UserProfile%\.wslconfig`. Add an extra line to `[wsl2]` section, like this: + +``` +[wsl2] +networkingMode=mirrored ``` -**Scenario Two:** A program running inside a Linux distribution via WSL2 (instance) wants to know the Windows host's IP address, so that a Linux program can connect to a Windows host server program. +More about [`.wslconfig` file](./wsl-config.md#configuration-settings-for-wslconfig). -The WSL2 Linux user can use command: -```bash -ip route show | grep -i default | awk '{ print $3}' -``` +## WSL Networking behavior + +This section is all about two questions: +1. If I run a network server program on WinHost, how can it be reachable by a client program from a WSL instance? +2. If I run a network server program inside a WSL instance, how can it be reachable by a client program from WinHost, or even from outside world(physical LAN client)? + +### Mirrored mode -A typical output might be: +Mirrored mode is straightforward with least hassle. From IP networking perspective, a server or client program running in a WSL instance is just like running with WinHost's IP address(es), so every machine on the LAN is directly reachable by the WSL instance, and vice versa. + +For example with Figure 2 above, a server program in L1 WSL instance has two IPs(10.2.3.1 and 192.168.3.1), so +- R2(10.2.3.52) can connect to L1 with destination IP 10.2.3.1 , and +- R4(192.168.3.52) can connect to L1 with destination IP 192.168.3.1 . + +—no IP routing or NAT procedure involved, very straightforward. + + +### NAT mode: WinHost as server, WSL as client + +The key point here is: WSL client program needs to know WinHost's IP address on virtual LAN segment. + +Take Figure 3 above for example, WinHost runs a server program and L3 (172.28.240.53) wants to connect, then L3 has to take 172.28.240.1 as server's IP address. + +Then how does L3 know that server IP address? That IP changes each time after WinHost reboots, so it cannot be a constant pre-configured for L3. The canonical way provided by Microsoft is, executing this command inside WSL: + +ip route show | grep -i default | awk '{ print $3}' + +In our example, the output will be a IP string `172.28.240.1` . + +The rationale is: A NAT mode WSL instance will always have WinHost's virtual LAN IP(172.28.240.1) as default gateway. So `ip route show` will output something like: ``` -172.30.96.1 +default via 172.28.240.1 dev eth0 proto kernel +172.28.240.0/20 dev eth0 proto kernel scope link src 172.28.240.53 ``` -So the `172.30.96.1` is the host IP address for Windows, in this example. +The "default" line, column 3 is the default gateway IP, so it is the right server IP we need. -> [!NOTE] -> These above IP address querying action is typically required when WSL2 is running with the default [NAT network mode](#default-networking-mode-nat). -> When the WSL2 is running with the new [mirrored mode](#mirrored-mode-networking), the Windows host and WSL2 VM can connect to each other using `localhost` (127.0.0.1) as the destination address, so the trick of using a query peer's IP address is not required. +> [!NOTE] The WinHost server program should listen on IP address `0.0.0.0` (instead of `127.0.0.1` or `localhost`) in order to accept connection from WSL, because in the eye of WinHost, WSL instance L1 and LAN client R1 are both considered remote clients. -## Default networking mode: NAT -By default, WSL uses a NAT (Network Address Translation) based architecture for networking. Keep the following considerations in mind when working with a NAT-based networking architecture: +### NAT mode: WSL as server, WinHost as client -### Accessing Linux networking apps from Windows (localhost) - -If you are building a networking app (for example an app running on a NodeJS or SQL server) in your Linux distribution, you can access it from a Windows app (like your Edge or Chrome internet browser) using `localhost` (just like you normally would). +From Figure 3 above, we see that WSL instance L3 has IP 172.28.240.53 . -### Accessing Windows networking apps from Linux (host IP) +A WinHost client program can reach a server program in WSL instance(L3 for example), by assigning 172.28.240.53 as destination IP, which is no surprise. -If you want to access a networking app running on Windows (for example an app running on a NodeJS or SQL server) from your Linux distribution (ie Ubuntu), then you need to use the IP address of your host machine. While this is not a common scenario, you can follow these steps to make it work. +But, WSL engine provides a facility feature for this scenario. If a WSL server program listens on TCP port N, then, WinHost client program can connect to `localhost` port N to reach it. -1. Obtain the IP address of your host machine by running this command from your Linux distribution: `ip route show | grep -i default | awk '{ print $3}'` -2. Connect to any Windows server using the copied IP address. +For example, L3 has a TCP server program listening on `0.0.0.0:4000` or even on `localhost:4000`, then, WinHost can connect to `localhost:4000` to reach the server. This "proxy listening port" feature makes it as if the WSL server program is listening on WinHost itself. -The picture below shows an example of this by connecting to a Node.js server running in Windows via curl. +> [!NOTE] The "proxy listening port" feature works only for TCP, not for UDP. (Microsoft staff please confirm this.) -![Connect to NodeJS server in Windows via Curl](media/wsl2-network-l2w.png) -### Connecting via remote IP addresses +### NAT mode: WSL as server, physical LAN machines as client -When using remote IP addresses to connect to your applications, they will be treated as connections from the Local Area Network (LAN). This means that you will need to make sure your application can accept LAN connections. +The challenge here is, a WSL instance's IP address is hidden from physical LAN, so WinHost has to do port-forwarding so that the WSL's IP address can be indirectly reachable from the outside world. -For example, you may need to bind your application to `0.0.0.0` instead of `127.0.0.1`. In the example of a Python app using Flask, this can be done with the command: `app.run(host='0.0.0.0')`. Keep security in mind when making these changes as this will allow connections from your LAN. +Here's an example of using the [Netsh interface portproxy](/windows-server/networking/technologies/netsh/netsh-interface-portproxy) Windows command to add a port proxy that listens on your host port and connects that port proxy to the IP address for the WSL2 VM. -### Accessing a WSL 2 distribution from your local area network (LAN) +``` +netsh interface portproxy add v4tov4 listenport=14000 listenaddress=0.0.0.0 connectport=4000 connectaddress=172.28.240.53 +``` -When using a WSL 1 distribution, if your computer was set up to be accessed by your LAN, then applications run in WSL could be accessed on your LAN as well. +In the above example, we tell WinHost to listen on port 14000 and accept connections from any remote machine; once connected, the connection is redirected to 172.28.240.53:4000 . So, a server program running inside L3 listening on port 4000 can now actually accept connection from any remote machine. -This isn't the default case in WSL 2. WSL 2 has a virtualized ethernet adapter with its own unique IP address. Currently, to enable this workflow you will need to go through the same steps as you would for a regular virtual machine. (We are looking into ways to improve this experience.) +In normal case, we assign the same value for `listenport` and `connectport`, but to demonstrate the concept clearly, we use different values in this example. -Here's an example of using the [Netsh interface portproxy](/windows-server/networking/technologies/netsh/netsh-interface-portproxy) Windows command to add a port proxy that listens on your host port and connects that port proxy to the IP address for the WSL 2 VM. -```powershell -netsh interface portproxy add v4tov4 listenport= listenaddress=0.0.0.0 connectport= connectaddress=(wsl hostname -I) +**Here we have an important point to mention.** A WSL instance gets its IP address differently across each WinHost reboot(WSL engine allocates the IP dynamically). If the system administrator of WinHost determines to write a startup script (e.g. `wsl-portforward.bat`) to apply the above `netsh interface portproxy ...` command, then how does he determine the connectaddress's value? + +OK. There is a way. We can use a WinHost command to query L1's IP address as long as we know L1's "WSL name"(we have called it "distribution name" or "instance name"). + +To list all "WSL name"s on WinHost, we execute `wsl -l` . The output is like this: + +``` +Windows Subsystem for Linux Distributions: +Ubuntu-22.04 +Ubuntu-24.04 ``` -In this example, you will need to update `` to a port number, for example `listenport=4000`. `listenaddress=0.0.0.0` means that incoming requests will be accepted from ANY IP address. The Listen Address specifies the IPv4 address for which to listen and can be changed to values that include: IP address, computer NetBIOS name, or computer DNS name. If an address isn't specified, the default is the local computer. You need to update the `` value to a port number where you want WSL to connect, for example `connectport=4000`. Lastly, the `connectaddress` value needs to be the IP address of your Linux distribution installed via WSL 2 (the WSL 2 VM address), which can be found by entering the command: `wsl.exe hostname -I`. +Different WSL names identify different WSL instances registered on this WinHost. A WSL name is determined upon its registration on the system and it will not change across WinHost's reboot. -So this command may look something like: +Assume that WinHost's script needs to query Ubuntu-22.04's current IP address, it should launch the following command and grab its STDOUT output: -```powershell -netsh interface portproxy add v4tov4 listenport=4000 listenaddress=0.0.0.0 connectport=4000 connectaddress=192.168.101.100 +```cmd +wsl.exe -d Ubuntu-22.04 hostname -I ``` -To obtain the IP address, use: +That output string is the IP address of the very WSL instance. + +Under the hood, that command launches WSL instance named `Ubuntu-22.04` right away, and tells the instance to execute command `hostname -I` (which prints WSL instance's own IP to STDOUT) then the STDOUT text content is relayed back to wsl.exe, and wsl.exe finally prints that out to command-line terminal. -- `wsl hostname -I` for the IP address of your Linux distribution installed via WSL 2 (the WSL 2 VM address) -- `cat /etc/resolv.conf` for the IP address of the Windows machine as seen from WSL 2 (the WSL 2 VM) +Now, our WinHost script can uses this IP string as connectaddress's value. Problem solved. -Using `listenaddress=0.0.0.0` will listen on all [IPv4 ports](https://stackoverflow.com/questions/9987409/want-to-know-what-is-ipv4-and-ipv6#:~:text=The%20basic%20difference%20is%20the,whereas%20IPv6%20has%20128%20bits.). +A concrete example of wsl-portforward.bat : -> [!NOTE] -> Using a lowercase "i" with the hostname command will generate a different result than using an uppercase "I". `wsl hostname -i` is your local machine (127.0.1.1 is a placeholder diagnostic address), whereas `wsl hostname -I` will return your local machine's IP address as seen by other machines and should be used to identify the `connectaddress` of your Linux distribution running via WSL 2. +```cmd +@echo off -## IPv6 access +FOR /F %%i IN ('wsl.exe -d Ubuntu-22.04-L1 hostname -I') DO set vmip=%%i -- `wsl hostname -i` for the IP address of your Linux distribution installed via WSL 2 (the WSL 2 VM address) -- `ip route show | grep -i default | awk '{ print $3}'` for the IP address of the Windows machine as seen from WSL 2 (the WSL 2 VM) +REM === TODO: some text error checking for vmip. === -Using `listenaddress=0.0.0.0` will listen on all [IPv4 ports](https://stackoverflow.com/questions/9987409/want-to-know-what-is-ipv4-and-ipv6#:~:text=The%20basic%20difference%20is%20the,whereas%20IPv6%20has%20128%20bits.). +netsh interface portproxy add v4tov4 listenport=14000 listenaddress=0.0.0.0 connectport=4000 connectaddress=%vmip% + +REM === This netsh does not set ERRORLEVEL on error, if given wrong parameter. Beg your own fortune. === +``` -## Mirrored mode networking -On machines running Windows 11 22H2 and higher you can [set `networkingMode=mirrored` under `[wsl2]` in the `.wslconfig` file](./wsl-config.md#configuration-settings-for-wslconfig) to enable mirrored mode networking. Enabling this changes WSL to an entirely new networking architecture which has the goal of 'mirroring' the network interfaces that you have on Windows into Linux, to add new networking features and improve compatibility. +## More about WSL2 mirrored mode networking -Here are the current benefits to enabling this mode: +Compared to WSL2 NAT mode, here are the current benefits to enabling this mode: - IPv6 support -- Connect to Windows servers from within Linux using the localhost address `127.0.0.1`. IPv6 localhost address `::1` is not supported +- Connect to WinHost server programs from within WSL instance using localhost address `127.0.0.1`. But, IPv6 localhost address `::1` is not supported. - Improved networking compatibility for VPNs - Multicast support - Connect to WSL directly from your local area network (LAN) -> [!NOTE] -> Run the following command in PowerShell window with admin privileges to [Configure Hyper-V firewall](/windows/security/operating-system-security/network-security/windows-firewall/hyper-v-firewall) settings to allow inbound connections: `Set-NetFirewallHyperVVMSetting -Name '{40E0AC32-46A5-438A-A0B2-2B479E8F2E90}' -DefaultInboundAction Allow` or `New-NetFirewallHyperVRule -Name "MyWebServer" -DisplayName "My Web Server" -Direction Inbound -VMCreatorId '{40E0AC32-46A5-438A-A0B2-2B479E8F2E90}' -Protocol TCP -LocalPorts 80`. -This new mode addresses networking issues seen with using a NAT (Network Address Translation) based architecture. Find known issues or file feedback on any bugs identified in the [WSL product repo on GitHub](https://github.com/microsoft/wsl). +Be aware, WSL2 mirrored mode does not exempt WSL2 server programs from WinHost's firewall rule. That means, for a WSL program to serve on TCP port 80, WinHost administrator has to [configure Hyper-V firewall](/windows/security/operating-system-security/network-security/windows-firewall/hyper-v-firewall) to allow this inbound connection, using command: + +```powershell +Set-NetFirewallHyperVVMSetting -Name '{40E0AC32-46A5-438A-A0B2-2B479E8F2E90}' -DefaultInboundAction Allow +``` + +or + +``` +New-NetFirewallHyperVRule -Name "MyWebServer" -DisplayName "My Web Server" -Direction Inbound -VMCreatorId '{40E0AC32-46A5-438A-A0B2-2B479E8F2E90}' -Protocol TCP -LocalPorts 80 +``` + +This new mirrored mode addresses networking issues seen with earlier NAT mode. Find known issues or file feedback on any bugs identified in the [WSL product repo on GitHub](https://github.com/microsoft/wsl). + ## DNS Tunneling From 418c9feaaa771f669e4bbaa40b3186d2f1022bbb Mon Sep 17 00:00:00 2001 From: Jimm Chen WDK10 Date: Mon, 29 Jul 2024 22:13:48 +0800 Subject: [PATCH 2/3] some text update, typo fix etc. --- WSL/networking.md | 65 +++++++++++++++++++++++++---------------------- 1 file changed, 34 insertions(+), 31 deletions(-) diff --git a/WSL/networking.md b/WSL/networking.md index f5d2a3b4..afa46ecc 100644 --- a/WSL/networking.md +++ b/WSL/networking.md @@ -10,22 +10,17 @@ ms.topic: article ## The big picture -A running WSL instance is like a VM(virtual machine) running inside a Windows machine. Let's consider this Windows machine(abbreviated as WinHost in this article) a real-world physical machine who connects to a physical network(or LAN). So the PCs/Servers running on the physical network appear to WSL instances as "outside world". +A running WSL instance is like a virtual machine(VM) running inside a Windows machine. Let's consider this Windows machine(abbreviated as WinHost in this article) a real-world physical machine who resides in a physical network(or say, physical LAN). So the PCs/Servers running on the physical network appear to WSL instances as "outside world". -Then we come up with two major questions: - -- How do those WSL instances connect themselves to the physical network, so that, a WSL instance and access server applications(Web server, Email server etc) served by WinHost itself, or even by other machines from the "outside world"? -- How do the "outside world"(as client) connect to server applications running inside a WSL instance? - -That is not a question which can be answers in one simple sentence. We need some elaboration here. +There are substantially three roles in this WSL world: WinHost, WSL VMs, and outside world machines. Then what's the networking software behavior among these three roles? That is not a question which can be answered in one simple sentence. We need some elaboration here. A WSL instance can operate in three flavors, and there are two WSL networking mode involved. | WSL flavor | WSL1 | WSL2 in NAT mode | WSL2 in mirrored mode | | -------- | ---- | ------------------- | -------------------------| -| Networking behavior | Shares WinHost's IP address(es).

Looks like it has network cable directly attached to the physical LAN. | Attached to an internal virtual LAN inside WinHost.

Has a dynamically allocated internal IP, which is different than WinHost's own IP. | Behaves the same as WSL1. | +| Networking behavior of a WSL instance | Shares WinHost's IP address(es).

Looks like it has network cable directly attached to the physical LAN. | Attached to an internal virtual LAN inside WinHost.

Has a dynamically allocated internal IP, which is different than WinHost's own IP. | Behaves the same as WSL1. | -So we call them "mirrored mode" and "NAT mode". Illustration helps highlight there difference. +So we call the two modes "mirrored mode" and "NAT mode". Illustration helps highlight there difference. ### WSL instances running in mirrored mode @@ -38,7 +33,7 @@ Figure 2: A WinHost running two WSL instances in mirrored mode, with two NICs: ![Networking mirrored mode two NICs](media/network-mirrored-mode2.png) Key characteristics: In mirrored mode, a WSL instance, although as a self-contained VM, does not have its own dedicated IP address. Windows WSL engine magically shares physical NIC's IP address(es) among all mirrored-mode-enabled WSL VMs. -- If WinHost has one physical NIC configured with IP 10.2.3.1, then the WSL instance accordingly sees itself equipped with an NIC also configured with IP 10.2.3.1 . +- If WinHost has one physical NIC configured with IP 10.2.3.1, then the WSL instance accordingly sees itself equipped with an NIC having IP 10.2.3.1 . - If WinHost has two physical NICs with IP 10.2.3.1 and 192.168.3.1 respectively, then the WSL instance also sees two NICs with IP 10.2.3.1 and 192.168.3.1 respectively. @@ -52,25 +47,27 @@ Figure 3: A WinHost running two WSL instances both in NAT mode We see that: -- WinHost is equipped with one physical NIC (blue) connecting to physical LAN. +- WinHost is equipped with one physical NIC (blue) connecting to all machines on the physical LAN. - WinHost is also equipped with one virtual NIC(pink) connecting to all running WSL instances. Each WSL instance(actually a Hyper-V virtual machine) has its own virtual NIC and its own IP address in the virtual LAN. This IP address(172.28.240.53 for example) is automatically allocated by WSL engine. -Key characteristics: The physical LAN(10.2.X.X) and the virtual LAN(172.28.X.X) are two different LAN segments, so IP packets are not directly reachable from one to the other. The Windows operating system provides some workarounds to make them finally reachable. +Key characteristics: The physical LAN(10.2.X.X) and the virtual LAN(172.28.X.X) are two different LAN segments, so IP packets are not directly reachable from each other. The Windows operating system provides some facilities to make them finally reachable. - **From WSL instance to outside world:** WSL engine's NAT code is always ready, so that the WSL instance(172.28.240.53 for example) can connect to a outside world TCP/UDP port(10.2.3.51's TCP port 80 for example) without extra work from the application code. A little drawback is that, the server side machine(10.2.3.51) only see the TCP/UDP connection is from WinHost's IP, which is due to NAT(Network Address Translation) protocol's working nature. -- **From outside world to WSL instance:** The whole virtual LAN is actually hidden from the outside world, so, iF the client PC 10.2.3.52 wants to connect to a network server program inside WSL2 VM, WinHost has to relay that connection. This relay action is not a out-of-box behavior of the Windows OS, so user has to configure it manually. This is described in later section "NAT mode: WSL as server, physical LAN machines as client". +- **From outside world to WSL instance:** The whole virtual LAN is actually hidden from the outside world, so, if the client PC 10.2.3.52 wants to connect to a network server program inside WSL2 VM, WinHost has to relay that connection. This relay action is not the default behavior of the Windows OS, so user has to configure it manually. This is described in later section **"NAT mode: WSL as server, physical LAN machines as client"**. ## How to determine current networking mode for a WSL instance? -First, you should determine whether a WSL instance is running as WSL1 or WSL2. If it is WSL1, that instance is using mirrored mode. +First, you should determine whether a WSL instance is running as WSL1 or WSL2. + +If it is WSL1, that instance is using mirrored mode. Second, for those WSL2 instances, they either all run in NAT mode, or all run in mirrored mode, no mixing allowed. -On WinHost, the command `wsl -l -v` shows WSL version(WSL1 or WSL2), on the right-most `VERSION` column, for each instance. Output is something like this: +On WinHost, the command `wsl -l -v` shows WSL operating version(WSL1 or WSL2), on the right-most `VERSION` column, for each instance. Output is something like this: ``` NAME STATE VERSION @@ -89,7 +86,7 @@ For a WSL2 instance, you run query command `wslinfo --networking-mode` inside th ### How to enable WSL2 mirrored mode? -WSL2 mirrored mode is a relatively new feature which requires at least Windows 11 22H2, and, `wsl --update` should be run to update WSL engine code to the latest version. +WSL2 mirrored mode is a relatively new feature which requires at least Windows 11 22H2, and, `wsl --update` should be run to update WSL engine to the latest version. Besides, you should enable WSL mode explicitly, by editing `%UserProfile%\.wslconfig`. Add an extra line to `[wsl2]` section, like this: @@ -109,14 +106,18 @@ This section is all about two questions: ### Mirrored mode -Mirrored mode is straightforward with least hassle. From IP networking perspective, a server or client program running in a WSL instance is just like running with WinHost's IP address(es), so every machine on the LAN is directly reachable by the WSL instance, and vice versa. +Mirrored mode is straightforward with least hassle, so we talk about it first. + +From TCP/IP networking perspective, a server or client program running in a WSL instance is just like running with WinHost's own IP address(es), so every machine on the LAN is directly reachable by the WSL instance, and vice versa. For example with Figure 2 above, a server program in L1 WSL instance has two IPs(10.2.3.1 and 192.168.3.1), so -- R2(10.2.3.52) can connect to L1 with destination IP 10.2.3.1 , and -- R4(192.168.3.52) can connect to L1 with destination IP 192.168.3.1 . +- R2(10.2.3.52) can connect to L1 via destination IP 10.2.3.1 , and +- R4(192.168.3.52) can connect to L1 via destination IP 192.168.3.1 . —no IP routing or NAT procedure involved, very straightforward. +Of course, L1's client program can connect to L2's server program via destination IP 127.0.0.1 . + ### NAT mode: WinHost as server, WSL as client @@ -124,20 +125,20 @@ The key point here is: WSL client program needs to know WinHost's IP address on Take Figure 3 above for example, WinHost runs a server program and L3 (172.28.240.53) wants to connect, then L3 has to take 172.28.240.1 as server's IP address. -Then how does L3 know that server IP address? That IP changes each time after WinHost reboots, so it cannot be a constant pre-configured for L3. The canonical way provided by Microsoft is, executing this command inside WSL: +Then how does L3 know that exact server IP address? That IP changes each time after WinHost reboots, so it cannot be a constant pre-configured for L3. The canonical way provided by Microsoft is, executing this command inside WSL: ip route show | grep -i default | awk '{ print $3}' In our example, the output will be a IP string `172.28.240.1` . -The rationale is: A NAT mode WSL instance will always have WinHost's virtual LAN IP(172.28.240.1) as default gateway. So `ip route show` will output something like: +The rationale is: A NAT mode WSL instance will always have WinHost's virtual LAN IP(172.28.240.1 in this example) as default gateway. And, `ip route show` will output something like: ``` default via 172.28.240.1 dev eth0 proto kernel 172.28.240.0/20 dev eth0 proto kernel scope link src 172.28.240.53 ``` -The "default" line, column 3 is the default gateway IP, so it is the right server IP we need. +The "default" line, column 3, shows the default gateway IP, so it is the right server IP we need. > [!NOTE] The WinHost server program should listen on IP address `0.0.0.0` (instead of `127.0.0.1` or `localhost`) in order to accept connection from WSL, because in the eye of WinHost, WSL instance L1 and LAN client R1 are both considered remote clients. @@ -146,7 +147,7 @@ The "default" line, column 3 is the default gateway IP, so it is the right serve From Figure 3 above, we see that WSL instance L3 has IP 172.28.240.53 . -A WinHost client program can reach a server program in WSL instance(L3 for example), by assigning 172.28.240.53 as destination IP, which is no surprise. +A WinHost client program can reach a WSL server program(L3 for example), by assigning 172.28.240.53 as destination IP, which is no surprise. But, WSL engine provides a facility feature for this scenario. If a WSL server program listens on TCP port N, then, WinHost client program can connect to `localhost` port N to reach it. @@ -159,26 +160,26 @@ For example, L3 has a TCP server program listening on `0.0.0.0:4000` or even on The challenge here is, a WSL instance's IP address is hidden from physical LAN, so WinHost has to do port-forwarding so that the WSL's IP address can be indirectly reachable from the outside world. -Here's an example of using the [Netsh interface portproxy](/windows-server/networking/technologies/netsh/netsh-interface-portproxy) Windows command to add a port proxy that listens on your host port and connects that port proxy to the IP address for the WSL2 VM. +Here's an example of using the [Netsh interface portproxy](/windows-server/networking/technologies/netsh/netsh-interface-portproxy) Windows command to add a port proxy that listens on your host port and forward the connection request to the IP address and port for the WSL2 VM. ``` netsh interface portproxy add v4tov4 listenport=14000 listenaddress=0.0.0.0 connectport=4000 connectaddress=172.28.240.53 ``` -In the above example, we tell WinHost to listen on port 14000 and accept connections from any remote machine; once connected, the connection is redirected to 172.28.240.53:4000 . So, a server program running inside L3 listening on port 4000 can now actually accept connection from any remote machine. +In the above example, we tell WinHost to listen on port 14000 and accept connections from any remote machine. Once connected, the connection is redirected to 172.28.240.53:4000 . So, a server program running inside L3 listening on port 4000 can now actually accept connection from any remote machine. In normal case, we assign the same value for `listenport` and `connectport`, but to demonstrate the concept clearly, we use different values in this example. -**Here we have an important point to mention.** A WSL instance gets its IP address differently across each WinHost reboot(WSL engine allocates the IP dynamically). If the system administrator of WinHost determines to write a startup script (e.g. `wsl-portforward.bat`) to apply the above `netsh interface portproxy ...` command, then how does he determine the connectaddress's value? +**Here we have an important point to mention.** A WSL instance gets its IP address differently across each WinHost reboot(WSL engine allocates the IP dynamically). If the system administrator of WinHost determines to write a startup script (e.g. `wsl-portforward.bat`) to apply the above `netsh interface portproxy ...` command, then how does he determine the `connectaddress`'s value? OK. There is a way. We can use a WinHost command to query L1's IP address as long as we know L1's "WSL name"(we have called it "distribution name" or "instance name"). -To list all "WSL name"s on WinHost, we execute `wsl -l` . The output is like this: +To list all WSL names on WinHost, we execute `wsl -l` . The output is like this: ``` Windows Subsystem for Linux Distributions: -Ubuntu-22.04 +Ubuntu-22.04 (Default) Ubuntu-24.04 ``` @@ -194,14 +195,15 @@ That output string is the IP address of the very WSL instance. Under the hood, that command launches WSL instance named `Ubuntu-22.04` right away, and tells the instance to execute command `hostname -I` (which prints WSL instance's own IP to STDOUT) then the STDOUT text content is relayed back to wsl.exe, and wsl.exe finally prints that out to command-line terminal. -Now, our WinHost script can uses this IP string as connectaddress's value. Problem solved. +Now, our WinHost script can uses this IP string as `connectaddress`'s value. Problem solved. A concrete example of wsl-portforward.bat : ```cmd @echo off -FOR /F %%i IN ('wsl.exe -d Ubuntu-22.04-L1 hostname -I') DO set vmip=%%i +set vmip=vimp_null +FOR /F %%i IN ('wsl.exe -d Ubuntu-22.04 hostname -I') DO set vmip=%%i REM === TODO: some text error checking for vmip. === @@ -230,13 +232,14 @@ Set-NetFirewallHyperVVMSetting -Name '{40E0AC32-46A5-438A-A0B2-2B479E8F2E90}' -D or -``` +```powershell New-NetFirewallHyperVRule -Name "MyWebServer" -DisplayName "My Web Server" -Direction Inbound -VMCreatorId '{40E0AC32-46A5-438A-A0B2-2B479E8F2E90}' -Protocol TCP -LocalPorts 80 ``` This new mirrored mode addresses networking issues seen with earlier NAT mode. Find known issues or file feedback on any bugs identified in the [WSL product repo on GitHub](https://github.com/microsoft/wsl). + ## DNS Tunneling On machines running Windows 11 22H2 and higher, setting [`dnsTunneling=true` under `[wsl2]` in the `.wslconfig` file](./wsl-config.md#configuration-settings-for-wslconfig) has WSL use a virtualization feature to answer DNS requests from within WSL, instead of requesting them over a networking packet. This feature is aimed to improve compatibility with VPNs, and other complex networking set ups. From ca0d71d2202e58e8d530744efc1bc5265b4b76f2 Mon Sep 17 00:00:00 2001 From: Jimm Chen WDK10 Date: Tue, 30 Jul 2024 08:32:50 +0800 Subject: [PATCH 3/3] minor fix of [!NOTE] block --- WSL/networking.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/WSL/networking.md b/WSL/networking.md index afa46ecc..79a8416c 100644 --- a/WSL/networking.md +++ b/WSL/networking.md @@ -140,7 +140,8 @@ default via 172.28.240.1 dev eth0 proto kernel The "default" line, column 3, shows the default gateway IP, so it is the right server IP we need. -> [!NOTE] The WinHost server program should listen on IP address `0.0.0.0` (instead of `127.0.0.1` or `localhost`) in order to accept connection from WSL, because in the eye of WinHost, WSL instance L1 and LAN client R1 are both considered remote clients. +> [!NOTE] +> The WinHost server program should listen on IP address `0.0.0.0` (instead of `127.0.0.1` or `localhost`) in order to accept connection from WSL, because in the eye of WinHost, WSL instance L1 and LAN client R1 are both considered remote clients. ### NAT mode: WSL as server, WinHost as client @@ -153,7 +154,8 @@ But, WSL engine provides a facility feature for this scenario. If a WSL server p For example, L3 has a TCP server program listening on `0.0.0.0:4000` or even on `localhost:4000`, then, WinHost can connect to `localhost:4000` to reach the server. This "proxy listening port" feature makes it as if the WSL server program is listening on WinHost itself. -> [!NOTE] The "proxy listening port" feature works only for TCP, not for UDP. (Microsoft staff please confirm this.) +> [!NOTE] +> The "proxy listening port" feature works only for TCP, not for UDP. (Microsoft staff please confirm this.) ### NAT mode: WSL as server, physical LAN machines as client