Как работает виртуальная сеть?

1)Каким образом гипервизор создаёт виртуальный сетевой адаптер и как запрос от этого адаптера приходит в физический адаптер, и зачем если можно использовать тот же физический адаптер и просто отправить от него к роутеру запрос?
2)Если у виртуальной машины тип сетевого подключения NAT то в каком месте (кроме физического роутера) эта технология применяется?
  • Вопрос задан
  • 3401 просмотр
Пригласить эксперта
Ответы на вопрос 4
@Drno
1. Можно использовать тот же физический адаптер, но как уже написали - не будет изоляции. А иногда она нужна.
2. NAT применяется везде, где он нужен исходя из задачи. В случае с виртуалками NAT идет либо на гипервизоре, либо уже на роутере, если выбран режим "мост" для сети.

Так же NAT используется на VPN серверах, ну и вообще везде где надо "пропустить" траффик через сервер, с подменой адресов
Ответ написан
Комментировать
@rPman
Два способа:
1. сетевой мост/bridge
на хост машине создается tap устройство - виртуальный сетевой адаптер, пакеты с которого которого принимает и отправляет приложение - гипервизор, все пакеты, отправленные на это устройство 'снаружи', будут продублированы как исходящие внутри виртуальной машины и наоборот
Чтобы виртуальная машина получила доступ к внешней сети, необходимо этот виртуальный адаптер и реальный сетевой интерфейс хост машины объединить в бридж (ip адрес сети уже назначается этому мосту), это действие равнозначно подключению двух проводов ethernet (в данном случае второй - виртуальный) в простой сетевой коммутатор - свитч.
Сетевой мост можно собрать из более чем двух сетевых адаптеров, например можно объединить сетевой адаптер виртуальной машины + настоящий сетевой адаптер + устройство vpn, и получится что все они объединены в одну локальную сеть.
2. специальный драйвер, который симулирует прием и передачу пакетов прямо на выбранное сетевое устройство (так делает к примеру virtualbox на windows), в отличии от сетевого моста, так можно сделать только с одним устройством.
3. на самом деле способов больше, у qemu можно соединить гостевое сетевое устройство с приложением на хост системе напрямую (не нужны драйвера), так же можно ни с чем не соединять, но можно пробросить порт снаружи внутрь гостевой (или соединить только с другой виртуальной машиной, получится приватная внутренняя сеть, к которой имеют доступ только виртуалки) и прочие странные конфиги.

Если используется NAT то внутри гипервизора поднимается виртуальный роутер, доступа к которому у пользователя обычно нет, внешний сетевой интерфейс этого виртуального роутера так же по одному из вышеописанным способов подключается к хост системе.
Ответ написан
TrueBers
@TrueBers
Гуглю за еду
1. Адаптер создаётся средствами операционной системы, как простая болванка, которая извне подчиняется всем правилам сетевой маршрутизации, а изнутри чисто программно делает с пакетами то, что написано в коде драйвера-фильтра.
В винде про это можно почитать на MSDN. Про линукс немного инфы есть здесь.

В физический адаптер пакеты попадают по общим правилам маршрутизации в системе, как если бы это была реальная сеть: пакет, проходя через десятки условий, масок и цепочек фильтров, в конечном итоге куда-то направляется, либо фильтруется, либо маркируется, инкапсулируется, и т. п. Выйдя программно из виртуального интерфейса, дальше всё подчиняется политике маршрутизации сетевого стека.

Физический адаптер можно так же использовать, просто это немного сложнее и требует поддержки определённой технологии от процессора, железки и прошивки, например IOMMU, с помощью которой можно как бы "пробросить" реальную железку внутрь гостевой системы гипервизора. Но при этом сетевой адаптер бесследно исчезнет из основной хостовой системы.

Ещё более продвинутая технология -- SR-IOV, которая честно поделит устройство между разными системами, но нужна так же поддержка технологии процессором, платой, сетевым адаптером и гипервизором.

2. Технология NAT это просто подмена адреса и запоминание, какой поменялся на какой, чтобы потом при ответном пакете вернуть его обратно в нужную подсеть. В виртуалках он по умолчанию используется как простейший способ изоляции подсетей. Чтобы подсеть виртуалки не поломала основную сеть. А тем, кому нужны конкретные задачи, могут переключить режим NAT в какой-то другой, более "опасный" для сети режим, при этом понимая, что он делает.
Ответ написан
Комментировать
vvpoloskin
@vvpoloskin Куратор тега Компьютерные сети
Инженер связи
У каждого гипервизора конечно по своему, но базово технологии две:
1) создать виртуальный логический интерфейс внутри виртуалки и обьединить его какой-либо логической обвязкой с хостовым интерфейсом (мостом, L3, veth или более продвинутыми вещами типа openswitch, distributed switch, NSX).
2) целиком прокинуть интерфейс от хвостовой машины в виртуалку, отобрав его у хоста, как порт usb. Как пример, usb сетевую карточку можно прокинуть на уровне usb сразу в виртуалку, там установить драйвер к сетевушке и пользоваться своим портом.

Отвечая на вопрос, где применяется тип подключения NAT для виртуалок - ну наверно только на домашнем компьютере с виртуалбокс или на тестовом стенде. В промышленной среде всегда есть отдельная сущность (железка или же другая виртуалка) для целей NAT.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы