Включение сети в гостях Xen на новых серверах EQ Hetzner (Debian Lenny)
Этот гид показывает, как включить сетевой доступ для Xen-гостей (domU) на новых серверах EQ от Hetzner, когда дополнительные IP привязаны к MAC хоста. Решение — переключиться с мостового режима на маршрутизируемый режим (routed), где dom0 работает шлюзом для domU. Следуйте шагам по настройке dom0 и гостя, затем проверьте соединение и отладьте при необходимости.
Краткое описание проблемы
На серверах EQ Hetzner дополнительные IP-адреса (до трёх) находятся в той же подсети, что и основной IP сервера, но маршрутизаторы Hetzner принимают пакеты только от известных MAC-адресов. Дополнительные IP привязаны к MAC-адресу хоста (dom0), поэтому стандартный мост (bridged) не сработает — пакеты от MAC гостя будут отброшены. Решение — использовать routed mode Xen, при котором dom0 выполняет роль шлюза для domU.
Важно: автор не даёт гарантии работоспособности для всех конфигураций. Этот пример показывает практическую настройку для Debian Lenny.
Предварительное замечание
Предполагается, что Xen на EQ-сервере уже установлен и настроен по аналогии с руководством “Virtualization With Xen On Debian Lenny (AMD64)”. В примере есть существующая виртуальная машина vm.example.com, перенесённая с сервера, где она работала в мостовом режиме — теперь её нужно перевести в маршрутизируемый режим.
Исходные сетевые параметры примера:
- IP хоста (dom0): 188.40.103.70
- Шлюз провайдера: 188.40.103.65
- Маска: 255.255.255.192
- Дополнительный IP для гостя (domU): 188.40.103.103
Настройка хоста (dom0)
- Включите пересылку пакетов и необходимые параметры ядра.
Откройте /etc/sysctl.conf и убедитесь, что в нём присутствуют строки:
vi /etc/sysctl.conf[...]
net.ipv4.conf.all.rp_filter=1
net.ipv4.icmp_echo_ignore_broadcasts=1
net.ipv4.ip_forward=1
net.ipv6.conf.all.forwarding=1
net.ipv4.conf.default.proxy_arp=1
[...]Затем примените конфигурацию:
sysctl -p- Переключите Xen из network-bridge в network-route.
Откройте /etc/xen/xend-config.sxp и закомментируйте строки, отвечающие за bridge, вместо них добавьте сетевые скрипты для маршрутизации:
vi /etc/xen/xend-config.sxp[...]
#(network-script network-bridge)
#(vif-script vif-bridge)
(network-script network-route)
(vif-script vif-route)
[...]- Проверьте конфигурацию гостя в файле /etc/xen/vm.example.com.cfg — убедитесь, что в опции vif прописан дополнительный IP:
vi /etc/xen/vm.example.com.cfg[...]
#
# Networking
#
vif = [ 'ip=188.40.103.103' ]
[...]- Отредактируйте сетевой интерфейс хоста в /etc/network/interfaces. В примере строка с ручным маршрутом в конце прокомментирована — она не нужна при routed-модели.
vi /etc/network/interfaces### Hetzner Online AG - installimage
# Loopback device:
auto lo
iface lo inet loopback
# device: eth0
auto eth0
iface eth0 inet static
address 188.40.103.70
broadcast 188.40.103.127
netmask 255.255.255.192
gateway 188.40.103.65
# default route to access subnet
#up route add -net 188.40.103.64 netmask 255.255.255.192 gw 188.40.103.65 eth0- Перезагрузите сервер, чтобы применить изменения в сетевых скриптах и параметрах:
rebootЗапуск гостя и настройка внутри domU
После перезагрузки на dom0 запустите гостя и подключитесь к консоли:
xm create /etc/xen/vm.example.com.cfgxm console vm.example.comВнутри гостя отредактируйте /etc/network/interfaces и укажите в качестве шлюза IP дом0 (не шлюз провайдера):
vi /etc/network/interfaces# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet static
address 188.40.103.103
gateway 188.40.103.70
netmask 255.255.255.192Ключевой момент: строка gateway в госте должна указывать на IP хоста dom0 (188.40.103.70), а не на внешний шлюз 188.40.103.65.
После правок перезагрузите гостя из dom0:
xm reboot vm.example.comОжидаемый результат: гостевая система доступна по указанному дополнительному IP, вы можете пинговать гость извне и отправлять запросы из гостя во внешний интернет.
Отладка и наиболее частые проблемы
Гость не отвечает на пинги извне:
- Проверьте, что dom0 действительно отвечает за пересылку: sysctl net.ipv4.ip_forward должно быть 1.
- Убедитесь, что в /etc/xen/xend-config.sxp используются network-route и vif-route.
- В dom0 выполните tcpdump на eth0 и посмотрите, приходят ли пакеты к корректному MAC.
Пакеты отправляемые гостем не доходят до выхода провайдера:
- Проверьте, совпадает ли MAC-адрес исходящих пакетов с MAC хоста; в routed mode домен оставляет оригинальный MAC, а маршрутизатор Hetzner ожидает MAC хоста. Если пакеты уходят с другим MAC, проверьте настройку vif-route.
Нет доступа из гостя в интернет:
- Проверьте таблицу маршрутизации в госте: ip route show.
- Проверьте, что в dom0 нет правил iptables, блокирующих трансляцию.
Альтернативные подходы и ограничения
Попытка использовать bridged mode с подменой MAC (MAC spoofing): в некоторых конфигурациях можно настроить гостю тот же MAC, что и у хоста, но провайдеры обычно не поддерживают это и могут блокировать. Этот путь ненадёжен и не рекомендуется.
NAT на dom0: можно настроить маскарадинг на dom0 и выдавать гостям частные адреса, тогда не потребуется привязка к MAC провайдера. Минус — потеря прямого публичного IP у гостя и сложности с входящими подключениями.
Использовать дополнительный выделенный IP на отдельном интерфейсе (если Hetzner предоставляет): зависит от тарификации и возможностей провайдера.
Контрольная проверка администратора (чеклист)
На dom0:
- net.ipv4.ip_forward = 1
- В /etc/xen/xend-config.sxp указаны (network-script network-route) и (vif-script vif-route)
- В /etc/network/interfaces прописан основной IP и шлюз провайдера
- Применены изменения: sysctl -p и reboot выполнен
В конфигурации гостя (/etc/xen/*.cfg): vif содержит ip=<доп. IP>
В госте:
- /etc/network/interfaces содержит address=<доп. IP>, gateway=
, netmask корректна - Маршруты и разрешение DNS проверены
- /etc/network/interfaces содержит address=<доп. IP>, gateway=
Критерии приёмки
- Гость отвечает на ping по дополнительному публичному IP с внешней сети.
- Из гостя можно достучаться до внешних адресов (например, ping 8.8.8.8).
- Переадресация пакетов через dom0 работает без потери пакетов и без некорректной фильтрации на MAC.
Ментальные модели и советы
Модель: dom0 как роутер — представьте домен гостя в отдельной «комнате», а dom0 в роли двери в общую сеть. Все пакеты гостей идут через дом0 и выходят в сеть под MAC хоста.
Всегда проверяйте, какую MAC/ARP политику требует провайдер — это определяет, можно ли использовать мост или только маршрутизацию.
Быстрая проверка с командами
- Проверить пересылку на dom0:
sysctl net.ipv4.ip_forward- Список интерфейсов и маршрутов в госте:
ip addr show
ip route show- Прослушать трафик на dom0:
tcpdump -i eth0 host 188.40.103.103Что делать, если это не работает
- Проверьте логи xend/xen: /var/log/xen/* и /var/log/messages.
- Временно включите на dom0 более подробный лог iptables (если он используется).
- Свяжитесь с поддержкой Hetzner и уточните, как привязаны дополнительные IP к MAC-адресам и какие ограничения есть на EQ-серверах.
Полезные ссылки
- Xen: http://www.xensource.com/xen/
- Hetzner EQ сервера: http://www.hetzner.de/en/hosting/produktmatrix/rootserver-produktmatrix/
Итог
Переключение Xen в routed mode — надёжный способ использовать дополнительные IP на Hetzner EQ, когда провайдер привязывает адреса к MAC хост-системы. Основная идея — включить пересылку пакетов на dom0, настроить network-route/vif-route в Xen и указать в госте шлюз равный IP dom0. При проблемах используйте чеклист, tcpdump и логи для локализации ошибки.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента