Как включить сеть в Xen‑гостях на серверах Hetzner DS (Debian Etch)
О чём эта инструкция
Здесь показано, как перевести Xen‑гостя (domU) в routed‑режим на Hetzner DS‑сервере под Debian Etch. Hetzner часто выдаёт дополнительный подсеть IP, отличную от сети основного IP сервера. Эти дополнительные адреса «привязаны» к MAC адресу хоста (dom0), поэтому пакет от неизвестного MAC будет отброшен на маршрутизаторе. Решение — настроить dom0 как шлюз для гостей.
Важно: автор не даёт никаких гарантий, что инструкция сработает в вашей среде. Применяйте с осторожностью и делайте резервные копии конфигураций.
Основные предпосылки
- Сервер работает под Debian Etch с установленным Xen. Предполагается, что изначально был настроен bridge.
- У вас есть доступ к dom0 (root) и к domU консоли.
- У вас есть дополнительные IP/подсеть от Hetzner.
- На госте установлен пакет ethtool (apt‑get install ethtool).
Краткое описание сетевого окружения в примере (используется далее по тексту):
- IP dom0: 88.198.70.47
- Gateway (для dom0): 88.198.70.33
- Netmask dom0: 255.255.255.224
- Доп. подсеть: 78.47.159.32/255.255.255.240 (доступные: .33–.46)
- IP для гостя (domU): 78.47.159.44
1 Подготовка: проверьте текущую конфигурацию
На dom0 просмотрите /etc/network/interfaces:
cat /etc/network/interfacesВ примере конфигурация выглядела так:
### Hetzner Online AG - installimage
# Loopback device:
auto lo
iface lo inet loopback
# device: eth0
auto eth0
iface eth0 inet static
address 88.198.70.47
broadcast 88.198.70.63
netmask 255.255.255.224
gateway 88.198.70.33
# default route to access subnet
up route add -net 88.198.70.32 netmask 255.255.255.224 gw 88.198.70.33 eth0На domU (госте) /etc/network/interfaces изначально может содержать адрес из дополнительного подсети и шлюз, равный .33:
cat /etc/network/interfaces# The primary network interface
auto eth0
iface eth0 inet static
address 78.47.159.44
gateway 78.47.159.33
netmask 255.255.255.240
up route add -net 78.47.159.32 netmask 255.255.255.240 gw 78.47.159.33 eth0Прежде чем идти дальше, убедитесь, что на госте установлен ethtool:
apt-get install ethtool2 Конфигурация хоста (dom0)
- Сделайте резервную копию /etc/network/interfaces:
cd /etc/network
cp interfaces interfaces.old- Отредактируйте /etc/network/interfaces. Для routed режима нужно убрать broadcast и route add, а netmask поставить 255.255.255.255, добавить pointopoint на адрес шлюза. Пример итогового вида:
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 88.198.70.47
netmask 255.255.255.255
gateway 88.198.70.33
pointopoint 88.198.70.33Важно: netmask должен быть 255.255.255.255, и используется параметр pointopoint с IP шлюза Hetzner.
- Сделайте резервные копии конфигураций Xen и скрипта vif:
cd /etc/xen
cp xend-config.sxp xend-config.sxp.old
cd scripts
cp vif-common.sh vif-common.sh.old- Измените /etc/xen/xend-config.sxp: закомментируйте network-bridge/vif-bridge и включите network-route/vif-route:
vi /etc/xen/xend-config.sxp[...]
#(network-script network-bridge)
#(vif-script vif-bridge)
(network-script network-route)
(vif-script vif-route)
[...]- Включите форвардинг и proxy ARP в /etc/sysctl.conf. Убедитесь в наличии строк:
vi /etc/sysctl.confnet.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- Внесите правку в /etc/xen/scripts/vif-common.sh — функцию ip_of():
vi /etc/xen/scripts/vif-common.shНайдите функцию ip_of и замените старую команду парсинга IP на более надёжную:
function ip_of()
{
#ip addr show "$1" | awk "/^.*inet.*$1$/ {print \$2}" | sed -n '1 s,/.*,,p'
ip -4 -o addr show primary dev $1 | awk '$3 == "inet" {print $4; exit}' | sed 's#/.*##'
}- Перезагрузите dom0:
reboot3 Запуск гостя и настройка domU
После перезагрузки dom0 создайте или запустите гостя:
xm create /etc/xen/vm.example.com.cfgПодключитесь к консоли гостя:
xm console vm.example.comВ госте сделайте резервную копию /etc/network/interfaces и отредактируйте её:
cd /etc/network
cp interfaces interfaces.old
vi /etc/network/interfacesПример корректной конфигурации для routed режима:
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet static
address 78.47.159.44
gateway 88.198.70.47
netmask 255.255.255.255
pointopoint 88.198.70.47
post-up ethtool -K eth0 tx offКлючевые отличия:
- gateway — IP домашней машины dom0 (88.198.70.47), а не адрес маршрутизатора Hetzner (.33).
- netmask = 255.255.255.255
- pointopoint указывает на IP dom0
- post-up ethtool отключает аппаратную проверку TCP‑чексума (рекомендуется при проблемах передачи)
После сохранения перезагрузите гостя с dom0:
xm reboot vm.example.comПроверьте доступность гостя извне и внутри:
- на dom0: ping 78.47.159.44
- в domU: ping 8.8.8.8, traceroute до внешнего хоста
4 Проверка и отладка
Полезные команды и проверки:
- Просмотр IP на интерфейсах:
ip -4 addr show- Проверка маршрутов:
ip route show- Проверка, что форвардинг включён:
sysctl net.ipv4.ip_forward- Просмотр ARP‑таблицы и proxy ARP:
arp -n
ip neigh show
cat /proc/sys/net/ipv4/conf/all/proxy_arp- Сниффинг трафика для диагностики:
tcpdump -i eth0 host 78.47.159.44- Если сетевые пакеты не проходят, проверьте iptables/фильтры на dom0 и внешние списки контроля MAC у провайдера.
Распространённые ошибки и их признаки:
- Неверный gateway в domU — пакеты идут на .33 и теряются.
- Остался bridge в конфиге Xen — domU не использует dom0 как маршрутизатор.
- Отсутствует net.ipv4.ip_forward=1 — дом0 не маршрутизирует.
- Неправильный netmask — ожидайте подсеть /32 (255.255.255.255).
5 Когда этот способ не подойдёт
- Если Hetzner требует, чтобы дополнительный IP использовал MAC гостя — но обычно они привязывают IP к MAC dom0. В таком редком случае routed‑режим не поможет.
- Если вы не можете изменить конфигурацию dom0 (например, управляете только гостем) — то этот метод неприменим.
- Если у вас несколько публичных подсетей с особыми правилами маршрутизации у провайдера — согласуйте с поддержкой Hetzner.
Альтернативные подходы
- NAT: настроить SNAT/MASQUERADE на dom0, чтобы пакеты от гостей шли под MAC/адресом dom0. Это быстро, но портит видимость гостя извне.
- Проксирование/туннелирование: настроить VPN/ туннель между сервером и конечной точкой — полезно для более сложных сетевых архитектур.
- Обратиться в поддержку Hetzner и запросить изменение привязки MAC или дополнительные инструкции.
Короткий SOP (шаги для выполнения)
- Резервные копии: /etc/network/interfaces, /etc/xen/xend-config.sxp, /etc/xen/scripts/vif-common.sh
- Изменить /etc/network/interfaces на dom0: netmask /32, pointopoint, убрать broadcast/route add
- В /etc/xen/xend-config.sxp включить network-route/vif-route
- Включить ip_forward и proxy_arp в /etc/sysctl.conf и выполнить sysctl -p
- Исправить функцию ip_of в vif-common.sh
- Перезагрузить dom0
- На domU: прописать gateway = dom0, netmask /32, pointopoint = dom0, post-up ethtool
- Перезагрузить гостя и тестировать
Контрольный список для администратора
- Сделаны резервные копии конфигураций
- dom0 имеет netmask 255.255.255.255 и pointopoint
- В xend-config.sxp активирован network-route
- sysctl: ip_forward=1, proxy_arp=1
- vif-common.sh обновлён
- domU: gateway = IP dom0, netmask = /32, pointopoint = IP dom0
- Проверен доступ к гостю извне и маршрутизация из гостя
Критерии приёмки
- Гость отвечает на ping извне по выделенному IP.
- Из гостя доступны внешние адреса (ping/traceroute).
- На dom0 видны proxy ARP записи и форвардинг пакетов.
Быстрая памятка (cheat sheet)
- dom0 netmask: 255.255.255.255
- domU netmask: 255.255.255.255
- domU gateway: IP dom0
- Включить net.ipv4.ip_forward и net.ipv4.conf.default.proxy_arp
- В xend-config.sxp использовать network-route/vif-route
Заключение
Переключение Xen в routed‑режим на Hetzner DS — надёжный способ работать с дополнительными подсетями IP, когда провайдер «привязывает» IP к MAC хоста. Следуя шагам выше и выполняя проверки, вы сможете сделать dom0 шлюзом для domU и обеспечить доступность гостей в сети.
Полезные ссылки
- Xen: http://www.xensource.com/xen/
- Hetzner’s DS Servers: http://www.hetzner.de/en/hosting/produktmatrix/rootserver-produktmatrix-ds/
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента