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

1)Каким образом гипервизор создаёт виртуальный сетевой адаптер и как запрос от этого адаптера приходит в физический адаптер, и зачем если можно использовать тот же физический адаптер и просто отправить от него к роутеру запрос?
2)Если у виртуальной машины тип сетевого подключения NAT то в каком месте (кроме физического роутера) эта технология применяется?
  • Вопрос задан
  • 3256 просмотров
Пригласить эксперта
Ответы на вопрос 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.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы