KVM и виртуальные сети - Парадокс виртуальности или виртуальный парадокс

Есть проблема! Построил простенький виртуальный стенд. Роутер R1 подключенный одним концом через бридж к физическому интерфейсу и вторым к виртуальной сети, и станция H1 подключенная в виртуальную сеть. После перезагрузки машина подключенная только к виртуальной сети H1 не может общаться с внешним миром через роутер R1. При попытке обращения за пределы виртуальной сети идёт ответ к примеру на пинг:
From 10.0.1.1 icmp_seq=1 Destination Port Unreachable
Приходится сначала взбодрить всю эту сеть пингом с R1 до H1.
Что я делаю не так?

Рецепт парадокса:
Взять один QEMU/KVM в виде libvirt, один virt-manager, добавить пару машин и одну или две (по вкусу) виртуальные сети, через одну из которых эти машины будут общаться. При этом одна машина имеет второй сетевой интерфейс, который посредством бриджа соединён с физическим интерфейсом хоста, в котором всё это варится. Эта машинка с двумя сетевыми интерфейсами (назовём её R1) выступает в роли шлюза для второй машины (назовём H1), на R1 поднят IP форвардинг и NAT.

1. Машинка H1 выходит во внешний мир, парадокса нет.
2. При попытке пинговать H1 с хоста, о чудо, он начинает пинговаться, но при этом H1 перестаёт выходить во внешний мир. Парадокс.
3. При попытке начать пинговать H1 с машины R1 она сначала не пингуется, потом начинает, при этом восстанавливается выход H1 во внешний мир и теряется пинг с хоста. Опять парадокс.
переходим к п.2 потом к п.3 и так по кругу. Как будто какой-то волшебный переключатель где-то работает. Где, непонятно.
Хочу разобраться где и как это работает, как и какими средствами и утилитами на это глазами посмотреть? Помогите. Пожалуйста.

ip addr
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: eno1: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1500 qdisc fq_codel master br0 state UP group default qlen 1000
    link/ether 44:37:e6:55:37:1d brd ff:ff:ff:ff:ff:ff
    inet6 fe80::4637:e6ff:fe55:371d/64 scope link
       valid_lft forever preferred_lft forever
3: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 44:37:e6:55:37:1d brd ff:ff:ff:ff:ff:ff
    inet 192.168.2.211/24 brd 192.168.2.255 scope global br0
       valid_lft forever preferred_lft forever
    inet6 fe80::4637:e6ff:fe55:371d/64 scope link
       valid_lft forever preferred_lft forever
4: virbr2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 52:54:00:63:63:a7 brd ff:ff:ff:ff:ff:ff
    inet 10.0.1.1/24 brd 10.0.1.255 scope global virbr2
       valid_lft forever preferred_lft forever
5: virbr2-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc fq_codel master virbr2 state DOWN group default qlen 1000
    link/ether 52:54:00:63:63:a7 brd ff:ff:ff:ff:ff:ff
6: virbr3: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
    link/ether 52:54:00:9e:54:b4 brd ff:ff:ff:ff:ff:ff
    inet 10.0.2.1/24 brd 10.0.2.255 scope global virbr3
       valid_lft forever preferred_lft forever
7: virbr3-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc fq_codel master virbr3 state DOWN group default qlen 1000
    link/ether 52:54:00:9e:54:b4 brd ff:ff:ff:ff:ff:ff
8: vnet0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master br0 state UNKNOWN group default qlen 1000
    link/ether fe:54:00:36:5c:07 brd ff:ff:ff:ff:ff:ff
    inet6 fe80::fc54:ff:fe36:5c07/64 scope link
       valid_lft forever preferred_lft forever
9: vnet1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master virbr2 state UNKNOWN group default qlen 1000
    link/ether fe:54:00:fe:8d:e9 brd ff:ff:ff:ff:ff:ff
    inet6 fe80::fc54:ff:fefe:8de9/64 scope link
       valid_lft forever preferred_lft forever
10: vnet2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master virbr2 state UNKNOWN group default qlen 1000
    link/ether fe:54:00:c2:cb:4d brd ff:ff:ff:ff:ff:ff
    inet6 fe80::fc54:ff:fec2:cb4d/64 scope link
       valid_lft forever preferred_lft forever
