LINUX.ORG.RU
ФорумAdmin

Bridge и сеть

 , ,


0

1

Возникла необходимость сделать bridge для виртуальных машин KVM. Имеется один подключенный физический интерфейс.

Машина удалённая. Необходимо, чтобы работал мост и к хост машине можно было подключиться извне.

Перепробовал по всякому, не получается, работает либо сеть, либо мост.

Делал так:

auto eth0
iface eth0 inet static
        address 95.x.x.x
        netmask 255.255.255.248
        network 95.x.x.x
        broadcast 95.x.x.x
        gateway 95.x.x.x
        dns-nameservers 8.8.8.8 8.8.4.4

auto eth0:0
iface eth0:0 inet manual

auto br0
iface br0 inet static
address 192.168.10.10
gateway 192.168.10.1
netmask 255.255.255.0
network 192.168.10.0
broadcast 192.168.10.255
 bridge_ports eth0:0
 bridge_stp off
 bridge_maxwait 0
 bridge_fd 0

И так тоже не работает:

auto eth0
iface eth0 inet manual

auto br0
iface br0 inet static
address 192.168.10.10
gateway 192.168.10.1
netmask 255.255.255.0
network 192.168.10.0
broadcast 192.168.10.255
 bridge_ports eth0
 bridge_stp off
 bridge_maxwait 0
 bridge_fd 0

auto eth0:0
iface eth0:0 inet static
        address 95.x.x.x
        netmask 255.255.255.248
        network 95.x.x.x
        broadcast 95.x.x.x
        gateway 95.x.x.x
        dns-nameservers 8.8.8.8 8.8.4.4

Подскажите, куда копать? Что упустил из виду?

Нужно на одном интерфейсе две сети (private и public)? Ну тогда вот так:

auto eth0
iface eth0 inet static
        address 95.x.x.x
        netmask 255.255.255.248
        network 95.x.x.x
        broadcast 95.x.x.x
        gateway 95.x.x.x
        dns-nameservers 8.8.8.8 8.8.4.4


auto br0
iface br0 inet static
address 192.168.10.10
gateway 192.168.10.1
netmask 255.255.255.0
network 192.168.10.0
broadcast 192.168.10.255
 bridge_ports eth0
 bridge_stp off
 bridge_maxwait 0
 bridge_fd 0

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

И так пробовал. Работает только мост. Сеть на машине в этом случае не работает, к ssh подключиться нельзя.

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

Так это, у тебя 2 gateway получается в системе. Убери тогда

gateway 192.168.10.1
из br0, или метрики правильные пропиши.

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

Попробуй с этой машины:
1) Попинговать gateway из

gateway 95.x.x.x
2) Попинговать 8.8.8.8
Результат сюда.

Еще неплохо бы сюда выхлоп
ip r
ip a

whoami
()
Ответ на: комментарий от whoami
# ping 95.x.x.x
connect: Network is unreachable
# ping 8.8.8.8
connect: Network is unreachable
# ip r
192.168.10.0/24 dev br0 proto kernel scope link src 192.168.10.10
#ip a

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br0 state UP qlen 1000
    link/ether 52:54:00:e2:d9:b5 brd ff:ff:ff:ff:ff:ff
3: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP
    link/ether 52:54:00:e2:d9:b5 brd ff:ff:ff:ff:ff:ff
    inet 192.168.10.10/24 brd 192.168.10.255 scope global br0
    inet6 fe80::5054:ff:fee2:d9b5/64 scope link
       valid_lft forever preferred_lft forever
EENNOOTT
() автор топика
Ответ на: комментарий от EENNOOTT

Если нужен бридж, чтобы виртуалки были в том же сегменте, что и хост, то в бридж надо добавить eth0, адрес хоста сконфигурировать на br0. Виртуалки при запуске должны создавать vethX и подключать его к бриджу. Адреса виртуалок должны настраиваться в виртуалках, а не на хосте.

Если виртуалки должны быть в отдельном сегменте, то eth0 в бридж добавлять нельзя. Адрес хоста должен остаться на eth0. При старте виртуалки qemu должен создавать vethX и добавлять в бридж. Адреса виртуалок настраиваются на виртуалках, на br0 адрес не настраивается.

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

Когда адрес хоста сконфигурирован в br0, то на виртуалках сеть почему-то не работает.

Есть следующий рабочий вариант, но он работает на двух физических интерфейсах:

auto eth0
iface eth0 inet static
        address 195.x.x.x
        netmask 255.255.255.0
        network 195.x.x.x
        broadcast 195.x.x.x
        gateway 195.x.x.1
        dns-nameservers 8.8.8.8 8.8.4.4

auto eth1
iface eth1 inet manual

iface br0 inet static
address 192.168.10.10
gateway 192.168.10.1
netmask 255.255.255.0
network 192.168.10.0
broadcast 192.168.10.255
 bridge_ports eth1
 bridge_stp off
 bridge_maxwait 0
 bridge_fd 0

Можно ли что-то подобное организовать с одним интерфейсом?

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

Вероятно вам нужно что-то типа:

auto eth0
iface eth0 inet manual

auto br0
iface br0 inet static
        bridge_ports eth0
        address 192.x.x.x
        netmask 255.255.255.0
        gateway 195.x.x.1
        dns-nameservers 8.8.8.8

auto br1
iface br1 inet static
        bridge_ports eth0
        address 192.168.10.10
        netmask 255.255.255.0
        dns-nameservers 8.8.8.8
i7
()

Здравствуйте.

Ваша проблема в том, что вы пытаетесь использовать IP адрес на порте моста. Если порт eth0 подключен у мосту, то его логические подынтерфейсы (разделяются двоеточием) также подключены к этому мосту. ВВС нужно повесить IP адреса на интерфейс br0 и br0:1, а интерфейс eth0:1 убрать из настроек. У меня такая схема прекрасно работает с виртуальными машинами.

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

Постараюсь объяснить: сам интерфейс br0 создается как мост с портом eth0 согласно настройкам br0. Интерфейс br0:0 является логическим подынтерфейсом этого моста и его настройки должны содержать только IP адрес, маску подсети и шлюз (последнее — опционально), так как сам мост к этому моменту уже существует. В результате на интерфейс br0 повесится secondary IP, указанный в настройках br0:0.

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

Со следующими настройками заработал и мост и публичная сеть на хосте:

auto eth0
iface eth0 inet manual

auto br0
iface br0 inet static
address 192.168.58.10
netmask 255.255.255.0
dns-nameservers 8.8.8.8
 bridge_ports eth0
 bridge_stp off
 bridge_maxwait 0
 bridge_fd 0

auto br0:0
iface br0:0 inet static
address 95.x.x.x
gateway 95.x.x.x
netmask 255.255.255.248
broadcast 95.x.x.x

Но один вопрос всё еще мучает. На виртуалке публичная сеть не работает. Все адреса, gateway ... прописываю на виртуалке. В параметрах следующее:

auto eth0
iface eth0 inet static
address 95.x.x.y
gateway 95.x.x.x
netmask 255.255.255.248
broadcast 95.x.x.x

При пинге:

# ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
From 95.x.x.y icmp_seq=1 Destination Host Unreachable
From 95.x.x.y icmp_seq=1 Destination Host Unreachable

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

Я не очень понимаю, какой IP адрес у шлюза, у сервера и у виртуальной машины, поэтому ничего сказать не могу. Диагностику рекомендую начать с пинга IP адресов сервера и шлюза с виртуальной машины.

astupnikov
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.