Hyper‑V: в виртуальной машине нет интернета — настраиваем виртуальный коммутатор и DHCP (2025)
Чаще всего у ВМ нет интернета из‑за неверного типа коммутатора или потому, что адаптер ВМ «подвис» на несуществующем vSwitch. Ниже — правильные варианты подключения и быстрые команды.
Коротко: варианты
- External — ВМ как обычное устройство в вашей сети, IP выдаёт роутер.
- Internal + NAT — ВМ в отдельной подсети, интернет через NAT хоста.
- Private — изолированная сеть между ВМ (без доступа к хосту/интернету).
1) External‑коммутатор: простой вариант
- Откройте «Диспетчер Hyper‑V» → «Диспетчер виртуальных коммутаторов» → «Создать виртуальный коммутатор» → Внешняя сеть.
- Выберите физический адаптер (Ethernet/Wi‑Fi). Оставьте отмеченным «Разрешить операционной системе управление этим адаптером».
- В настройках ВМ → «Сетевой адаптер» → выберите созданный коммутатор.
PowerShell (Администратор) — выполнять по одной:
$nic = (Get-NetAdapter | Where-Object { $_.Status -eq 'Up' -and $_.ConnectorPresent } | Select-Object -First 1).Name
New-VMSwitch -Name "vExternal" -NetAdapterName $nic -AllowManagementOS $true
2) Internal + NAT: изолированная подсеть
PowerShell (Администратор) — вставить целиком:
# Создаём internal‑коммутатор
New-VMSwitch -Name "vInternal" -SwitchType Internal
# Назначаем IP шлюзу хоста в новой подсети
New-NetIPAddress -InterfaceAlias "vEthernet (vInternal)" -IPAddress 192.168.200.1 -PrefixLength 24
# Включаем NAT из этой подсети в интернет
New-NetNAT -Name "NAT200" -InternalIPInterfaceAddressPrefix 192.168.200.0/24
Подключите ВМ к «vInternal», внутри гостя установите IP/DNS автоматически или вручную: IP 192.168.200.x, шлюз 192.168.200.1, DNS — адрес вашего роутера или публичный.
3) Внутри гостя: IP и драйвер
Командная строка гостя — выполнять по одной:
ipconfig /all
ping 8.8.8.8
ping ya.ru
Если IP 169.254.x.x — DHCP не отвечает. Проверьте тип коммутатора и подключение ВМ. В гостях Windows поставьте «Службы интеграции» (для старых систем) и убедитесь, что сетевой адаптер «Подключен».
4) Когда ничего не помогает
PowerShell (Администратор на хосте) — выполнять по одной:
# Переустановить компоненты виртуального коммутатора на физическом адаптере
Disable-NetAdapterBinding -Name "*" -ComponentID vms_pp
Enable-NetAdapterBinding -Name "*" -ComponentID vms_pp
# Удалить и создать заново проблемный vSwitch
Get-VMSwitch | Where-Object Name -eq "vExternal" | Remove-VMSwitch -Force
New-VMSwitch -Name "vExternal" -NetAdapterName (Get-NetAdapter | ? Status -eq Up | Select -First 1).Name -AllowManagementOS $true
Также проверьте в свойствах физического адаптера, что галочка «Hyper‑V Extensible Virtual Switch» включена.