LINUX.ORG.RU
решено ФорумAdmin

Настройка сети с хостом и локалкой

 ,


0

1

Добрый день, ЛОР.

Встала задача развернуть виртуальный сервер, к которому будет доступ из локалки (реальной) и с хоста.

В виртуалбоксе для этого обычно достаточно создать соединение типа мост, и проследить, чтобы у хоста и виртуалки были правильные IP.

А как такое сделать с QEMU/KVM? У меня запущен libvirtd (подключен как qemu:///system), работает виртуалка (и на хосте, и на виртуалке дебиан). Смотрю свойства сети в virt-manager. Виртуальное устройство хоста предлагается создать на базе 4 вариантов: NAT, 2 устройства хоста (по числу сетевых карт на хосте) и общее устройство. При этом выдаётся предупреждение, что «В большинстве конфигураций macvtap не подходит для организации сетевых соединений между физической и виртуальной системами».

В какую сторону копать?

★★★★★

Тебе надо:

1 - На хосте создать мост, например br0.

2 - Разрешить его использование для qemu в виде «allow br0» в /etc/qemu/bridge.conf. В убунте так.

3 - Далее просто через virt-manager прописать shared device и вписать туда название моста.

И все заработает.

o- ()

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

anonymous ()
Ответ на: комментарий от o-

Почти получилось. :) :(

Libvirt создаёт мост по умолчанию, virbr0. Его, оказывается, просто надо активировать, через virt-manager в настройках соединения.

После этого виртуалка стала загружаться (ранее при попытке запустить её при настроенном сетевом соединении ругалась на то, что virbr0 ей неизвестен). Более того, при запущенной виртуалке virt-manager в свойствах адаптера показывает её IP (который я задал фиксированно в недрах самой виртуалки)!

Но… пинг по-прежнему не идёт. Ни от хоста к виртуалке, ни от виртуалки к хосту. Куда ещё можно покопать?

hobbit ★★★★★ ()

Использую мост macvtap и изолированную сеть. По вервой виртуалка видет домашнюю локальную сеть и может дергать принтер, а по второй между ней и хостом шарятся RDP и samba.

SR_team ★★★★★ ()
Ответ на: комментарий от hobbit

Анонимус выше все правильно сказал: тебе нужен мост на базе реального адаптера к твоему роутеру / свитчу / etc, если ты хочешь чтобы виртуалка висела в общей сети.

А вот сам virbr0 обычно вполне работает, если ты на фаерволе разрешишь трафик к / от этого интерфейса. Но это только для коннекта между хостом и виртуалками.

o- ()
Ответ на: комментарий от anonymous

Создай на хосте обычный мост, выше ссылка была.

Если ты про ссылку на редхатовскую документацию, то там предлагаются три способа:

  • через virt-manager. Звучит заманчиво, но вот в моём virt-manager в свойствах соединения нет закладки Network interfaces, есть только Virtual networks, и она несколько про другое. Virt-manager версии 2.0.0;
  • через libvirt. Описано куце, и я так понял, что сам RedHat этот способ не рекомендует;
  • системными средствами, через nmcli/nmtui/etc.

Какой из этих способов актуален? Особенно с учётом того, что у меня таки дебиан, не Red Hat.

Если последний способ - как сделать, чтобы виртуалка этот мост видела?

hobbit ★★★★★ ()
Последнее исправление: hobbit (всего исправлений: 1)
Ответ на: комментарий от hobbit

как сделать, чтобы виртуалка этот мост видела?

На сетевом интерфейсе хоста создаёшь мост.
Потом после создания виртуальной машины, в настройках сети самой машины выбираешь — Общее устройство — и там вписываешь название данное мосту.

Ну или отдельно создать подсеть и как вариант, через вирт-менеджер дать доступ в мир

kolja ★★ ()
Ответ на: комментарий от hobbit

Что у тебя используется на хосте для настройки сети? Вот этими средствами создавай бридж. Хорошо, если физических сетевых интерфейсов более одного, но и с одним жить можно. Потом делаешь так: https://wiki.libvirt.org/page/Networking#Bridged_networking_.28aka_.22shared_physical_device.22.29 (там же есть ссылка на дебиановскую документацию). В GUI не помню деталей, но выше уже сказали куда тыкать, там примечательно то, что имя устройства вводится вручную. Это может показаться странным, но работает всё отлично.

Вообще, если у тебя отдельная машина под это, то я бы предложил попробовать Proxmox, если нет цели освоить конкретно libvirt.

anonymous ()
Ответ на: комментарий от anonymous

В GUI не помню деталей, но выше уже сказали куда тыкать, там примечательно то, что имя устройства вводится вручную.

Ещё могу добавить, что в настройках сети виртуалки на мост надо ссылаться по «имени интерфейса», а не по «имени соединения». Так-то это абсолютно логично, но если не обратить на это внимание сразу, можно долго удивляться, почему kvm не хочет запускать машину.

В общем, через nm-connection-editor я создал этот мост, в slave сослался на сетевую карту, прописал настройку ip. А дальше началась мистика. Я пошёл «вендузятным» путём, перегрузился для чистоты эксперимента… и в описании моста сам собой появился второй slave, vnet0. И всё заработало! Хост и виртуалка пингуют друг друга и пингуются извне. Перед этим ещё доустанавливал пакет bridge-utils, но теперь уже не скажу, обязателен ли он для работы с мостом, или там просто утилиты командной строки для упрощения записи.

…А после следующей перегрузки vnet0 исчез из списка, и пинги снова не работают. :( Ой, прошу прощения, это я виртуалку в автозагрузку не добавил. Всё работает.

Ещё столкнулся с тем, что попытка просто ткнуться в гномовский апплет сетевых соединений сеть сразу ломает. Лучше его не трогать.

В общем, тему помечаю как решённую, но подозреваю, что грабли ещё будут…

hobbit ★★★★★ ()
Последнее исправление: hobbit (всего исправлений: 5)
Ответ на: комментарий от hobbit

Перед этим ещё доустанавливал пакет bridge-utils, но теперь уже не скажу, обязателен ли он для работы с мостом, или там просто утилиты командной строки для упрощения записи.

При использовании NM не требуется, но и не мешает.

Ещё столкнулся с тем, что попытка просто ткнуться в гномовский апплет сетевых соединений сеть сразу ломает. Лучше его не трогать.

К сожалению, он слишком мало умеет. По сути, только базовые настройки интерфейсов и VPN, но ни бриджей, ни вланов.

anonymous ()

А как такое сделать с QEMU/KVM

например так:

cat /etc/network/interfaces && ip addr

auto lo
iface lo inet loopback

auto ens9f0
iface ens9f0 inet manual
	dns-nameservers 192.168.0.254

iface enp0s20f0u4u2c2 inet manual

iface ens9f1 inet manual

auto vmbr0
iface vmbr0 inet static
	address 192.168.0.248/24
	gateway 192.168.0.254
	bridge-ports ens9f0
	bridge-stp off
	bridge-fd 0

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens9f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq master vmbr0 state UP group default qlen 1000
    link/ether fc:45:96:f1:40:89 brd ff:ff:ff:ff:ff:ff
3: ens9f1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether fc:45:96:f1:40:8a brd ff:ff:ff:ff:ff:ff
4: enp0s20f0u4u2c2: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether ae:b3:e8:1f:30:a8 brd ff:ff:ff:ff:ff:ff
5: vmbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether fc:45:96:f1:40:89 brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.248/24 brd 192.168.0.255 scope global vmbr0
       valid_lft forever preferred_lft forever
    inet6 fe80::fe45:96ff:fef1:4089/64 scope link 
       valid_lft forever preferred_lft forever

novitchok ★★★★★ ()
Ответ на: комментарий от novitchok

какой тупой анон пошёл.

Да уж не тупее тебя. Разве ты не был фанатом Fedora и всего, что RH?

5.4.44-2-pve

И? Актуальное 5.4.65-1-pve, если что. И оно тянется из убунты с небольшими изменениями, опять же, если что.

anonymous ()
Ответ на: комментарий от anonymous

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

novitchok ★★★★★ ()