Создание bridge для WSL в Windows 10/11 (свой IP по DHCP)
Создание bridge для WSL в Windows 10/11 (свой IP по DHCP)
Содержание
- 1. Назначение
- 2. Требования
- 3. Установка Hyper-V (общая для Windows 10 и 11)
- 4. Windows 11
- 5. Windows 10
- 6. Возможные проблемы
- 7. Отключение bridge
- 8. Итоговая схема
1. Назначение
По умолчанию WSL 2 работает в режиме NAT: виртуальная машина получает внутренний адрес (обычно 172.x.x.x) и не видна из локальной сети. Чтобы WSL получила собственный IP-адрес от DHCP-сервера локальной сети (роутера) и стала полноценным участником сети, используется режим bridged.
В этом режиме WSL подключается к внешнему виртуальному коммутатору Hyper-V, который связан с физическим сетевым адаптером. В результате:
- WSL получает свой IP-адрес по DHCP от роутера;
- WSL доступна из локальной сети напрямую, без
portproxy; - WSL может работать с VPN и сетевым оборудованием как отдельный хост.
Важно: режим
networkingMode=bridgedофициально помечен как устаревший (deprecated) начиная с WSL 2.4.5. Он по-прежнему работает, но Microsoft рекомендуетnetworkingMode=mirrored. При этомmirroredне выдаёт WSL отдельный адрес по DHCP — он «зеркалит» сетевые интерфейсы Windows. Если нужен именно отдельный IP из локальной сети, используйтеbridged.
2. Требования
- Windows 10 Pro / Enterprise / Education или Windows 11 Pro / Enterprise / Education (в редакции Home штатного Hyper-V нет);
- WSL 2 версии 2.0.0 и выше (из Microsoft Store);
- включённый компонент «Платформа виртуальных машин» (Virtual Machine Platform);
- физический сетевой адаптер. Мост через Wi-Fi работает не со всеми драйверами — если коммутатор не создаётся, используйте Ethernet;
- права администратора;
- роутер с включённым DHCP.
3. Установка Hyper-V (общая для Windows 10 и 11)
Открыть PowerShell от имени администратора и выполнить:
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All
или через DISM:
DISM /Online /Enable-Feature /All /FeatureName:Microsoft-Hyper-V /All
После установки перезагрузить компьютер.
Проверить, что модуль Hyper-V доступен:
Get-VMSwitch
4. Windows 11
4.1. Окружение
Проверенная конфигурация:
- Windows 11 Pro, ядро
10.0.26200, сборка26200; - WSL 2 из Microsoft Store;
- внешний коммутатор Hyper-V
WSL-WiFibridge, привязанный к Wi-Fi адаптеру «Беспроводная сеть»; - WSL работает в режиме
networkingMode=bridged; - WSL получает IP напрямую от домашнего роутера (пример:
192.168.11.79).
Конфигурация WSL (%UserProfile%\.wslconfig):
[wsl2]
networkingMode=bridged
vmSwitch=WSL-WiFibridge
4.2. Определение сетевого адаптера
Выполнить:
Get-NetAdapter
В данной конфигурации активен Wi-Fi адаптер с именем «Беспроводная сеть»:
Name InterfaceDescription Status
---- -------------------- ------
Беспроводная сеть Wi-Fi адаптер Up
Запомнить имя адаптера («Беспроводная сеть») — оно понадобится при создании коммутатора.
4.3. Создание внешнего виртуального коммутатора (bridge)
Создать внешний коммутатор с именем WSL-WiFibridge, привязанный к Wi-Fi адаптеру:
New-VMSwitch -Name "WSL-WiFibridge" -NetAdapterName "Беспроводная сеть" -AllowManagementOS $true
Здесь:
-Name "WSL-WiFibridge"— имя коммутатора (будет указано в.wslconfig);-NetAdapterName "Беспроводная сеть"— имя Wi-Fi адаптера из шага 4.2;-AllowManagementOS $true— разрешает Windows использовать этот же адаптер, хост сохраняет сеть.
Во время выполнения команды соединение с интернетом на хосте может прерваться на 2–3 секунды — это нормально: перестраивается сетевой стек.
Проверить:
Get-VMSwitch | Select-Object Name, SwitchType, NetAdapterInterfaceDescription, AllowManagementOS
Ожидается:
Name SwitchType NetAdapterInterfaceDescription AllowManagementOS
---- ---------- ------------------------------ -----------------
WSL-WiFibridge External Wi-Fi адаптер True
Также в Windows появится виртуальный адаптер:
Get-NetAdapter | Where-Object Name -like "*WSL-WiFibridge*"
Name InterfaceDescription Status
---- -------------------- ------
vEthernet (WSL-WiFibridge) Hyper-V Virtual Ethernet Adapter Up
Этот адаптер получает собственный IP-адрес от DHCP роутера.
4.4. Настройка .wslconfig
Открыть (или создать) файл %UserProfile%\.wslconfig:
notepad $env:USERPROFILE\.wslconfig
Привести файл строго к следующему виду, удалив старые и экспериментальные директивы:
[wsl2]
networkingMode=bridged
vmSwitch=WSL-WiFibridge
Здесь:
networkingMode=bridged— режим моста;vmSwitch=WSL-WiFibridge— имя коммутатора из шага 4.3.
Примечание: параметры
dhcp,memory,swapиprocessorsне обязательны. Если они не нужны или конфликтуют, оставьте только две строки выше.
4.5. Применение настроек
Перезапустить службу WSL в PowerShell от имени администратора:
Restart-Service WslService
Альтернативный способ — полностью остановить WSL:
wsl --shutdown
Подождать около 8 секунд и запустить дистрибутив:
wsl -d Ubuntu-22.04
4.6. Проверка получения IP
В WSL проверить адрес eth0:
ip -4 addr show eth0
или:
hostname -I
Пример — интерфейс eth0 получил адрес от роутера:
inet 192.168.11.79/24 brd 192.168.11.255 scope global dynamic eth0
Проверить маршрут и связность:
ip route
ping -c 4 192.168.11.1
ping -c 4 8.8.8.8
ping -c 4 google.com
В Windows проверить адрес виртуального адаптера:
netsh interface ip show addresses "vEthernet (WSL-WiFibridge)"
Если у eth0 есть адрес из подсети роутера, отличный от адреса Windows, — bridge работает и WSL получила собственный IP по DHCP.
5. Windows 10
5.1. Окружение
Проверенная конфигурация:
- Windows 10.0.19045.6456;
- WSL 2.7.14.0;
- ядро WSL
6.18.33.2-2; - дистрибутив
Ubuntu-22.04; - пользователь WSL:
petalinux; - WSL работает в режиме
networkingMode=bridged; - IP Windows-адаптера
vEthernet (WSL-Bridge):192.168.70.20.
Конфигурация WSL (%UserProfile%\.wslconfig):
[wsl2]
memory=24GB
swap=16GB
processors=12
networkingMode=bridged
vmSwitch=WSL-Bridge
dhcp=true
5.2. Определение физического сетевого адаптера
Выполнить:
Get-NetAdapter
Найти активный адаптер, например:
Name InterfaceDescription Status
---- -------------------- ------
Ethernet Realtek PCIe GbE Family Controller Up
Запомнить имя адаптера (Ethernet) — оно понадобится при создании коммутатора.
5.3. Создание внешнего виртуального коммутатора (bridge)
Создать внешний коммутатор с именем WSL-Bridge, привязанный к физическому адаптеру:
New-VMSwitch -Name "WSL-Bridge" -NetAdapterName "Ethernet" -AllowManagementOS $true
Здесь:
-Name "WSL-Bridge"— имя коммутатора (будет указано в.wslconfig);-NetAdapterName "Ethernet"— имя физического адаптера из шага 5.2;-AllowManagementOS $true— разрешает Windows использовать этот же адаптер, хост сохраняет сеть.
Проверить:
Get-VMSwitch | Select-Object Name, SwitchType, NetAdapterInterfaceDescription, AllowManagementOS
Ожидается:
Name SwitchType NetAdapterInterfaceDescription AllowManagementOS
---- ---------- ------------------------------ -----------------
WSL-Bridge External Realtek PCIe GbE Family Controller True
Также в Windows появится виртуальный адаптер:
Get-NetAdapter | Where-Object Name -like "*WSL-Bridge*"
Name InterfaceDescription Status
---- -------------------- ------
vEthernet (WSL-Bridge) Hyper-V Virtual Ethernet Adapter Up
Этот адаптер получает собственный IP-адрес от DHCP роутера.
5.4. Настройка .wslconfig
Открыть (или создать) файл %UserProfile%\.wslconfig:
notepad $env:USERPROFILE\.wslconfig
Привести файл к конфигурации из окружения:
[wsl2]
memory=24GB
swap=16GB
processors=12
networkingMode=bridged
vmSwitch=WSL-Bridge
dhcp=true
Здесь:
networkingMode=bridged— режим моста;vmSwitch=WSL-Bridge— имя коммутатора из шага 5.3;dhcp=true— WSL получает IP от DHCP-сервера сети (роутера).
5.5. Перезапуск WSL
Применить настройки, полностью остановив WSL:
wsl --shutdown
Подождать несколько секунд и запустить дистрибутив:
wsl -d Ubuntu-22.04
5.6. Проверка получения IP
В Windows проверить адрес виртуального адаптера:
netsh interface ip show addresses "vEthernet (WSL-Bridge)"
Пример:
Configuration for interface "vEthernet (WSL-Bridge)"
DHCP enabled: Yes
IP Address: 192.168.70.20
Subnet Prefix: 192.168.70.0/24 (mask 255.255.255.0)
Default Gateway: 192.168.70.1
В WSL проверить адрес eth0:
ip -4 addr show eth0
или:
hostname -I
Пример:
inet 192.168.70.35/24 brd 192.168.70.255 scope global dynamic eth0
Проверить маршрут и связность:
ip route
ping -c 4 192.168.70.1
ping -c 4 8.8.8.8
ping -c 4 google.com
Если у eth0 есть адрес из подсети роутера, отличный от адреса Windows, — bridge работает и WSL получила собственный IP по DHCP.
6. Возможные проблемы
| Проблема | Решение |
| --- | --- |
| New-VMSwitch не найден | Включите Hyper-V и перезагрузитесь (шаг 3) |
| Коммутатор не создаётся для Wi-Fi | Драйвер Wi-Fi не поддерживает мост — используйте Ethernet-адаптер |
| WSL не стартует с networkingMode=bridged | Проверьте имя коммутатора: Get-VMSwitch; имя в vmSwitch= должно совпадать |
| Нет IP у eth0 | Проверьте DHCP роутера; в Windows 10 при dhcp=true адрес выдаёт WSL-helper, в Windows 11 перезапустите Restart-Service WslService |
| IP не меняется после правки .wslconfig | Windows 11: Restart-Service WslService; Windows 10: wsl --shutdown; затем подождите около 8 секунд |
| Windows Home | Штатного Hyper-V нет — используйте Pro / Enterprise / Education или режим mirrored |
7. Отключение bridge
Вернуть режим NAT:
wsl --shutdown
Удалить из .wslconfig строки networkingMode, vmSwitch, dhcp или задать:
networkingMode=nat
При необходимости удалить коммутатор (укажите имя своей конфигурации):
Remove-VMSwitch -Name "WSL-WiFibridge"
Remove-VMSwitch -Name "WSL-Bridge"
8. Итоговая схема
Роутер (DHCP)
│
▼
Физический адаптер Windows (Wi-Fi или Ethernet)
│
├──────────────► Windows (хост) IP от DHCP
│
▼
Hyper-V External Switch "WSL-WiFibridge" / "WSL-Bridge"
│
├──────────────► vEthernet (WSL-WiFibridge) / (WSL-Bridge) IP от DHCP
│
▼
WSL 2 (eth0) IP от DHCP
Итоговая конфигурация .wslconfig (Windows 11):
[wsl2]
networkingMode=bridged
vmSwitch=WSL-WiFibridge
Итоговая конфигурация .wslconfig (Windows 10):
[wsl2]
memory=24GB
swap=16GB
processors=12
networkingMode=bridged
vmSwitch=WSL-Bridge
dhcp=true