Debian 8, kvm+bridge

Автор AnnZombia, 24 января 2018, 11:20:33

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

AnnZombia

Всем добрый день!
Очень прошу помочь, вопрос простой, в интернете множество инструкций, но по ним к сожалению, не удается справиться вот уже пару недель..
Банальная задача: ставлю kvm-qemu, создаю виртуалку, пытаюсь пробросить бриджом ее в общую сеть (без NAT).

По всем инструкциям:
1. выключаю network-manager
2. ставлю bridge-utils и сопутствующие
3. конфигурю в /etc/network/interfaces следующее:


auto lo
iface lo inet loopback

auto bridge0
iface bridge0 inet dhcp
bridge_ports eth0 vnet0
bridge_stp off
bridge_fd 0
bridge_maxwait 0

allow-hotplug eth0
iface eth0 inet manual


Затем ставлю виртуалку, настраиваю в ее интерфейсах работу через бридж, после ее запуска у меня как положено поднимается в гипервизоре виртуальный интерфейс без адреса (как и eth0). Сама виртуальная машина по DHCP получает настройки сети, с которыми успешно пингует мост гипервизора, и сама пингуется им.
Но за мостом уже никому ничего не видно - ни сети мою машину, ни машине мою сеть.

Также включена маршрутизация: net.ipv4_forward=1

Когда пингую - слушаю tcpdump`ом и вижу, что ARP запросы нормально гуляют, MAC адрес моей машины все кому надо получают в сети.


Но должно ведь?

ogost

ifconfig -a

Cообщение объединено 24 января 2018, 12:30:10

бридж, если не ошибаюсь, не должен иметь адрес.

alexxnight

Самое простое, что можно сделать:
на хосте вернуть в исходное состояние /etc/network/interfaces
там же установить virt-manager, запустить
будет создана подсеть 192.168.122.0/24
ВМ будут в этой сети и будут доступны с хоста по адресу 192.168.122.xxx

AnnZombia

#3
В исходное сосотяние - всмысле убрать настройки бриджа совсем?
А что тогда указать в настройках интерейса виртуальной машины? Сейчас там указан бридж.

По инструкциям видела что в таких случаях указывают не бридж а сеть, которую конфигурят как раз через virsh net-edit "network_name", получается что-то типа:


<network>
  <name>default</name>
  <bridge name="bridge0" />
  <forward/>
  <ip address="192.168.122.1" netmask="255.255.255.0">
    <dhcp>
      <range start="192.168.122.2" end="192.168.122.254" />
    </dhcp>
  </ip>
</network>

Cообщение объединено 24 января 2018, 14:24:30

Цитата: ogost от 24 января 2018, 12:29:38
ifconfig -a

Cообщение объединено 24 января 2018, 12:30:10

бридж, если не ошибаюсь, не должен иметь адрес.
Не, в инструкциях даже на дебиан.вики бриджу назначают адрес, а вот интерфейсу, через который он взаимодействует с сетью - наоборот, не назначают.

alexxnight

Цитата: AnnZombia от 24 января 2018, 14:12:48В исходное сосотяние - всмысле убрать настройки бриджа совсем?
Да

AnnZombia

Цитата: alexxnight от 24 января 2018, 16:19:06
Цитата: AnnZombia от 24 января 2018, 14:12:48В исходное сосотяние - всмысле убрать настройки бриджа совсем?
Да
А в настройках виртуальной машины в качестве интерфейса тогда что указать?

alexxnight

в менеджере ВМ уже есть настройка сети по умолчанию. Ее нужно только запустить и поставить галочку "автозапуск".

AnnZombia

#7
Добрый день!
Спасибо, при удалении конфигов бриджа из /etc/nwetwork/interfaces и запуска сети (virsh start default_net) с бриджом в режиме NAT - заработало.
А как настроить в таком случае прозрачный проброс хоста в сеть? Редактированием настроек запущенной сети?

Cообщение объединено 26 января 2018, 11:53:24

А кто-то вообще использовал KVM?
Вот кстати самая распространенная инструкция на этот счет, вот по ней совсем не работает :)
https://wiki.debian.org/QEMU#Host_and_guests_on_same_network

alexxnight

#8
Я использую KVM каждый день. :)
Настройку сети можно делать минимум 2 способами: первый - NAT, второй - настройка виртуального сетевого интерфейса ВМ - macvtap
Но второй вариант с ограничением: с хоста ВМ не видна, только компьютерам в локальной сети хоста.
Открыть содержимое (спойлер)
я делал видео о KVM на youtube. Там я постарался ответить на многие вопросы.
https://www.youtube.com/watch?v=tLQ2PtSVr58
[свернуть]

moreplavatel

#9
"Затем ставлю виртуалку, настраиваю в ее интерфейсах работу через бридж" - вот здесь у тебя проблема. ты на хосте bridge_ports eth0 vnet0 уже создал мост с вир интерфейсом vnet0 и потом в виртуалке делаешь еще один мост.

короче настраивай так.
создай виртуалку, в настройках виртуалки выбери виртуальный интерфейс, запусти вирт машину, посмотри какой у тебя интерфейс (ip addr ну пусть будет например eth0) и настрой в виртуалке /etc/network/interfaces например так
auto eth0
iface eth0 inet static
address 192.168.0.2
netmask 255.255.255.0
все, виртуалка настроена.

теперь настраивай хост машину.
ip addr и смотри какие  у тебя есть интерфейсы, будет твой проводной eth0 - его оставляешь без адреса и виртуальный интерфейс допустим с названием vnet0
открываешь /etc/network/interfaces и создаешь мост
auto br0
iface br0 inet static
bridge_ports eth0 vnet0
address 192.168.0.1
netmask 255.255.255.0

sudo service networking restart

все. хост машина будет на адресе 192.168.0.1 а виртуалка на 192.168.0.2

и закоментируй пока ваще

#allow-hotplug eth0
#iface eth0 inet manual

AnnZombia

#10
Ну похоже что у меня так, но не работает, хоть убей.. Вот значит в virt-manager`e настройки интерфейса:



