Xen networking: проблема выбора

Preface



Жил-был на сервере Xen hypervisor, виртуальные машины крутил, по сети трафик гонял, ни о чём не думал.
Сеть жила через xenbr0, который обьединял eth0 и виртуальные интерфейсы.
Кроме eth0 был на сервере ещё один интерфейс — eth1. Который за ненадобностью не использовался.
И вот в связи с умиранием роутера — решил админ через eth1 пускать свою локалку в Сеть.
Недолго думая поднял eth1, воткнул провайдерский шнурок, байтики потекли — хорошо…
Но случилось страшное — ребут. После ребута xenbr0 напрочь отказался подниматься, мотивируя это тем, что интерфейс ppp0 занят…


«При чём здесь ppp0» — подумаете вы — и будете правы.
Админ тоже так же подумал. И начал маны читать и в скриптах ксеновских ковыряться.

Вот что наковырял



Схема сети у Xen простая, как дверь.
При старте xend дёргает скрипт (по-умолчанию — /etc/xen/scripts/network-bridge), который делает следующее:

1. Создаёт мост xenbr0
2. Тушит физический eth0
3. Копирует IP и MAC физического eth0 на виртуальный интерфейс veth0
4. Переименовывает физический eth0 в peth0
5. Виртуальный veth0 переименовывает в eth0
6. peth0 и vif0.0 цепляет на xenbr0
7. Поднимает xenbr0, peth0, eth0 и vif0.0


Это в теории. А на практике скрипт почему-то пытался все действия произвести с ppp0.
Происходит это потому, что скрипт по-умолчанию работает с интерфейсом, который у нас default route.
Ладно, не беда, добрые разработчики предусмотрели это — /etc/xen/scripts/network-bridge можно запускать с параметрами.
Примерно так:

/etc/xen/scripts/network-bridge start bridge=xenbr0 netdev=eth0

То есть жёстко задавать интерфейс, через который мы будем работать. Причём у меня скрипт почему-то отказался тушить eth0 сам — пришлось ему помогать руками…
Исходя из вышенаписанного — решение проблемы оказалось довольно простым.

Практика

Тушим eth0
ifconfig eth0 down

Конфигурим мост
/etc/xen/scripts/network-bridge start bridge=xenbr0 netdev=eth0

Поднимаем мост (скрипт почему-то и этого не сделал)
ifconfig xenbr0 up

Всё, байтики от виртуальных машин пошли в локальную сеть и интернет.
_________
Текст подготовлен в ХабраРедакторе
+29
29 января 2009, 12:51
22
br0ziliy 33,1

комментарии (4)

+1
stat #
Спасибо за статью.
Думаю она будет полезна многим пользователям.
+2
tit #
а не проще было ифапы в скрипт дописать? %)
+1
br0ziliy #
Да некогда было ковыряться — надо было хоть как то людям инет и тестовые машины поднять… Час простоя офиса дорого стОит :)
Благо у народа занятия по англ были — успел всё сделать. Щас уже всё пофиксил — убрал вообще директиву «подымать eth0» из конфигов — теперь xend нормально сможет работать с eth0, не жалуясь, что device, мол, busy
+1
ivlis #
Напишите какая операционка у вас на сервере и какой версии xen, там скрипты существенно разные от версии к версии. Я тоже ловил глюки с iptables в этих скриптах, например.

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.