У меня дома вся сетевая инфраструктура поделена на VLAN
(ы). Так вот чтобы завести на хост QEMU+KVM vlan
созданный на Mikrotik
я разобрал следующую последовательность действий.
Шаги на Mikrotik
есть общий Bridge в который объединены все порты,
создаю VLAN 20 и вешаю его на общий Bridge.
Присваиваю адрес созданному VLAN,
Адрес на Mikrotik делаю статическим
настраиваю DHCP сервис для VLAN
В правилах брандмауэера разрешаю/запрещаю куда из этого VLAN можно получить доступ/запретить
Устанавливаю на хост QEMU + KVM (on Ubuntu 18.04 Server amd)
пакет для работы с VLAN:
ekzorchik@srv-bionic:~$ sudo apt-get install vlan -y
Создаю бридж для работы VLAN 20
, но после вспомнил что делается это по-другому:
ekzorchik@srv-bionic:~$ sudo vconfig add br0 20 WARNING: Could not open /proc/net/vlan/config. Maybe you need to load the 8021q module, or maybe you are not using PROCFS?? ERROR: trying to add VLAN #20 to IF -:br0:- error: No such device ekzorchik@srv-bionic:~$ sudo modprobe 8021q ekzorchik@srv-bionic:~$ sudo vconfig add enp3s0 20 Added VLAN with VID == 20 to IF -:enp3s0:- ekzorchik@srv-bionic:~$ ifconfig -a | grep enp3s0.20 enp3s0.20: flags=4098<BROADCAST,MULTICAST> mtu 1500 ekzorchik@srv-bionic:~$ sudo brctl addbr br0.20 ekzorchik@srv-bionic:~$ sudo brctl addif br0.20 enp3s0.20 ekzorchik@srv-bionic:~$ sudo dhclient br0.20 ekzorchik@srv-bionic:~$ ip r | grep br0.20 default via 172.40.40.1 dev br0.20 172.40.40.0/24 dev br0.20 proto kernel scope link src 172.40.40.254
Для того, чтобы интерфейс поднимался каждый раз после перезагрузки системы, его надо добавить в файл «/etc/network/interfaces
«, но использование данного файла было до системы Ubuntu 18.04
, сейчас настройка ведется через утилиту netplan:
ekzorchik@srv-bionic:~$ sudo nano /etc/network/interfaces # ifupdown has been replaced by netplan(5) on this system. See # /etc/netplan for current configuration. # To re-enable ifupdown on this system, you can run: # sudo apt install ifupdown → это если вернуться к старому созданию
А значит с использованием Netplan
настраиваю поднятие интерфейса после перезагрузки системы:
За примером как правильно прописать смотрю файл с примером:
ekzorchik@srv-bionic:~$ cat /usr/share/doc/netplan.io/examples/vlan.yaml ekzorchik@srv-bionic:~$ sudo netplan generate ekzorchik@srv-bionic:~$ sudo nano /etc/netplan/01-netcfg.yaml
# This file describes the network interfaces available on your system # For more information, see netplan(5). network: version: 2 renderer: networkd ethernets: enp3s0: dhcp4: yes vlans: br0.20: id: 20 link: enp3s0 addresses: [ "172.40.40.254/24" ] nameservers: addresses: [ "127.0.0.1" ]
ekzorchik@srv-bionic:~$ sudo netplan apply ekzorchik@srv-bionic:~$ sudo netplan try ekzorchik@srv-bionic:~$ sudo reboot
после перезагрузки интерфейс с VLAN20
успешно поднялся.
В свойствах виртуальной машины применительно к сети прописываю:
Включаю VM
, у меня это W7X64
— и после загрузки проверяю, какой сетевой адрес она получила:
C:\Users\ekzorchik>ipconfig Настройка протокола IP для Windows Ethernet adapter Подключение по локальной сети 3: DNS-суффикс подключения . . . . . : IPv4-адрес. . . . . . . . . . . . : 172.40.40.253 Маска подсети . . . . . . . . . . : 255.255.255.0 Основной шлюз. . . . . . . . . : 172.40.40.1
все верно адресация из VLAN 20
. Работает.
Разграничение чтобы из этой сети VLAN 20
нельзя было попасть в другие сети обозначенные на Mikrotik
регулируются правилами winbox — IP — Firewall.
Было замечено, что после перезагрузки хоста, при попытке запустить виртуальную машину получаю:
Ошибка запуска : Unable to add bridge br0.20 port vnet0: Operation not supported
root@srv-kvm1:~# brctl show br0.20 bridge name bridge id STP enabled interfaces br0.20 can't get info Operation not supported но вот интерфейс поднят — netplan успешно отработал: root@srv-kvm1:~# ip r | grep br0.20 172.40.40.0/24 dev br0.20 proto kernel scope link src 172.40.40.254 root@srv-kvm1:~# cat /proc/net/vlan/config VLAN Dev name | VLAN ID Name-Type: VLAN_NAME_TYPE_RAW_PLUS_VID_NO_PAD br0.20 | 20 | enp3s0 root@srv-kvm1:~# brctl show bridge name bridge id STP enabled interfaces virbr0 8000.525400792518 yes virbr0-nic virbr1 8000.525400904d81 yes virbr1-nic root@srv-kvm1:~# vconfig rem br0.20 root@srv-kvm1:~# ls /proc/net/vlan/ config
В итоге решил завести VLAN
чуть по-другому:
virt-manager srv-kvm1 — Правка - «Свойства подключения» - «Сетевые интерфейсы» -
Шаг №1:
Тип интерфейса: VLAN
и нажимаю кнопку «Вперед
»
Шаг №2:
Режим запуска: onboot
Активировать: отмечаю галочкой
Параметры IP: IPv4: DHCP
Тег VLAN: 20
Выберите родительский интерфейс: enp3s0
и нажимаю кнопку «Готово
», в ответ я получаю ошибку:
Ошибка создания интерфейса: Не удалось создать интерфейс: internal error: failed to create (start) interface enp3s0.20: failed to execute external program - Running '/sbin/ifup enp3s0.20' program not found root@srv-kvm1:~# apt-get install -y ifupdown
В настройках VM
для оборудования NIC
прописываю:
Создать на базе: Устройство хоста enp3s0.20: macvtap
Режим: Мост
Модель устройства: virtio
Ожидаю.
Важно убедиться что в системе Windows 7 Pro x64 SP1
оборудование в «Диспетчере устройств» - Хост — Сетевые адаптеры - «Red Hat VirtIO Ethernet Adapter»
, удаляем все опознанные и на хосте через правый клик вызываем «Обновить конфигурацию оборудования
», а после может понадобиться установить драйвера: пакет virtio-win-0.1.141.iso
И после заработало. Проверяю отправкой в перезагрузку хоста с последующим
запуском VM: W7X64
root@srv-kvm1:~# reboot
VM
не запускается пишет: «Ошибка запуска : Unable to get index for interface enp3s0.20: No such device»
, проверяю что с настроенным сетевым адаптером, а он в статусе «Не активно», почему он не запускается автоматически? Переделал netplan
и после сетевой адаптер в Virt-Manager
успешно изменил статус на «Активно
»
root@srv-kvm1:~# nano /etc/netplan/01-netcfg.yaml
network: version: 2 renderer: networkd ethernets: enp3s0: dhcp4: yes vlans: enp3s0.20: id: 20 link: enp3s0 addresses: [ "172.40.40.254/24" ] nameservers: addresses: [ "127.0.0.1" ]
root@srv-kvm1:~# netplan apply root@srv-kvm1:~# netplan try
Следом запускаю VM: W7X64
и сетевой адаптер назначенный ей для работы с VLAN 20
успешно запустился. Вот теперь работает.
Ниже обобщенный порядок действий:
а) sudo apt-get install -y ifupdown
б) через virt-manager для хоста создаю «Сетевой интерфейс», если выставлено получение сетевого адреса через DHCP, то после именно этот адрес задаем в netplan.
в) через netplan настраиваю поднятие с загрузкой системы интерфейса.
Итого поставленная задача выполнена которой я хотел добиться проработав настройку и шаги через которые для хоста QEMU+KVM
завел VLAN
выполнена. Нужно создавать сеть через менеджер управления, т. е. Virt-manager
. На этом у меня всё, с уважением автор блога Олло Александр aka ekzorchik.