Я не уверен, как настроить мой Linux-сервер с одним интерфейсом VLAN для поддержки нескольких виртуальных машин, которые я хочу связать с моей сетью (чтобы все их сервисы, казалось, исходили с нескольких реальных машин на моя сеть). Я просто создаю единый мостовой сетевой интерфейс? br0
, привязаны к моему существующему устройству VLAN, и все ли виртуальные машины используют этот интерфейс? Или мне нужно настроить br0
, br1
, br2
и т.д. для каждой ВМ? Могу ли я даже связать эти мостовые интерфейсы с интерфейсом VLAN? Я полагаю, мне нужно сказать VLAN="yes"
в файле моста ifcfg?
Конечно, я мог бы просто попробовать и посмотреть, но на данный момент я настолько не уверен в том, как все это сочетается вместе, что я хотел бы выполнить проверку работоспособности, прежде чем я получу крушение :-).
Я установил хост CentOS7:
# uname -a
Linux cha028 3.10.0-327.el7.x86_64 #1 SMP Thu Nov 19 22:10:57 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
# cat /etc/redhat-release
CentOS Linux release 7.2.1511 (Core)
Он имеет единый интерфейс с VLAN. Итак, аппаратный интерфейс em1 имеет:
# cat ifcfg-em1
NAME="em1"
DEVICE="em1"
ONBOOT="yes"
TYPE="Ethernet"
BOOTPROTO="none"
HWADDR=14:fe:b5:d6:07:cc
NM_CONTROLLED=no
... и у меня есть ifcfg-em1.144, в котором есть все IP-адреса и тому подобное. Я установил на коробку несколько виртуальных машин. Теперь мне нужно заставить сеть работать.
Как мне это сделать? Просто создайте ifcfg-br0 согласно https://www.banym.de/linux/centos/setup-bridge-device-on-centos (со своим уникальным IP-адресом) и просто добавьте строку в мой файл ifcfg-em1.144, в котором говорится BRIDGE=br0
?
И, сделав это, могу ли я подключить все свои виртуальные машины к устройству br0?
Спасибо за снисходительность и за вашу помощь.
Вот мой ifcfg-em1.144
файл. Обратите внимание, что /etc/sysconfig/network
содержит строку GATEWAY:
VLAN="yes"
DEVICE="em1.144"
PHYSDEV="em1"
TYPE="Ethernet"
BOOTPROTO="static"
DEFROUTE="yes"
ONBOOT="yes"
IPADDR="10.144.101.28"
PREFIX="24"
NM_CONTROLLED=no
Если вы подключитесь к интерфейсу vlan (в отличие от аппаратного интерфейса), пакеты с виртуальными машинами, переданные по мосту, будут помечены по мере их передачи по сети. Если вы подключитесь к аппаратному интерфейсу, весь трафик будет передаваться независимо от тега, и вам придется переместить свой vlan-интерфейс, чтобы он был отключен от моста (базовый интерфейс vlan теперь не имеет смысла). Любое количество виртуальных машин может совместно использовать мост.
Обычно виртуальные локальные сети обрабатываются на хосте, чтобы гостям не приходилось вручную настраивать виртуальные локальные сети. Похоже, что вам подойдут несколько различных вариантов этого слова.
Вот что я сделал, чтобы настроить мостовую сеть на моем хост-компьютере через VLAN:
Физическое устройство - вещь настоящая. Единственное, что он знает, это то, что это устройство Ethernet и у него есть MAC-адрес. Да, и уберите этот проклятый Network Manager с его лица:
(файл == / etc / sysconfig / network-scripts / ifcfg-em1)
DEVICE="em1"
TYPE=Ethernet
HWADDR=14:fe:b5:d6:07:cc
BOOTPROTO=none
ONBOOT="yes"
NM_CONTROLLED=no
Устройство VLAN - Мой vlan здесь под номером 144. YMMV. Вы сообщаете об этом сети CentOS / Redhat, просто добавляя к имени устройства точку с последующим номером; в ifup
сценарий ищет это и извлекает идентификатор VLAN из строки. И вы говорите, что это VLAN, используя VLAN=yes
директива:
(файл == /etc/sysconfig/network-scripts/ifcfg-em1.144)
DEVICE=em1.144
TYPE=Ethernet
BOOTPROTO=none
ONBOOT=yes
VLAN=yes
BRIDGE=br0
NM_CONTROLLED=no
Мостовое устройство - Мост является хранителем IP (тм). Он содержит информацию об уровне 3 (IP-адрес) ... то есть DNS, маску сети и т. Д. Мне нравится помещать шлюз по умолчанию в / etc / sysconfig / network. И мне нравится оставлять этот IP-адрес ZEROCONF (169.254.x.y) вне моей таблицы маршрутизации. Итак, у нас есть:
(файл == / etc / sysconfig / network-scripts / br0)
DEVICE="br0"
TYPE="Bridge"
BOOTPROTO="static"
DEFROUTE="yes"
ONBOOT="yes"
IPADDR="10.144.1.12"
NETMASK=255.255.255.0
DNS1="10.144.1.101"
DOMAIN="example.com"
NM_CONTROLLED=no
DELAY=0
(файл == / etc / sysconfig / network):
GATEWAY=10.144.1.1
NOZEROCONF=true
Обратите внимание, что после запуска сети вашему коммутатору может потребоваться 30-60 секунд, чтобы фактически принять пакеты (т. Е. Cisco может быть настроена для этого). Поэтому, если вы видите «Целевой хост недоступен», когда вы проверяете связь со своим шлюзом, подождите минуту. Это может занять некоторое время.
Как только хост настроен и работает (то есть вы можете пинговать локальный шлюз, затем другие хосты в сети, затем другие хосты в вашей инфраструктуре ... все по IP, заметьте ... тогда вы можете пинговать / traceroute / telnet- в порт-22 по имени хоста), тогда вы готовы к созданию сети на своих виртуальных машинах.
Это тривиально просто. Вам просто нужно убедиться, что они используют br0 в качестве сетевого устройства. Если вы используете virt-install, как и я, вы можете сделать это:
virt-install --name monitor0 --memory 2048 --disk /dev/vm_group0/thin_lv_monitor0 --cdrom ./CentOS-7-x86_64-Everything-1511.iso --network bridge=br0
Обратите внимание --network bridge=br0
.
Если вы используете qemu и строите виртуальный хост без сети или с NAT, вы можете исправить это. Просто сбейте хозяина. Затем отредактируйте /etc/libvirt/qemu/<vm name>.xml
. Найдите раздел под названием interface
. Измените его, чтобы следовать этому примеру:
<interface type='bridge'>
<mac address='52:54:00:22:29:cc'/>
<source bridge='br0'/>
<model type='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>
... То есть вам, вероятно, потребуется изменить первый interface
линия и source
только в строке (это то, что я сделал, построив машины без указания сети [он устанавливает NAT по умолчанию]).
Сохраните файл, затем перезапустите libvirtd своим любимым способом: systemctl restart libvirtd
Перезагрузите виртуальную машину, используя virsh start <vm name>
. Войдите в свою виртуальную машину с помощью ее консоли и отредактируйте сеть соответствующим образом. Помните, что ваша виртуальная машина теперь является добросовестным участником вашей сети, поэтому вы собираетесь дать ей IP-адрес в той же подсети, что и мостовой интерфейс. br0
.
Я установил две виртуальные машины, использующие VLAN br0
так что я счастливый турист!