Я изучаю сеть KVM, и у меня возник вопрос: Когда я устанавливаю домен KVM для использования мостовой сети (без NAT), я вижу, что KVM (или libvirt) создает tap0 с virbr0 в качестве ведущего в моем случае. Теперь я не вижу другого интерфейса, участвующего в мосте (brctl show). Я использую беспроводное соединение на моем хосте во время эксперимента, и у меня есть соединение в гостевой системе.
Что ж, я сбит с толку. Буду признателен за разъяснения экспертов. Спасибо!
So how the host ends up providing connection to the guest?
Для сети libvirt по умолчанию на virbr0
libvirt создает правила NAT, которые маскируют исходящие соединения от хостов, подключенных к этому мосту. Например, в моей системе мы видим:
# iptables -t nat -S
[...]
-A POSTROUTING -s 192.168.122.0/24 ! -d 192.168.122.0/24 -p tcp -j MASQUERADE --to-ports 1024-65535
-A POSTROUTING -s 192.168.122.0/24 ! -d 192.168.122.0/24 -p udp -j MASQUERADE --to-ports 1024-65535
-A POSTROUTING -s 192.168.122.0/24 ! -d 192.168.122.0/24 -j MASQUERADE
[...]
As far as I understand, a bridge should connect one interface to another. So what sense makes a bridge with a single interface?
Мост формирует виртуальную сеть для всех виртуальных машин, которые вы создаете, которые используют эту «сеть» libvirt. Если вы загрузите вторую виртуальную машину, вы увидите более одного интерфейса на мосту.
Besides, wireless interfaces are not supposed to be able to be included in a bridge right?
Как вы увидите из вышеизложенного, исходящий интерфейс не обязательно должен участвовать в мосте. Соединение между вашими виртуальными машинами и внешним миром - это маршрутизируемое соединение (уровень 3), а не соединение уровня 2.
why is the bridge needed? What is its role? Wouldn't it be enough then to have tap0?
Мост создает виртуальную сеть уровня 2 для ваших виртуальных машин.
Боюсь, я не понимаю ваш вопрос. tap0
- это (по большей части) просто интерфейс Ethernet, как и любой другой интерфейс. Кадры Ethernet поступают в него из подключенной виртуальной машины и обрабатываются ядром так же, как кадры, поступающие в физический ник.
Отлично, это проясняет. Теперь последнее уточнение: как перейти от tap0 на уровне 2 к ip? Я имею в виду, является ли сам мост virbr0, который удаляет заголовок eth, исходящий от tap0, и отправляет IP-пакет на назначенный ему IP-адрес?