
У меня есть сервер с установленным Debian Xen 4.1. Я буду называть этот сервер позже буквой A. На сервере запущено два виртуальных сервера. Назовем эти серверы буквами B и C.
Все серверы A(хост), B(виртуальная машина) и C(виртуальная машина) имеют публичные IP-адреса (у них есть только публичные IP-адреса и ничего больше). Сервер A: xxx82 Сервер B: xxx83 Сервер C: xxx84
У всех них одинаковая сетевая маска и шлюз. У сервера 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 enabled - "no". Может ли это быть как-то связано с этим? Трудно поверить, потому что VM C все еще работает отлично.
Буду признателен за любые предложения, с чего начать искать причину этого. Я проверил iptables, ifconfig, brctl, dmesg, логи и т. д. так много раз, что у меня больше нет идей.