@synapse_people

Где указывать IP адреса при создании виртуальной машины KVM через libvirt?

Здравствуйте!
Имеется проблема, необходимо создать VPS при этом назначить ему нужные IP адреса. Подскажите, как это вообще происходит..? Допустим я заказал у дата-центра 10 айпи для своей ноды(Тут сразу вопрос, смогут ли 10 айпи идти на 1 сетевую карту?).. И я хочу создать 5 виртуальных машин по 2 айпи...
Походу они как-то выделают на 1 сетевую карту сервера сразу 10 ипов через DHCP.. Допустим, на сервере у etc0 будет 10 ип. Что дальше? Насколько я понял, то примерно такое:
1. Нужно создать мост(bridge)? По 1 штуке для каждой ВМ. br0,br1...br4.
2. Создать 5 сетей(network) n0..n3..n4.
3. Каждой вм назначить свою сеть(потому, что не должно быть связей между ВМ, то есть 1 вм может пинговать только другие свои айпи, а не чужих вм).
Но вопрос остается, где указать список IP?(
Если можно, киньте пошаговую инструкцию в формате *команда* *что она дает*, т.к. реально хочу понять как все работает)
Заранее спасибо за ответы!
*ап*: Забыл еще сказать, что айпи для каждой вм должны быть фиксированные.. То есть при перезагрузке ноды с вдсами, айпи у вдс должны быть те, что назначили изначально именно этой вдс.
  • Вопрос задан
  • 2894 просмотра
Решения вопроса 3
opium
@opium
Просто люблю качественно работать
ну у каждогохостера есть возможность выдать отдельный мак айпишнику и его привязать можно к виртуалке.
а вы какой тоговно огород городите.
Ответ написан
KargoZ
@KargoZ
linux &
Для линукс универсально, если прописывать при старте ручками.

#!/usr/bin/bash

##########sets
PATH=$PATH:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin;
export PATH;
echo $PATH;
brc=`which brctl`;
ifcfg=`which ifconfig`;
fcommand=`which sysctl`;
ebt=`which ebtables`;
v=`which vconfig`;
m=`which modprobe`;
r=`which route`;
i=`which ip`;
en=`which ifenslave`;
gw="хххххххххххххххх";
ns="nameserver ххххххххххххх
nameserver 8.8.8.8
nameserver 8.8.4.4";

###########modules
$m 8021q;
поддержка влан если присутствуют

$m bonding miimon=100 mode=1;
поддержка балансировки если таковая присутствует
mode; посмотреть в интернете, число зависит от применяемой технологии на подключаемых портах коммутатора

###########network bridge
#$brc addbr br0;
создаём бридж

#$brc stp br0 off;
отключаем в бридже стп, в том случае если у Вас "тупой коммутатор"

#$brc addif br0 eno1;
добавляем в бридж сетевую карту eno0

#$ifcfg br0 ххх.ххх.ххх.ххх netmask 255.255.255.0 up;
назначаем адрес бриджу + включаем

#$ifcfg eno1 0.0.0.0 promisc up;
включаем без адреса сетевую карту eno1

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

Для каждой машины не нужно создавать бридж. Достаточно одного. Вот так примерно выглядит подключение через бридж на железке с двумя виртуальными интерфейсами:
# brctl show
bridge name bridge id STP enabled interfaces
br0 8000.XXXXXXXXXXX no eno1
vnet0
vnet1

про sysctl;
Вносим в sysctl.conf или /etc/sysctl.d/{номер меньше су шествующих конфигов }-xxxxxxxxx.conf
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv4.conf.all.forwarding = 1
net.ipv4.conf.all.mc_forwarding = 0
net.ipv4.conf.default.forwarding = 1
net.ipv4.conf.default.mc_forwarding = 0
net.ipv4.conf.lo.forwarding = 0
net.ipv4.conf.lo.mc_forwarding = 0
net.ipv4.conf.eno1.forwarding = 1
net.ipv4.conf.eno1.mc_forwarding = 0
net.ipv4.ip_forward = 1
net.ipv4.conf.all.arp_accept = 1
net.ipv4.conf.all.arp_announce = 1
net.ipv4.conf.all.arp_filter = 1
net.ipv4.conf.all.arp_ignore = 0
net.ipv4.conf.all.arp_notify = 1
net.ipv4.conf.all.proxy_arp = 1
net.ipv4.conf.all.proxy_arp_pvlan = 1
net.ipv4.conf.all.rp_filter = 0
net.ipv4.conf.default.proxy_arp = 1
net.ipv4.conf.default.proxy_arp_pvlan = 1

#########arp+ip фильтр
net.bridge.bridge-nf-call-ip6tables = 0
net.bridge.bridge-nf-call-iptables = 0
net.bridge.bridge-nf-call-arptables = 0
Ответ написан
@inkvizitor68sl
Linux-сисадмин с 8 летним стажем.
https://debian.pro/1345 читайте, как раз тот случай.

Только bridge-utils поставить не забудьте.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Melkij
@Melkij
PostgreSQL DBA
1 вм может пинговать только другие свои айпи, а не чужих вм

И нафига вам тогда внешние адреса заказывать?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы