Как настроить виртуальную частную сеть с использованием IP-адресов?

Как можно создать виртуальную сеть между виртуальными машинами, используя только IP-адресацию, без управления своим собственным подсетями для каждой виртуальной машины и без необходимости настройки маршрутизации между ними на хосте?
  • 4 апреля 2024 г. 11:09
Ответы на вопрос 5
Для создания виртуальной сети между виртуальными машинами с использованием только IP-адресов, можно использовать технологию Virtual Ethernet Bridge (VEB) или просто мост. В этом случае вам не нужно будет настраивать подсети для каждой виртуальной машины и настраивать маршрутизацию между ними на хосте.

Для создания моста между виртуальными машинами, вам необходимо выполнить следующие шаги:

1. Убедитесь, что на хостовой машине установлен и настроен пакетов iproute2.

2. Создайте новый bridge, например `br0`, с помощью команды:
```
sudo ip link add name br0 type bridge
```

3. Добавьте к bridge интерфейсы ваших виртуальных машин (например, eth0 и eth1):
```
sudo ip link set eth0 master br0
sudo ip link set eth1 master br0
```

4. Назначьте IP-адрес bridge (br0), например:
```
sudo ip addr add 192.168.1.1/24 dev br0
```

5. Настройте IP-адреса для ваших виртуальных машин с использованием subnet 192.168.1.0/24.

6. Проверьте подключение между виртуальными машинами, отправив пакеты между ними.

Это позволит виртуальным машинам обмениваться данными напрямую через bridge по IP-адресам без необходимости настройки маршрутизации на хостовой машине. Этот метод удобен в случае, когда требуется создать простую виртуальную сеть для тестирования или разработки.
QEMU эмулирует компьютер с устройствами . Так как в виртуальной машине эмулируется сетевая карта Ethernet, то и на ответной стороне тоже ожидается что-то с поддержкой Ethernet. 

Подключайте сеть по иному L2-каналу, например, по серийному порту через PPP, а на хосте у вас будет pppd, ожидающий соединение на противоположной части порта. Протокол PPP не туннелирует Ethernet.
А откуда возьмутся IP, если не будет ни tap ни бриджа(читай свитча) ?
"как получить 220 вольт без розетки и проводов? 
Ведь электроны есть везде, и провод тут явно лишний...."
Увы, но IP пакет сродни контейнеру,, т.е. коробки или упаковки, а Ethernet, atm, ppp и т.д. таки транспорт для этих контейнеров.
Контейнер без транспорта, при всей своей виртуальности, сам по себе перемещаться не может.
Так что хотя бы виртуальный транспорт вам будет нужен.

Кстати, в вашей постановке гораздо проще выбросить IP
Просто паковать напрямую в в фреймы.
Есть протоколы, которые для повышения эффективности именно так и работают.
У virtualbox есть понятие internal network, когда внутренняя сеть никак в хост систему не выходит и остается внутри (можно создать несколько таких сетей), для подключения к этой сети одну из виртуальных машин в этой внутренней сети можно выбрать роутером, добавив ей интерфейс, связанный бриджем уже с хостовым. 

Про qemu. Сам я это не пробовал но если я верно понимаю, VDE это то что нужно (весь этот функционал плюс еще куча всего). Как я понимаю VDE в qemu уже включен . Например можно объединить снаружи виртуалки через сокет (ключи -unix control-socket и vde-plug [-p port] [socketname] ), в т.ч. с соседней на основе другой технологии (в документации речь идет про User Mode Linux)
Похожие вопросы