Рейтинг:0

Хост не имеет доступа к Интернету, когда работают виртуальные машины

флаг eg

Как настроить сеть, чтобы и хост, и виртуальные машины могли подключаться к Интернету?

Я настроил сервер для размещения нескольких виртуальных машин с помощью KVM. Он предназначен для обслуживания библиотеки загружаемых книг для слепых (дополнительная информация ниже).

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

И хост, и гости работают под управлением Debian 10. Сетевая карта настроена как сетевой мост br0 со статическим адресом («интерфейсы» см. ниже).

В настоящее время виртуальные машины запускаются вручную с помощью virsh. Когда виртуальные машины не запущены, хост имеет доступ в Интернет (например, ping debian.org, get update, wget...).

Как только виртуальная машина запущена, виртуальная машина получает доступ в Интернет с помощью br0. Каждая виртуальная машина имеет статический адрес. Затем хост теряет доступ в Интернет. Пинг возможен на другие машины в локальной сети, а также на маршрутизатор, но не за его пределы (либо пингование доменного имени, либо IP-адреса).

Доступ к хосту и виртуальным машинам можно получить с помощью ssh с других локальных компьютеров.

После того, как виртуальные машины настроены на автозапуск, больше невозможно выполнить обновление без выключения виртуальных машин вручную, а также хост не подключается к серверу времени. Кроме того, ip показывает потерянные пакеты.

Все это, скорее всего, является результатом моего очень ограниченного понимания сетей и мостов в частности. Я очень благодарен за любую помощь!

Вот дополнительная информация.

Цель
Предполагается, что одна виртуальная машина будет обслуживать пользователей из-за пределов локальной сети, используя веб-сервер NginX. Он обрабатывает загрузку книг, извлеченных пользователями, которые хранятся на локальном диске.

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

Хост должен быть доступен по ssh из локальной сети. Доступ в Интернет требуется для подключения к серверу времени и для поддержания программного обеспечения в актуальном состоянии.

ПК
Материнская плата: MSI MPG B550 GAMING PLUS
Процессор: AMD Ryzen™ 7 3700X
Оперативная память: комплект Corsair DIMM 32 ГБ DDR4-3200
HD: Samsung 980 PRO 1 ТБ, SSD
Видеокарта: MSI GeForce GT 710 1GD3H LP

Операционные системы
uname -r

4.19.0-17-амд64

lsb_release -a

Нет доступных модулей LSB.
Идентификатор распространителя: Debian
Описание: Debian GNU/Linux 10 (бастер)
Выпуск: 10
Кодовое имя: Бастер

Сеть
Пока он не перемещен в библиотеку, сервер находится в моем домашнем офисе, подключенном к маршрутизатору AVM Fritz!Box 7490.

ЛС /sys/класс/сеть/

br0 enp42s0 ло

кот /etc/сеть/интерфейсы

# Этот файл описывает сетевые интерфейсы, доступные в вашей системе
# и как их активировать. Для получения дополнительной информации см. интерфейсы(5).

