XEN dom0 (Проблемы с сетью при загрузке сервера виртуальных машин)

Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС.

Модераторы: SLEDopit, Модераторы разделов

Venegance
Сообщения: 119
ОС: Debian

XEN dom0

Сообщение Venegance »

Всем доброго времени суток. Есть машина с XEN 3.2.1, ядро 2.6.26-2-xen-amd64. Проблема заключается в том, что иногда при загрузке системы не стартует интерфейс peth0. Вот кусок syslog'а при нормальном старте:

Код: Выделить всё

Jan 26 10:05:18 mainframe kernel: [   45.110818] ADDRCONF(NETDEV_UP): peth0: link is not ready
Jan 26 10:05:18 mainframe kernel: [   45.266590] peth0: Link is Up 100 Mbps Full Duplex, Flow Control: RX/TX
Jan 26 10:05:18 mainframe kernel: [   45.266705] peth0: 10/100 speed: disabling TSO
Jan 26 10:05:18 mainframe kernel: [   45.268032] ADDRCONF(NETDEV_CHANGE): peth0: link becomes ready
Jan 26 10:05:19 mainframe kernel: [   45.735017] device peth0 entered promiscuous mode
Jan 26 10:05:19 mainframe kernel: [   45.751565] br0: port 1(peth0) entering learning state
Jan 26 10:05:19 mainframe kernel: [   45.755262] br0: topology change detected, propagating
Jan 26 10:05:19 mainframe kernel: [   45.755376] br0: port 1(peth0) entering forwarding state
Jan 26 10:05:28 mainframe kernel: [   55.487165] peth0: no IPv6 routers present
Jan 26 10:05:29 mainframe kernel: [   55.970210] br0: no IPv6 routers present
При старте с проблемами:

Код: Выделить всё

