У меня на сервере установлен 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 и т.д., что у меня нет идей.