Далее, вот вывод на нем же ifconfig (работаем в локальной сети 10.1.1.0/24, настройки на виртуальную машину пришли по DHCP (который запущен не на гипервизоре!!)):



Далее, вот вывод ifconfig на гипервизоре во время запущенной ВМ:



А это настройки /etc/network/interfaces там же (на гипервизоре):



Вывод route -n на гипервизоре. Видим, что все маршруты идут через бридж:



Вот настройки виртуальной машины на всякой случай (раздел настройки сети):



Пробовала, к слову, разные конфиги, например во так (результат тот же):




Cообщение объединено 29 января 2018, 13:40:55

У меня уже волосы на голове шевелятся, что не так, ребята, помогите!?

Cообщение объединено 29 января 2018, 13:43:02

команда brctl show корректно показывает бридж, и оба связанных с ним интерфейса: физический eth0 и виртуальный vnet0.
Если vnet0 не указывать в /etc/network/interfaces - он все равно подтягивается к бриджу и отображается здесь как связанный, так что все в порядке.

Cообщение объединено 29 января 2018, 16:51:40

К слову, у меня нет никаких правил форвардинга, так и надо?

Cообщение объединено 29 января 2018, 16:53:48

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

zarguni

У меня, например, работает вот так:

<interface type='bridge'>
    <mac address='52:54:00:xx:xx:xx'/>
    <source bridge='virbr0'/>
    <target dev='vnet1'/>
    <model type='virtio'/>
    <alias name='net0'/>
    <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>

После этих настроек поднимается интерфейс vnet1 и добавляется в мост:
Интерфейс:

$ ip link
...
41: vnet1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master virbr0 state UNKNOWN mode DEFAULT group default qlen 1000
    link/ether fe:54:00:12:34:56 brd ff:ff:ff:ff:ff:ff
...

Мост:

$ brctl show
bridge name bridge id STP enabled interfaces
virbr0 8000.001234567890 no eth0
vnet0
vnet1

Никакой, естественно, форвардинг включать при этом не требуется.

AnnZombia

Я добавила буквально одну строку в конфиг виртуальной машины, больше различий не было, естественно, не помогло :((

А может ли препятствовать нормальной работе бриджа например то, что я экспериментирую внутри других гипервизоров (я пробовала два варианта: первый - гипервизор KVM в виртуалке под управлением гипервизора VMWare, второй - гипервизор внутри VirtualBox)?

И там и там работа внутри локальной сети так же организована прозрачная, без NAT.

zarguni

Гость видит гипервизор?
Вложенность виртуальных машин не проблема, работать должно. Попробуйте запустить на хосте первого уровня еще одного гостя и проверить работоспособность конфигурации, тогда и будет видно на каком уровне проблема.

moreplavatel

первый скрин "укажите имя общего устройства" это ты пытаешься делать бридж средствами виртуалки и в то же время в самих устройствах выбираешь обычный (виртуальное устройство).
бридж делается один раз или средствами виртуалки (но не всегда нормально работает) или же средствами хост машины (надежнее).

ну а ты же все пытаещшься настроить бридж и на хосте и на виртуалке. короче у тебя само понимание мостов не верное.

тебе нужны всего два интерфейса это eth0 и vnet0, они должны быть без присвоеных ip адресов, вот с ними и работай на хост машине. они у тебя не сконфигурированы. на хост машине.

auto br0
iface br0 inet static
bridge_ports eth0 vnet0
address 192.168.0.1
netmask 255.255.255.0

все, у тебя будет хост ip на br0 192.168.0.1
а два этих интерфейса будут висеть без ip вообще eth0 и vnet0
вот он и еть твой бридж, он настроен на хосте и больше его настраивать нигде не нужно.

теперь в вирт машине интерфейсу eth0 (он будет висеть пустой, без ip) нужно присвоить ip.

auto eth0
iface eth0 inet static
address 192.168.0.2
netmask 255.255.255.0


у меня vmware не установлена. если так и не получится могу только написать как все настроить на virtualbox (всмысле расписать все по шагам ну и сделать пару скринов.)

мжно еще через teamviewer конечно все настроить. но это уже край, понимание того как устроены (и как настраивать саостоятельно) тебе это не даст.