Настройка сети для XEN с поддержкой NAT и DHCP.

При настройке серверов в продакшн, такая конфигурация встречается редко. Обычно каждому VPS/VDS выдается реальный IP и все поднимается с помощью (net-script network-bridge) и (vif-sсript vif-bridge) и жестко прописанных параметров для сети.

Но при ограниченном адресном ресурсе или как в моем случае, для изучения и тестирования схема с NAT и выдачей параметров сети по DHCP имеет право на жизнь. Тем более что с сетью в xen можно вытворять и не такие вещи :)

Другое дело что такой вариант нигде не описывается особенно, по крайней мере я не нашел. Вернее нашел вот этот наббл: http://old.nabble.com/-PATCH–get-dhcp-working-for-network-nat-td14897831.html. Но так патчить дефолтные скрипты считаю не лучшим решением, тем более что они достаточно конфигурируются и без таких телодвижений.

Параметр dhcp = «dhcp» в конфиге гостевых доменов, если честно, я так и не понял зачем нужен. Ибо подключается dhcp совсем не так.

Все нижележащее справедливо для debian lenny. Для других дистрибутивов могут отличатся детали.

Для начала устанавливаем dhcp-server:
#apt-get install dhcp3-server
Далее, корректируем его конфиг на использование нашего сервера имен. В /etc/dhcp3/dhcpd.conf прописываем имя домена и наши dns:

# option definitions common to all supported networks...
option domain-name "example.org";
option domain-name-servers ns1.example.org, ns2.example.org;

В принципе это минимально достаточные параметры, чтобы гостевые операционки нормально становились видны и с них можно было начинать работать.

Если у нас все домены будут подключатся через dhcp, то достаточно будет указать в главном конфиге xen (/etc/xen/xend-config.sxp) так:

(net-script 'network-nat dhcp=yes')
(vif-sсript 'vif-nat dhcp=yes')

далее рестартуем xen:
xend restart
Xen рестартует и dhcp сервер. И скорее всего он не запустится, и выдаст ошибку:

# xend restart
Stopping DHCP server: dhcpd3 failed!
Starting DHCP server: dhcpd3check syslog for diagnostics. failed!
failed!

Не обращайте на нее внимания, в конфиге действительно пока не описано ни одной подсети к которой он смог бы привязаться, исключая случай когда у вас это все тоже локалка и она подходит под 10.0.0.0/255.255.0.0. Именно эту подсеть создает на этой машине скрипт network-nat.

Если вас это не устраивает, то можете указать подходящую сеть в /etc/dhcp3/dhcpd.conf, и включать dhcp для network-script будет не обязательно. Но тогда и ip для каждого домена вам необходимо будет прописать в конфигах необходимые.

Или создать свой скрипт на основе network-nat, скопировав и подправив его по своим нуждам. Только тогда в /etc/xen/xend-config.sxp необходимо указать свой скрипт вместо network-nat.

В любом случае сервер dhcp запустится при запуске первого же гостевого домена.

В конфиге домена можно указать ip и mac для этого интерфейса. Тогда они автоматом будут добавлены в конфиг dhcp и будут доступны для гостевого домена. Если ip не указывать то будет выбран адрес 10.XX.YY.1, где XX и YY это номер домена 1..256*256.

MAC адреса выделенные для использования с xen начинаются с 00:16:3E:*. Остальные 3 числа вы можете назначать по своему усмотрению. Если они не указаны, xen сам назначит их случайным образом из этого же диапазона.

В качестве дефолтного шлюза будет назначен адрес+127. То есть если вы указали ip 10.0.1.1 то в качестве шлюза для него будет создан и поднят vif интерфейс 10.0.1.128, и на нем будут прописаны правила маскарадинга для адреса 10.0.1.1.

Или автоматически будет выдано для домена с ID = 3:
10.0.3.1 и шлюз 10.0.3.128 на интерфейсе vif3.0.
для домена с ID = 259:
10.1.4.1 и шлюз 10.1.4.128 на интерфейсе vif259.0.

Если вам не нужно чтобы все домены стартовали с dhcp, то необходимо при конфигурировании сетевого интерфейса указать использование скрипта и dhcp отдельно:
vif = [ 'ip=10.0.1.2,script=vif-nat,mac=00:16:3E:00:01:01' ]

Или наоборот, в главном конфиге не указывать использование dhcp для vif-script, а для конкретного домена указать так:
vif = [ 'script=vif-nat dhcp=yes,ip=10.0.1.3' ]
Тогда dhcp будет использован только для этого гостевого домена.

Так как маска подсети, создаваемой xen, /16, то все эти гостевые домены, даже учитывая что у каждого из них свой дефолтный шлюз, будут находится в одной сети. И мы получим такую себе локалку на одной машине с которой можем ставить различные эксперименты. Один из доменов же можно пробросить наружу с помощью портфорвардинга или правил iptables -t nat -A PREROUTING … Тут уже как ваша фантазия разыграется :) .

Комментарии

2 Комментариев к “Настройка сети для XEN с поддержкой NAT и DHCP.”

  1. ma3a 6.Июл.2010 в 21:57

    День добрый. Немного не по теме, но у вас была статья о компиляции ядра debian под игровые сервера, но сейчас ее нет. Не могли бы вы ее вновь выложить. Был бы очень благодарен!

  2. Nab 29.Июл.2010 в 1:49

    Ой, сорри, давно не заглядывал…
    Я ее вот сюда перенес:
    http://cstrike.in.ua/blog/2009/12/компиляция-ядра-под-игровые-сервера/

Написать комментарий.




XHTML: Можете использовать следующий код: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>