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

Debian Xen - маршрутизация одной виртуальной машины перестает работать случайным образом

У меня на сервере установлен Debian Xen 4.1. Позже я буду называть этот сервер буквой A. На сервере работают два виртуальных сервера. Назовем эти серверы буквами B и C.

Все серверы A (хост), B (vm) и C (vm) имеют общедоступные IP-адреса (у них есть только общедоступные IP-адреса, ничего больше) Сервер A: x.x.x.82 Сервер B: x.x.x.83 Сервер C: x.x.x.84

У всех них одинаковая сетевая маска и один и тот же шлюз. Сервер A имеет интерфейсы xenbr0, vif2.0 и vif3.0. Сервер B имеет интерфейс eth0 (связанный с vif2.0). Сервер C имеет интерфейс eth0 (связанный с vif3.0). Я проверил маршруты, шлюзы и сетевые маски. И конфигурация работает.

route -n (on server A)
Destination     Gateway         Genmask         Flags Metric Ref    Use 
Iface
0.0.0.0         x.x.x.81        0.0.0.0         UG    0      0        0 xenbr0
x.x.x.80        0.0.0.0         255.255.255.240 U     0      0        0 xenbr0

route -n (on server B and C)
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         x.x.x.81        0.0.0.0         UG    0      0        0 eth0
x.x.x.80        0.0.0.0         255.255.255.240 U     0      0        0 eth0

Это может работать дни, недели, месяцы, но потом что-то происходит. Просто случайным образом виртуальный сервер B больше не может достичь шлюза, и никто не может получить доступ к серверу B через общедоступный IP-адрес. Все интерфейсы работают, маршруты исправляются. Сервер A и C может пинговать B, а B может пинговать их. Шлюз недоступен. Я проверил iptables на хосте (сервер A), он абсолютно правильный и ничего не изменилось. Я прочитал dmesg, syslog и все файлы журналов, которые я мог себе представить, на хост-сервере A и виртуальной машине B, но не могу найти никаких выпущенных ошибок. Маршрутизация просто больше не работает, как должна! И тоже ничего не изменилось!

Насколько я знаю, единственное решение - перезагрузить виртуальную машину. После этого он отлично работает следующие несколько месяцев.

Я прочитал, может быть, сотни форумов и обсуждений, но не нашел решения - обычно у них что-то не так с конфигурацией или появляется сообщение об ошибке. Когда сервер B больше не может подключаться к шлюзу, сервер C работает отлично, и их сетевые настройки идентичны (за исключением, конечно, другого ip).

Я также проверил brctl, и в нем указано, что STP включен - «нет». Может ли это иметь какое-то отношение к этому? В это трудно поверить, потому что виртуальная машина C по-прежнему отлично работает.

Буду признателен за любые предложения, с чего начать искать причину этого. Я столько раз проверял iptables, ifconfig, brctl, dmesg, logs и т.д., что у меня нет идей.