Назад | Перейти на главную страницу

Хост самопроизвольно теряет подключение к сети, но гости KVM остаются в сети

Это проблема, которую я несколько лет игнорировал.

У меня есть стабильный сервер Debian под управлением linux 3.16.0-4-amd64. Через несколько минут или часов после загрузки сервер теряет исходящее сетевое подключение и перестает отвечать на SSH и ping. Открытые SSH-соединения зависают. Однако у меня есть 3 виртуальных машины на основе KVM, работающих на этом хосте, и они могут буквально работать годами без каких-либо проблем с подключением. Я тоже могу их перезагрузить.

/etc/network/interfaces:

auto lo
iface lo inet loopback

iface eth0 inet manual

auto br0
iface br0 inet static
    address xxx.xxx.xxx.6
    netmask 255.255.255.0
    network xxx.xxx.xxx.0
    broadcast xxx.xxx.xxx.255
    gateway xxx.xxx.xxx.1
    bridge_ports eth0
    bridge_stp off
    bridge_maxwait 0
    bridge_fd 0

В журнале нет ничего интересного. Единственное сообщение, связанное с сетью, в нем следующее, и оно обычно приходит через 10–15 минут после загрузки, но, возможно, за несколько часов до отключения:

kernel: br0: Multicast hash table maximum of 512 reached, disabling snooping: eth0

route -n и ip addr выход не меняется при отключении. ping 8.8.8.8 говорит:

From OWN_IPv4 icmp_seq=1 Destination Host Unreachable

Отключение IPv6 (которым я сейчас не пользуюсь) не помогло.

редактировать: Это происходит независимо от того, запущены виртуальные машины или нет. Мне просто было любопытно, что у них есть подключение, а у хоста его нет, поэтому я упомянул их. Никакого трафика быть не должно, кроме периодического сканирования SSH.

Машина не теряла подключение к сети в течение 16 часов подряд, поэтому я почти уверен, что это ›исправлено‹. Я загрузился с /etc/network/interfaces файл без определенного моста:

auto lo
iface lo inet loopback

auto eth0
allow-hotplug eth0
iface eth0 inet static
    address xxx.xxx.xxx.6
    netmask 255.255.255.0
    network xxx.xxx.xxx.0
    broadcast xxx.xxx.xxx.255
    gateway xxx.xxx.xxx.1
    # dns-* options are implemented by the resolvconf package, if installed
    dns-nameservers SOME_IP SOME_OTHER_IP

Через два часа (на всякий случай) я скопировал /etc/network/interfaces от вопроса и побежал:

ip address flush eth0 scope global && ifup br0

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

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