Product SiteDocumentation Site

Глава 56. Управление виртуальными сетевыми интерфейсами и сетями

56.1. Управление виртуальными сетями в командной строке
56.2. Управление виртуальными сетями в менеджере виртуальных машин
56.3. Режимы работы виртуальной сети
56.3.1. Сеть на основе моста
56.3.2. Маршрутизируемая сеть
56.3.3. Сеть на основе NAT
56.3.4. Изолированная сеть
Виртуальная сеть Libvirt использует концепцию виртуального сетевого коммутатора. Коммутатор виртуальной сети — это программная конструкция, которая работает на сервере физической машины. К коммутатору виртуальной сети подключаются ВМ. Сетевой трафик для ВМ направляется через этот коммутатор:
Коммутатор виртуальной сети
В конфигурации по умолчанию (виртуальная сеть default на основе NAT) гостевая ОС будет иметь доступ к сетевым службам, но не будет видна другим машинам в сети. Сетевым интерфейсом по умолчанию, представляющим виртуальный сетевой коммутатор, является virbr0:
$ ip addr show virbr0
9: virbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 52:54:00:6e:93:97 brd ff:ff:ff:ff:ff:ff
    inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
       valid_lft forever preferred_lft forever
По умолчанию гостевая ОС получит IP-адрес в адресном пространстве 192.168.122.0/24, а хостовая ОС будет доступна по адресу 192.168.122.1. Из гостевой ОС можно подключиться по SSH к хостовой ОС (по адресу 192.168.122.1) и использовать scp для копирования файлов туда и обратно.
IP-адереса могут быть назначены ВМ DHCP. Для этой цели виртуальному сетевому коммутатору можно назначить пул адресов.

Примечание

Виртуальную сеть можно ограничить определенным физическим интерфейсом, если в физической системе есть несколько сетевых интерфейсов (например, eth0, eth1 и eth2), Физический интерфейс может быть определён в параметре dev=<interface> или в virt-manager при создании новой виртуальной сети.
Возможные варианты настройки сети:
  • NAT — вариант по умолчанию. Внутренняя сеть, предоставляющая доступ к внешней сети с автоматическим применением NAT;
  • Маршрутизация (Routed) — аналогично режиму NAT внутренняя сеть, предоставляющая доступ к внешней сети, но без NAT. Предполагает дополнительные настройки таблиц маршрутизации во внешней сети;
  • Изолированный (Isolated) — в этом режиме ВМ, подключенные к виртуальному коммутатору, могут общаться между собой и с хостом. При этом их трафик не будет выходить за пределы хоста;
  • Сеть на основе моста (Bridge) — подключение типа мост. Позволяет реализовать множество различных конфигураций, в том числе и назначение IP из реальной сети;
  • Буфер SR-IOV (Single-root IOV) — перенаправление одной PCI сетевых карт хост-машины на ВМ. Технология SR-IOV повышает производительность сетевой виртуализации, избавляя гипервизор от обязанности организовывать совместное использование физического адаптера и перекладывая задачу реализации мультиплексирования на сам адаптер. В этом случае обеспечивается прямая пересылка ввода/вывода с ВМ непосредственно на адаптер.
Подробнее о настройках виртуальной сети в разных режимах см. раздел Режимы работы виртуальной сети.

56.1. Управление виртуальными сетями в командной строке

Команды управления виртуальными сетями:
  • virsh net-autostart имя_сети — автоматический запуск заданной сети;
  • virsh net-autostart имя_сети --disable — отключить автозапуск заданной сети;
  • virsh net-create файл_XML — создание и запуск новой сети на основе существующего XML-файла;
  • virsh net-define файл_XML — создание нового сетевого устройства на основе существующего XML-файла (устройство не будет запущено);
  • virsh net-destroy имя_сети — удаление заданной сети;
  • virsh net-dumpxml имя_сети —просмотр информации о заданной виртуальной сети (в формате xml);
  • virsh net-info имя_сети — просмотр основной информации о заданной виртуальной сети;
  • virsh net-list — просмотр списка виртуальных сетей;
  • virsh net-name UUID_сети — преобразование заданного идентификатора в имя сети;
  • virsh net-start имя_неактивной_сети — запуск неактивной сети;
  • virsh net-uuid имя_сети — преобразование заданного имени в идентификатор UUID;
  • virsh net-update имя_сети — обновить существующую конфигурацию сети;
  • virsh net-undefine имя_неактивной_сети — удаление определения неактивной сети.
Примеры:
# virsh net-list --all
Имя       Состояние    Автозапуск   Постоянный
-------------------------------------------------
default   не активен   no           yes

# virsh net-start default
Сеть default запущена

# virsh net-autostart default
Добавлена метка автоматического запуска сети default

# virsh net-list
Имя       Состояние   Автозапуск   Постоянный
------------------------------------------------
default   активен     yes          yes

# virsh net-dumpxml default
<network connections='1'>
<name>default</name>
<uuid>8880a2ae-a71d-4be4-8006-30cf095f77a4</uuid>
<forward mode='nat'>
<nat>
    <port start='1024' end='65535'/>
</nat>
</forward>
<bridge name='virbr0' stp='on' delay='0'/>
<mac address='52:54:00:3e:12:c7'/>
<ip address='192.168.122.1' netmask='255.255.255.0'>
<dhcp>
    <range start='192.168.122.2' end='192.168.122.254'/>
</dhcp>
</ip>
</network>

# virsh net-info default
Имя:         default
UUID:           8880a2ae-a71d-4be4-8006-30cf095f77a4
Активен: yes
Постоянство: yes
Автозапуск: yes
Мост:       virbr0
Иногда бывает полезно выдавать клиенту один и тот же IP-адрес независимо от момента обращения. Пример добавления статического сопоставления MAC- и IP-адреса ВМ:
  1. Получить MAC-адрес ВМ (alt-server — имя ВМ):
    # virsh dumpxml alt-server | grep 'mac address'
        <mac address='52:54:00:ba:f2:76'/>
    
  2. Отредактировать XML-конфигурацию сети (default — имя сети):
    # virsh net-edit default
    
    После строки:
    <range start='192.168.122.2' end='192.168.122.254'/>
    
    Вставить строки с MAC-адресами виртуальных адаптеров:
    <host mac='52:54:00:ba:f2:76' name='alt-server' ip='192.168.122.50'/>
    
  3. Сохранить изменения и перезапустить виртуальную сеть:
    # virsh net-destroy default
    # virsh net-start default
    
Изменения, внесённые с помощью команды virsh net-edit, не вступят в силу в силу до тех пор, пока сеть не будет перезапущена, что приведет к потере всеми ВМ сетевого подключения к хосту до тех пор, пока их сетевые интерфейсы повторно не подключаться.
Изменения в конфигурацию сети можно внести с помощью команды virsh net-update, которая требует немедленного применения изменений. Например, чтобы добавить запись статического хоста, можно использовать команду:
# virsh net-update default add ip-dhcp-host \
"<host mac='52:54:00:ba:f2:76' name='alt-server' ip='192.168.122.50' />" \
--live --config