Hyper-V: налаштування мережі для віртуальних машин

6 min read

Типи мережевих комутаторів Hyper-V: External, Internal і Private. Як налаштувати мережу для VM, доступ до інтернету і ізольована мережа між VM.

Мережа у Hyper-V — одна з найскладніших частин для початківців. Три типи комутаторів дають різні рівні ізоляції і доступу. Розберемо кожен.


Три типи мережевих комутаторів

External (Зовнішній)

VM має повний доступ до фізичної мережі і інтернету. Прив'язується до фізичного мережевого адаптера хосту.

Використання: продакшн VM, тестування в реальній мережі.

Internal (Внутрішній)

VM спілкується з хост-машиною і між собою. Немає прямого доступу до фізичної мережі (але може через NAT на хості).

Використання: розробка, тестування без впливу на реальну мережу.

Private (Приватний)

VM спілкуються тільки між собою. Хост не має доступу до цієї мережі.

Використання: ізольовані тестові середовища, симуляція мережевих атак.


Створення комутатора через GUI

Hyper-V ManagerVirtual Switch Manager → вибери тип → Create Virtual Switch


Створення через PowerShell

# External switch — прив'язати до фізичного адаптера
$adapter = Get-NetAdapter | Where-Object { $_.Status -eq "Up" -and $_.Name -like "Ethernet*" } | Select-Object -First 1
New-VMSwitch -Name "External Switch" -NetAdapterName $adapter.Name -AllowManagementOS $true

# Internal switch
New-VMSwitch -Name "Internal Switch" -SwitchType Internal

# Private switch
New-VMSwitch -Name "Private Switch" -SwitchType Private

# Переглянути всі комутатори
Get-VMSwitch | Select-Object Name, SwitchType, NetAdapterInterfaceDescription

Підключити VM до комутатора

# Підключити VM до комутатора
Add-VMNetworkAdapter -VMName "MyVM" -SwitchName "External Switch"

# Замінити існуючий адаптер
Connect-VMNetworkAdapter -VMName "MyVM" -SwitchName "Internal Switch"

# Переглянути мережеві адаптери VM
Get-VMNetworkAdapter -VMName "MyVM"

# Кілька мережевих адаптерів у одній VM
Add-VMNetworkAdapter -VMName "MyVM" -SwitchName "Internal Switch" -Name "Internal NIC"
Add-VMNetworkAdapter -VMName "MyVM" -SwitchName "External Switch" -Name "External NIC"

NAT — доступ до інтернету через Internal switch

Internal switch сам по собі не дає інтернету. Налаштуй NAT на хості:

# Знайти IP адаптера Internal switch на хості
Get-NetIPAddress | Where-Object { $_.InterfaceAlias -like "*Internal*" }

# Призначити статичний IP адаптеру Internal switch
New-NetIPAddress -IPAddress 192.168.100.1 -PrefixLength 24 `
  -InterfaceAlias "vEthernet (Internal Switch)"

# Створити NAT
New-NetNat -Name "InternalNAT" -InternalIPInterfaceAddressPrefix "192.168.100.0/24"

# У VM встанови:
# IP: 192.168.100.x (будь-який в підмережі)
# Шлюз: 192.168.100.1
# DNS: 8.8.8.8

VLAN для ізоляції трафіку

# Встановити VLAN ID для мережевого адаптера VM
Set-VMNetworkAdapterVlan -VMName "MyVM" -Access -VlanId 100

# Переглянути VLAN налаштування
Get-VMNetworkAdapterVlan -VMName "MyVM"

# Вимкнути VLAN
Set-VMNetworkAdapterVlan -VMName "MyVM" -Untagged

Обмеження пропускної здатності

# Обмежити пропускну здатність до 100 Мбіт/с
Set-VMNetworkAdapter -VMName "MyVM" -MaximumBandwidth 100000000

# Встановити мінімально гарантовану пропускну здатність
Set-VMNetworkAdapter -VMName "MyVM" -MinimumBandwidthWeight 10

# Переглянути поточні налаштування
Get-VMNetworkAdapter -VMName "MyVM" | Select-Object Name, MaximumBandwidth, MinimumBandwidthWeight

Типові проблеми

VM не отримує IP від роутера (External switch)

# Перевірити чи External switch прив'язаний до правильного адаптера
Get-VMSwitch "External Switch" | Select-Object Name, NetAdapterInterfaceDescription

# Перевірити чи VM підключена
Get-VMNetworkAdapter -VMName "MyVM" | Select-Object SwitchName, Connected

Переконайся що AllowManagementOS $true — інакше хост сам втратить мережу.

Хост втратив мережу після створення External switch

# Перевірити чи хост використовує віртуальний адаптер
Get-NetAdapter | Where-Object { $_.InterfaceDescription -like "*Hyper-V*" }

External switch ділить фізичний адаптер між хостом і VM. Якщо AllowManagementOS = $false — хост не матиме мережі.

VM не може пінгувати хост через Internal switch

Перевір брандмауер на хості — можливо блокує ICMP для vEthernet адаптера:

New-NetFirewallRule -DisplayName "Allow ICMP Hyper-V" -Protocol ICMPv4 `
  -IcmpType 8 -Direction Inbound -Action Allow `
  -InterfaceAlias "vEthernet (Internal Switch)"

Підсумок

External — для VM з реальним IP і доступом до мережі. Internal + NAT — для VM з доступом до інтернету але без видимості в мережі. Private — повністю ізольовані VM. Для більшості тестових середовищ достатньо Internal + NAT.


🌐 Розрахувати параметри підмережі?

→ IP/Subnet калькулятор — введи IP і CIDR, отримай маску, broadcast, діапазон хостів і бінарне представлення.

Related articles

← All articles