Jan 26 00:02:00 mainframe kernel: [   45.149971] ADDRCONF(NETDEV_UP): peth0: link is not ready
Jan 26 00:02:02 mainframe kernel: [   47.383400] suspend: event channel 49
Jan 26 00:02:06 mainframe kernel: [   51.736874] device vif1.0 entered promiscuous mode
Jan 26 00:02:07 mainframe kernel: [   51.897673] ip_tables: (C) 2000-2006 Netfilter Core Team
Jan 26 00:02:07 mainframe kernel: [   52.174604] tun: Universal TUN/TAP device driver, 1.6
Jan 26 00:02:07 mainframe kernel: [   52.174721] tun: (C) 1999-2004 Max Krasnyansky <maxk@qualcomm.com>
Jan 26 00:02:07 mainframe kernel: [   52.201951] device tap0 entered promiscuous mode
Jan 26 00:02:09 mainframe kernel: [   53.928609] device peth0 entered promiscuous mode
Jan 26 00:02:09 mainframe kernel: [   53.938517] br0: port 2(tap0) entering learning state
Jan 26 00:02:09 mainframe kernel: [   53.938517] br0: port 1(vif1.0) entering learning state
Jan 26 00:02:09 mainframe kernel: [   53.940959] br0: topology change detected, propagating
Jan 26 00:02:09 mainframe kernel: [   53.941069] br0: port 2(tap0) entering forwarding state
Jan 26 00:02:09 mainframe kernel: [   53.941178] br0: topology change detected, propagating
Jan 26 00:02:09 mainframe kernel: [   53.941287] br0: port 1(vif1.0) entering forwarding state
Jan 26 00:02:14 mainframe kernel: [   59.256949] device vif2.0 entered promiscuous mode
Jan 26 00:02:14 mainframe kernel: [   59.258812] br0: port 4(vif2.0) entering learning state
Jan 26 00:02:14 mainframe kernel: [   59.262339] br0: topology change detected, propagating
Jan 26 00:02:14 mainframe kernel: [   59.262460] br0: port 4(vif2.0) entering forwarding state
Jan 26 00:02:16 mainframe kernel: [   61.028525] blkback: ring-ref 8, event-channel 8, protocol 2 (x86_32-abi)
Jan 26 00:02:16 mainframe kernel: [   61.032698] blkback: ring-ref 9, event-channel 9, protocol 2 (x86_32-abi)
Jan 26 00:02:21 mainframe kernel: [   66.535632] device tap1 entered promiscuous mode
Jan 26 00:02:21 mainframe kernel: [   66.535760] br0: port 5(tap1) entering learning state
Jan 26 00:02:21 mainframe kernel: [   66.539613] br0: topology change detected, propagating
Jan 26 00:02:21 mainframe kernel: [   66.539749] br0: port 5(tap1) entering forwarding state
Jan 26 00:02:21 mainframe kernel: [   66.584699] device vif3.0 entered promiscuous mode
Jan 26 00:02:21 mainframe kernel: [   66.588095] br0: port 6(vif3.0) entering learning state
Jan 26 00:02:21 mainframe kernel: [   66.592885] br0: topology change detected, propagating
Jan 26 00:02:21 mainframe kernel: [   66.593004] br0: port 6(vif3.0) entering forwarding state
Jan 26 00:02:38 mainframe kernel: [   83.659848] blkback: ring-ref 16383, event-channel 7, protocol 1 (unspecified, assuming native)
Jan 26 00:06:50 mainframe kernel: [  337.347663] warning: `ntpd' uses 32-bit capabilities (legacy support in use)
Jan 26 01:50:40 mainframe kernel: [ 6572.940047] br0: port 5(tap1) entering disabled state
Jan 26 01:50:40 mainframe kernel: [ 6572.953700] device tap1 left promiscuous mode
Jan 26 01:50:40 mainframe kernel: [ 6572.953753] br0: port 5(tap1) entering disabled state
Jan 26 01:50:40 mainframe kernel: [ 6573.169858] br0: port 6(vif3.0) entering disabled state
Jan 26 01:50:40 mainframe kernel: [ 6573.188852] br0: port 6(vif3.0) entering disabled state
Jan 26 01:51:18 mainframe kernel: [ 6610.452897] br0: port 2(tap0) entering disabled state
Jan 26 01:51:18 mainframe kernel: [ 6610.467670] device tap0 left promiscuous mode
Jan 26 01:51:18 mainframe kernel: [ 6610.467707] br0: port 2(tap0) entering disabled state
Jan 26 01:51:18 mainframe kernel: [ 6610.609826] br0: port 1(vif1.0) entering disabled state
Jan 26 01:51:18 mainframe kernel: [ 6610.648282] br0: port 1(vif1.0) entering disabled state

Погуглив установил. что такая проблема существует не у одного меня, но решения я не нашел. Возможно, кто-то что-то знает здесь. Буду очень благодарен. Для верности выкладываю конфиг XEN'а и сетевых интерфейсов:

Код: Выделить всё

cat /etc/xen/xend-config.sxp | egrep -v '^#|^$'
(network-script 'network-bridge netdev=eth0 bridge=br0')
(vif-script vif-bridge)
(dom0-min-mem 196)
(dom0-cpus 0)
(vnc-listen '0.0.0.0')

Код: Выделить всё

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet static
        address 10.0.0.6
        netmask 255.0.0.0
        network 10.0.0.0
        broadcast 10.255.255.255
        gateway 10.0.0.2
        # dns-* options are implemented by the resolvconf package, if installed
        dns-nameservers 10.0.0.1
        up /etc/xen/scripts/network-bridge start bridge=br0 netdev=eth0
        up ifconfig br0 up
        up route add default gw 10.0.0.2
Спасибо сказали:
Аватара пользователя
Bluetooth
Сообщения: 4395
Статус: Блюзовый
ОС: Debian Squeeze amd64

Re: XEN dom0

Сообщение Bluetooth »

Не знаю, относится ли это к Вашей проблеме, но, по-моему, в Вашей конфигурации есть лишние вещи, а именно 3 строчки, начинающиеся с up.
Ибо xend при запуске вызывает нужный скрипт, да и поднимать интерфейс и давать шлюз не надо.
Я бы сделал так(так сделано у меня на домашней машине):
убрал бы в конфиге скрипта второй аргумент(тогда у вас будет бридж называться eth0, а сам интерфейс - peth0). Просто у меня с этим аргументом тоже не заладилось, разбираться что к чему - не стал. И убрал бы из настроек интрерфейса все 3 строки с up.
У меня так работает без глюков.
Не говорю, что это должно помочь Вам обязательно, но попробовать это можно быстро.
Спасибо сказали:
Venegance
Сообщения: 119
ОС: Debian

Re: XEN dom0

Сообщение Venegance »

Вы согласны, что шлюз по умолчанию - это статический маршрут? А статический - это не перманентный, а значит, он будет удалён из таблицы маршрутизации, если отвалится интерфейс, на который он завязан. Отсюда следует, что шлюз нужно прописывать наново при поднятии br0, так как система будет работать именно через br0. В доказательство могу привести тот факт, что без строчки

Код: Выделить всё

up route add default gw 10.0.0.2
система не знает, куда отправлять пакеты. По поводу остального: при настройке сервера виртуальных машин я руководствовался следующей статьёй http://xgu.ru/wiki/%D0%A1%D0%B5%D1%82%D1%8C_%D0%B2_Xen, так что там используется кое-что похожее.
Спасибо сказали:
Аватара пользователя
Bluetooth
Сообщения: 4395
Статус: Блюзовый
ОС: Debian Squeeze amd64

Re: XEN dom0

Сообщение Bluetooth »

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

Кстати, та статья вообще какая-то отрывочная.
Вот более полная статья:
http://wiki.xensource.com/xenwiki/XenNetwo...ea03fa0fea0ed8b

Кстати, ни про какие прописывания шлюзов там нет. Оно и понятно, ибо тогда использование скрипта теряет всякий смысл, если потом еще что-то вручную дописывать надо.
Спасибо сказали:
Venegance
Сообщения: 119
ОС: Debian

Re: XEN dom0

Сообщение Venegance »

Кстати, ни про какие прописывания шлюзов там нет. Оно и понятно, ибо тогда использование скрипта теряет всякий смысл, если потом еще что-то вручную дописывать надо.

А люди, которые эту статью писали за нас думать не обязаны....Может у нас сервер виртуальных машин изолирован, и доступ в интернет не планируется. На мой взгляд, там просто описан общий случай, а все остальное, включаю параметры сети, мы должны дописывать сами. Кстати, вот Настройка сети в xen. Еще по поводу маршрута....гейтвэй прописывается у eth0, после поднятия бриджа он из системы пропадает, поэтому пропадает и гейтвэй. Почему и как - этот момент я описал выше.

P.S. Тут на форуме как-то одну мысль встретил, что линукс - это такая штука, где по каждой мелочи нужно включать мозг, поэтому, если в какой-то статье не описан какой-то момент - это не значит, что он не нужен.
Спасибо сказали:
Аватара пользователя
Bluetooth
Сообщения: 4395
Статус: Блюзовый
ОС: Debian Squeeze amd64

Re: XEN dom0

Сообщение Bluetooth »

Еще по поводу маршрута....гейтвэй прописывается у eth0, после поднятия бриджа он из системы пропадает, поэтому пропадает и гейтвэй. Почему и как - этот момент я описал выше.
Еще раз повторяю: Тот скрипт должен сам прописывать гейтвей на бридже, беря его у того интерфейса, который к нему цепляется. В том-то и суть этого скрипта, чтобы все работало при прописанной одной строчке. Иначе нет никакого смысла в этом скрипте. Иначе было бы проще свой писать, который бы делал все, что нужно.
Спасибо сказали:
Venegance
Сообщения: 119
ОС: Debian

Re: XEN dom0

Сообщение Venegance »

Я так же еще раз повторю, что такая проблема возникает не у одного меня, я ссылку выше оставлял на тему этого форума. Вот еще доказательство http://www.xgu.ru/wiki/%D0%98%D0%BD%D1%81%...D0%B8%D1%8F_Xen. Кроме того, шлюз по умолчанию можно добавить и скриптом при старте системы, не привязываясь к сетевым интерфейсам(например, через update-rc.d), и, по-вашему, скрипт запуска бриджа должен это подхватывать? Я нигде в доках этого не нашел, а приведенные мною доводы говорят сами за себя.
Спасибо сказали: