Сетевые настройки · 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, чтобы они были доступны даже после перезагрузки.
Get new posts in your inbox
No spam. Unsubscribe anytime.