KVM-мостовая сеть в беспроводном хосте

Я изучаю сеть KVM, и у меня возник вопрос: Когда я устанавливаю домен KVM для использования мостовой сети (без NAT), я вижу, что KVM (или libvirt) создает tap0 с virbr0 в качестве ведущего в моем случае. Теперь я не вижу другого интерфейса, участвующего в мосте (brctl show). Я использую беспроводное соединение на моем хосте во время эксперимента, и у меня есть соединение в гостевой системе.

  • Итак, как хост в конечном итоге обеспечивает соединение с гостем?
  • Насколько я понимаю, мост должен соединять один интерфейс с другим. Так какой смысл в мосте с единым интерфейсом?
  • Кроме того, предполагается, что беспроводные интерфейсы не могут быть включены в мост, верно?

Что ж, я сбит с толку. Буду признателен за разъяснения экспертов. Спасибо!

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
3
0
143
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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 для ваших виртуальных машин.

  • Это позволяет вашим виртуальным машинам общаться друг с другом напрямую.
  • Он позволяет транслировать трафик между виртуальными машинами (и хостом).
  • Он позволяет применять политики (например, правила брандмауэра) к виртуальной сети, а не к отдельным машинам.
  • Он позволяет libvirt подключать DHCP-сервер к сети для обслуживания DHCP-запросов от ваших виртуальных машин.
  • И т.п.

Отлично, это проясняет. Теперь последнее уточнение: как перейти от tap0 на уровне 2 к ip? Я имею в виду, является ли сам мост virbr0, который удаляет заголовок eth, исходящий от tap0, и отправляет IP-пакет на назначенный ему IP-адрес?

Dimitrius J 02.05.2018 18:08

Боюсь, я не понимаю ваш вопрос. tap0 - это (по большей части) просто интерфейс Ethernet, как и любой другой интерфейс. Кадры Ethernet поступают в него из подключенной виртуальной машины и обрабатываются ядром так же, как кадры, поступающие в физический ник.

larsks 02.05.2018 19:26

Другие вопросы по теме