Как создать и настроить Bridge Networking для KVM в Linux
В сегодняшнем руководстве мы рассмотрим, как создать и настроить мостовую сеть для KVM в Linux — RHEL / CentOS / Ubuntu / Debian / Arch Linux и т. д. Мост Linux при использовании в KVM позволяет виртуальной машине получать доступ к внешней сети и службам вне Виртуальная среда.
Существуют различные способы настройки мостовой сети в Linux для использования в KVM. Сеть по умолчанию, используемая виртуальной машиной, запущенной в KVM, — это сеть NAT. В сети NAT создается виртуальная сеть для гостевых машин, которая затем сопоставляется с сетью хоста для обеспечения подключения к Интернету.
Когда вы настраиваете и используете мостовую сеть, гостевые операционные системы получают доступ к внешней сети, подключенной непосредственно к хост-машине. Мост можно создать либо с помощью диспетчера виртуальных машин, либо с помощью инструмента командной строки virsh , либо путем прямого редактирования сетевых сценариев, либо с помощью инструментов управления сетью Linux.
Шаг 1. Создание мостовой сети с помощью диспетчера виртуальных машин.
Выполните следующие действия, чтобы создать мост Linux из диспетчера виртуальных машин (GUI). В вашей системе должен быть установлен KVM.
Откройте диспетчер виртуальных машин и перейдите в меню «Правка»> «Сведения о подключении»> «Виртуальные сети».
Настройте новый сетевой интерфейс, щелкнув + в нижней части окна. Дайте виртуальной сети имя.
Нажмите кнопку «Вперед», в следующем окне укажите информацию о виртуальной сети.
Щелкните «Вперед» и выберите, следует ли включить IPv6.
Выберите тип сети и политику пересылки.
Завершите настройку и сохраните свои конфигурации. Новая виртуальная сеть должна отображаться на странице обзора.
Для сети автоматически создается мост в хост-системе.
$ brctl show virbr4
bridge name bridge id STP enabled interfaces
virbr4 8000.525400c2410a yes virbr4-nic
Шаг 2: Создайте мост KVM с помощью команды virsh.
Создайте новый XML-файл моста.
vim br10.xml
Добавьте в файл детали моста.
<network>
<name>br10</name>
<forward mode='nat'>
<nat>
<port start='1024' end='65535'/>
</nat>
</forward>
<bridge name='br10' stp='on' delay='0'/>
<ip address='192.168.30.1' netmask='255.255.255.0'>
<dhcp>
<range start='192.168.30.50' end='192.168.30.200'/>
</dhcp>
</ip>
</network>
Чтобы определить сеть из файла XML без его запуска, используйте:
$ sudo virsh net-define br10.xml Network br1 defined from br10.xml
Чтобы запустить (ранее определенную) неактивную сеть, используйте:
$ sudo virsh net-start br10 Network br10 started
Чтобы настроить автоматический запуск сети при запуске службы:
$ sudo virsh net-autostart br10
Network br10 marked as autostarted
Установите флажок «Подтвердить», если флаг автозапуска установлен на yes
— Постоянный также должен читать «да».
$ sudo virsh net-list --all
Name State Autostart Persistent
----------------------------------------------------
br10 active yes yes
default active yes yes
docker-machines active yes yes
fed290 active no yes
vagrant-libvirt active no yes
Подтвердите создание моста и IP-адрес.
$ ip addr show dev br10
28: br10: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
link/ether 52:54:00:94:00:f5 brd ff:ff:ff:ff:ff:ff
inet 192.168.30.1/24 brd 192.168.30.255 scope global br10
valid_lft forever preferred_lft forever
Шаг 3: Создайте мост, отредактировав сетевые скрипты (CentOS / RHEL / Fedora):
Ниже скрипт создаст мост под названием br10.
$ sudo vim /etc/sysconfig/network-scripts/ifcfg-br10
С участием:
DEVICE=br10
STP=no
TYPE=Bridge
BOOTPROTO=none
DEFROUTE=yes
NAME=br10
ONBOOT=yes
DNS1=8.8.8.8
DNS2=192.168.30.1
IPADDR=192.168.30.3
PREFIX=24
GATEWAY=192.168.30.1
Конфигурация интерфейса eth0, к которому я подключаюсь, будет следующей:
$ cat /etc/sysconfig/network-scripts/ifcfg-eno1
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
BRIDGE=br10
Перезагрузите сетевой демон.
sudo systemctl disable NetworkManager && sudo systemctl stop NetworkManager sudo systemctl restart network.service
Шаг 4: Создайте мост, отредактировав сетевые сценарии (Debian / Ubuntu):
Настроить интерфейс Bridging:
$ sudo vim /etc/network/interfaces
auto br10
iface br10 inet static
address 192.168.1.10
network 192.168.1.1
netmask 255.255.255.0
broadcast 192.168.1.255
gateway 192.168.1.1
dns-nameservers 192.168.1.1
bridge_ports eth0
bridge_stp off
Отключите все строки в разделе интерфейса eth0, чтобы они выглядели примерно так:
auto eth0
iface eth0 inet manual
Перезапустите сетевую службу.
sudo systemctl restart networking.service
Шаг 5: Использование инструмента Nmcli
Используйте nmcli
инструмент командной строки управления сетью, чтобы создать мост Linux на желаемом интерфейсе. Давайте сначала перечислим все доступные подключения.
$ sudo nmcli connection show NAME UUID TYPE DEVICE enp1s0 498869bb-0d88-4a4c-a83a-c491d1040b0b ethernet enp1s0 Wired connection 1 0977f29f-fa2e-3d7f-831c-6f41f8782be3 ethernet enp7s0
Поскольку мой мост будет создан на втором устройстве enp7s0
, я удалю существующее соединение, а затем создам мост с этим устройством.
$ sudo nmcli connection delete 0977f29f-fa2e-3d7f-831c-6f41f8782be3 Connection 'Wired connection 1' (0977f29f-fa2e-3d7f-831c-6f41f8782be3) successfully deleted.
1.
Сохраните информацию, связанную с мостом, в переменных.
BR_NAME="br10" BR_INT="enp7s0" SUBNET_IP="192.168.30.10/24" GW="192.168.30.1" DNS1="8.8.8.8" DNS2="8.8.4.4"
Где:
- BR_NAME: имя создаваемого моста.
- BR_INT: физическое сетевое устройство, которое будет использоваться в качестве ведомого моста.
- SUBNET_IP: IP-адрес и подсеть, назначенные созданному мосту.
- GW: IP-адрес шлюза по умолчанию.
- DNS1 и DNS2: IP-адреса DNS-серверов, которые будут использоваться.
2.
Определите новое мостовое соединение.
sudo nmcli connection add type bridge autoconnect yes con-name ${BR_NAME} ifname ${BR_NAME}
Вывод:
Connection 'br0' (be6d4520-0257-49c6-97c2-f515d6554980) successfully added.
3.
Измените мост, чтобы добавить IP-адрес, шлюз и DNS
sudo nmcli connection modify ${BR_NAME} ipv4.addresses ${SUBNET_IP} ipv4.method manual sudo nmcli connection modify ${BR_NAME} ipv4.gateway ${GW} sudo nmcli connection modify ${BR_NAME} ipv4.dns ${DNS1} +ipv4.dns ${DNS2}
4.
Добавьте сетевое устройство как подчиненное устройство моста.
sudo nmcli connection delete ${BR_INT} sudo nmcli connection add type bridge-slave autoconnect yes con-name ${BR_INT} ifname ${BR_INT} master ${BR_NAME}
Пример вывода.
Connection 'enp7s0' (f033dbc9-a90e-4d4c-83a9-63fd7ec1cdc1) successfully added.
Проверить соединения.
$ sudo nmcli connection show NAME UUID TYPE DEVICE br0 be6d4520-0257-49c6-97c2-f515d6554980 bridge br0 enp1s0 498869bb-0d88-4a4c-a83a-c491d1040b0b ethernet enp1s0 enp7s0 f033dbc9-a90e-4d4c-83a9-63fd7ec1cdc1 ethernet enp7s0
Шаг 6. Подключите сетевой мост
После того, как соединение с сетевым мостом будет создано, активируйте его.
$ sudo nmcli connection up br10 Connection successfully activated (master waiting for slaves) (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/5)
Просмотрите детали моста, запустив его.
sudo nmcli connection show br10
Команда ip addr
должна выдать результат, аналогичный приведенному ниже.
$ ip ad 3: enp7s0: mtu 1500 qdisc fq_codel master br10 state UP group default qlen 1000 link/ether 52:54:00:a2:f6:a8 brd ff:ff:ff:ff:ff:ff 4: br10: mtu 1500 qdisc noqueue state UP group default qlen 1000 link/ether 52:54:00:a2:f6:a8 brd ff:ff:ff:ff:ff:ff inet 192.168.122.10/24 brd 192.168.122.255 scope global noprefixroute br10 valid_lft forever preferred_lft forever inet6 fe80::4f2f:ce6d:dc6b:2101/64 scope link noprefixroute valid_lft forever preferred_lft forever
Поздравляю !!. Вы успешно создали и настроили мостовую сеть для KVM в системе Linux.