ip route
default via 192.168.2.1 dev br0
10.0.1.0/24 dev virbr2 proto kernel scope link src 10.0.1.1
10.0.2.0/24 dev virbr3 proto kernel scope link src 10.0.2.1 linkdown
192.168.2.0/24 dev br0 proto kernel scope link src 192.168.2.211
brctl show
bridge name	bridge id		STP enabled	interfaces
br0		8000.4437e655371d	no		eno1
							vnet0
virbr2		8000.5254006363a7	yes		virbr2-nic
							vnet1
							vnet2
virbr3		8000.5254009e54b4	yes		virbr3-nic
Мне кажется что загвоздка где-то между МАС и IP адресами. В общем сделал для себя вывод, что если машинка подключена только к виртуальной сети и не имеет интерфейса связанного с хостом-хозяином через бридж или тунель, то пообщаться с ней без потери её интереса к виртульной сети не получится. Машинка может общаться либо с хостом-хозяином, либо с виртуальной сетью.
Поправьте если не прав.
Всё таки есть нерешенная проблема. После перезагрузки машина подключенная только к виртуальной сети H1 не может общаться с внешним миром через роутер R1. Приходится сначала взбодрить всю эту сеть пингом с R1 до H1.
До этого на пинги с H1 система отвечает:
From 10.0.1.1 icmp_seq=1 Destination Port Unreachable
From 10.0.1.1 icmp_seq=2 Destination Port Unreachable
и т.д.
10.0.1.1 это адрес R1
Как сделать правильно чтобы работало без пинков?
Сталкивался с такими приколами, если в бридж был включен физический интерфейс.

Непонятно немного строение вашей сети. У вас физическая машинка воткнута в эту "виртуальную" подсеть?

Ну и да - делайте обычным натированием. Не надо городить костыли с бриджем :) У меня для виртуалок отдельный свой бридж, который не включает физический адаптер, FORWARD в ACCEPT, маскарадинг, net.ipv4.ip_forward=1. Если надо - можно и отдельную VPN воткнуть, чтобы объединить удаленные офисы. Кейворд - не включайте физический сетевой интерфейс.
Добрый день!
Спасибо! попробую выкинуть физический интерфейс из бриджа.
У меня вопрос этой темы созрел попутно. Я делаю стенд на виртуалках чтобы как говорится потренироваться на кошках. Идея такова, чтобы съэмулировать работу в сети двух офисов. Наверное со структуры сети и надо было начинать. Грубо говоря R1 и H1 это роутер со станцией(сервером) одного офиса, а R2 и H2 роутер со станцией другого. Среда передачи интернет эмулируется через бридж. Почему так, ну, чтобы доступ был к машинам по SSH, а то неудобно в их голых консолях работать. Может сразу не понял как это правильно сделать.
Вообще задача состоит в другом и к этой теме не относится. Нужно заставить схему работать по GRE протоколу - объединить два офиса по ethernet over IP который должен быть завёрнут в IPSEC, вот так как описано в этой статье - https://libreswan.org/wiki/EoIP_shared_ethernet_LAN_using_IPsec
Только вместо libreswan должен применяться strongswan.
Пока ничего не выходит. Придётся по этому вопросу видимо новую тему открыть.
Для эмуляции надо будет минимум 2 физических сервера :) И советую посмотреть в сторону softether для VPN, настраивается легко и просто.

А про бридж рекомендую забыть. Если у вас все-таки одна машинка, на которой надо эмулировать, то лучше 2 виртуальные сети для виртуалок создать (через virt-manager делается просто).
Так и так две виртуальные сети, а роутеры внешними интерфейсами через бридж сидят в той же сети что и физическая машина. Может поэтому мне взбрело в голову пихнуть туда физический интерфейс.
спасибо про упоминание softether, посмотрю позже, когда буду сам определять как сеть строить. Пока же надо слепить конфету из чего предлагают, это IPSEC на strongswan и всё должно объединяться по GRE через eoip.
Пока так и не понял в чём затык, пока как описано в статье не получилось.
После того как выкинул интерфейс из бриджа, виртуалки перестали общаться с внешним миром. Чтобы мне это организовать придётся вернуть физический интерфейс в бридж, а иначе как организовать их обмен с внешним миром и при этом чтобы я мог обращаться к роутерам как бы извне. При этом чтобы не было лишних NATов по пути обмена между роутерами.
bitrixbiz
придётся вернуть физический интерфейс в бридж
Маскарадинг тут нужен. Без NATа не обойтись.
 
Зарегистрироваться или войдите чтобы оставить сообщение.