Сетевые настройки · 2 min read · Feb 10, 2026

Идеальная настройка Xen 3.0.3 для Debian Sarge - Страница 5

4.5 Создание виртуальной локальной сети из виртуальных машин (по желанию)

(Эта глава является необязательной. Описанное здесь работает только в том случае, если вы установили Xen из исходников.)

В этой главе я хочу создать виртуальную сеть с моими виртуальными машинами, т.е. сеть, которая отличается от сети dom0.

Вы можете найти схему того, что я хочу сделать здесь: http://wiki.xensource.com/xenwiki/XenNetworkingUsecase#head-7f23d0f2248cb0c70458f9339b4405e2b1bfc271

Я сделал то же самое с Xen 2.0.7 здесь: https://www.howtoforge.com/perfect_xen_setup_debian_ubuntu_p6. Однако способ достижения этого с Xen 3 изменился полностью. Xen 3 настраивает все правила брандмауэра, шлюзы и т.д. автоматически. Более того, нам больше не нужен никакой фиктивный сетевой интерфейс для нашей виртуальной сети. Важно знать, что Xen 3 назначает шлюзы из сети 10.x.x.x нашим виртуальным машинам, поэтому хорошей идеей будет также назначить IP-адреса из сети 10.x.x.x нашим виртуальным машинам. Если вы дадите им IP-адреса из сети 192.168.3.x (как мы сделали с Xen 2.0.7 на https://www.howtoforge.com/perfect_xen_setup_debian_ubuntu_p6), то ваши виртуальные машины не будут иметь доступа к интернету.

Итак, мы дадим vm01 IP-адрес 10.0.0.1, а vm02 IP-адрес 10.0.0.2.

Сначала мы редактируем /etc/xen/xend-config.sxp и отключаем мост и включаем NAT (преобразование сетевых адресов) вместо:

vi /etc/xen/xend-config.sxp

| [...] #(network-script network-bridge) #(vif-script vif-bridge) (network-script network-nat) (vif-script vif-nat) [...] |

Затем мы изменяем конфигурационные файлы vm01 и vm02:

/etc/xen/vm01-config.sxp:

vi /etc/xen/vm01-config.sxp

| name="vm01" kernel="/boot/vmlinuz-2.6-xenU" root="/dev/hda1" memory=32 disk=['file:/vserver/images/vm01.img,hda1,w','file:/vserver/images/vm01-swap.img,hda2,w'] vif=[ 'ip=10.0.0.1' ] dhcp="off" hostname="vm01.example.com" ip="10.0.0.1" netmask="255.0.0.0" gateway="10.0.0.254" extra="3" |

/etc/xen/vm02-config.sxp:

vi /etc/xen/vm02-config.sxp

| name="vm02" kernel="/boot/vmlinuz-2.6-xenU" root="/dev/hda1" memory=32 disk=['file:/vserver/images/vm02.img,hda1,w','file:/vserver/images/vm02-swap.img,hda2,w'] vif=[ 'ip=10.0.0.2' ] dhcp="off" ip="10.0.0.2" netmask="255.0.0.0" gateway="10.0.0.254" hostname="vm02.example.com" extra="3" |

После этого выключите vm01 и vm02:

xm shutdown vm01  
xm shutdown vm02

Подождите несколько секунд и проверьте с помощью xm list, что vm01 и vm02 выключены. Затем перезагрузите систему:

shutdown -r now

Если vm01 и vm02 не запускаются автоматически при загрузке, запустите их сейчас:

xm create /etc/xen/vm01-config.sxp  
xm create /etc/xen/vm02-config.sxp

Теперь вы должны иметь возможность пинговать vm02 с vm01 и наоборот, а также пинговать dom0 и хосты в интернете!

Теперь предположим, что у нас есть веб-сервер на порту 80 в vm01 и почтовый сервер на порту 25 в vm02. Поскольку они находятся в своей собственной сети (10.x.x.x), мы не можем получить к ним доступ извне, если не перенаправим эти порты на соответствующую виртуальную машину. Мы можем создать необходимые правила перенаправления портов на dom0 с помощью iptables:

iptables -A PREROUTING -t nat -p tcp -i eth0 --dport 80 -j DNAT --to 10.0.0.1:80  
iptables -A PREROUTING -t nat -p tcp -i eth0 --dport 25 -j DNAT --to 10.0.0.2:25

Если мы сейчас подключимся к dom0 на порту 80, мы будем перенаправлены на vm01. То же самое касается порта 25 и vm02.

Конечно, правила перенаправления теряются при перезагрузке dom0. Поэтому мы помещаем правила в /etc/network/if-up.d/iptables, который выполняется автоматически при загрузке системы:

vi /etc/network/if-up.d/iptables

| #!/bin/sh ### Перенаправление портов ### iptables -A PREROUTING -t nat -p tcp -i eth0 --dport 80 -j DNAT --to 10.0.0.1:80 iptables -A PREROUTING -t nat -p tcp -i eth0 --dport 25 -j DNAT --to 10.0.0.2:25 |

Теперь мы должны сделать этот скрипт исполняемым:

chmod 755 /etc/network/if-up.d/iptables

Каждый раз, когда вам нужны дополнительные правила перенаправления портов, выполните их в оболочке dom0, а затем добавьте их в /etc/network/if-up.d/iptables, чтобы они были доступны даже после перезагрузки.

Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.