источник /etc/network/interfaces.d/*

# петлевой сетевой интерфейс
авто вот
iFace Lo Inet Loopback

# Основной сетевой интерфейс
iface enp42s0 инет руководство

# Настройки моста br0
авто бр0
iface br0 инет статический
   bridge_ports enp42s0
      адрес 192.168.10.50
      сеть 192.168.10.0
      широковещательный 192.168.10.255
      сетевая маска 255.255.255.0
      шлюз 192.168.10.1
      DNS-серверы имен 94.247.43.254 194.36.144.87 192.168.10.1
      мост_стп выключен
      bridge_fd 0
      bridge_maxwait 0

(Виртуальные машины имеют адреса 192.168.10.51, 192.168.10.52)

ip -s ссылка показать dev br0

3: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state Режим UP DEFAULT group default qlen 1000
    ссылка/эфир 2c:f0:5d:e4:36:d5 brd ff:ff:ff:ff:ff:ff
    RX: байты, пакеты, ошибки, потерянные, переполняют mcast   
    206602 2218 0 1130 0 177     
    TX: байты, пакеты, ошибки, отброшенные операторы связи 
    99981 593 0 0 0 0       

кошка /proc/net/dev

  Интер-| Получить | Передать
   лицо | байты пакеты ошибки отбрасывают FIFO кадр сжатый многоадресный | байты пакеты errs drop fifo colls носитель сжат
    br0: 210026 2268 0 1138 0 0 0 177 103273 615 0 0 0 0 0 0
  vnet0: 1384510 18903 0 0 0 0 0 0 58389276 40523 0 0 0 0 0 0
     вот: 1840 26 0 0 0 0 0 0 1840 26 0 0 0 0 0 0
enp42s0: 58580534 42260 0 38 0 0 0 289 1467123 19358 0 0 0 0 0 0

маршрут -n

Kernel-IP-Routentabelle
Маршрутизатор Ziel Genmask помечает метрику Ref Use Iface
0.0.0.0 0.0.0.0 0.0.0.0 U 0 0 0 vnet0
0.0.0.0 192.168.10.1 0.0.0.0 УГ 0 0 0 бр0
169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 vnet0
192.168.10.0 0.0.0.0 255.255.255.0 У 0 0 0 бр0

ЛС /sys/класс/сеть/

br0 enp42s0 ло vnet0
Рейтинг:1
флаг cz

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

Я действительно вижу только одну очевидную проблему с вашей конфигурацией, и, к сожалению, это плохо выбранный Debian по умолчанию:

      мост_стп выключен

STP действительно должен быть включен для любого виртуального моста, используемого libvirt или для виртуальных машин. Слишком легко построить петлю случайно или намеренно. Это означает, что он также должен быть включен на вашем Fritz!Box, но, скорее всего, он уже включен. То же самое для любого коммутатора, к которому вы подключаете его в библиотеке, но опять же, скорее всего, STP уже включен.

StefanF avatar
флаг eg
Спасибо! Я изменю это как можно скорее и отчитаюсь. :-)
StefanF avatar
флаг eg
Включение bridge_stp не изменило поведение. Сначала я попытаюсь выяснить, связана ли проблема с моим маршрутизатором. Fritz! Boxes в какой-то момент по умолчанию отключил STP. К сожалению, производитель отключил доступ по ssh в своей операционной системе, и, насколько я вижу, графический интерфейс этого не показывает. Может быть, поддержка AVM может прояснить.Еще раз спасибо, что нашли время и указали на эту проблему!
Рейтинг:0
флаг eg
  1. СТП: производитель Fritz!Boxes подтвердил, что они не поддерживают STP.

  2. Отброшенные пакеты: Я пока не буду это учитывать, так как два ноутбука с Linux (Ubuntu Mate, Lubuntu) показывают ок. такое же количество отброшенных пакетов, при этом нет явных проблем с подключением.

  3. Отсутствие доступа в интернет хоста, по-видимому, был связан с установкой connman IP-адреса виртуальных сетей с помощью DHCP.

Первый намек был, когда я посмотрел на вывод ping debian.org после была запущена виртуальная машина:

PING debian.org (130.89.148.77) 56 (84) байт данных.
От blibu.local (169.254.210.100) icmp_seq=1 Целевой хост недоступен

ip a дал следующий вывод (отрывок)

3: br0: ... инет 192.168.10.50/24
4: vnet0: ... инет 169.254.210.100/16

Таким образом, ping использовал vnet0 с адресом, отличным от адресного пространства локальной сети.

Попробовав несколько разных подходов (2-й сетевой адаптер, macvtap) с тем же результатом, я, наконец, вспомнил, что нужно добавить все виртуальные сети в /etc/connman/main.conf:

NetworkInterfaceBlacklist = vmnet, vboxnet, virbr, ifb, ve-, vb-, br, enp42s0, eno1, vnet0, vnet1, vnet2

По-видимому, каждая работающая виртуальная машина добавляет одну виртуальную сеть.

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

Тем не менее, и хост, и все виртуальные машины теперь имеют доступ в Интернет и могут получать обновления программного обеспечения. :-)

Ответить или комментировать

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