Как создается virbr0-nic?


11

Как я могу создать виртуальный сетевой интерфейс, как virbr0-nic? Я пытаюсь найти способ создания NIC, virbr0-nicно все, что я могу найти в Интернете, это как создать интерфейс, связанный с физическим интерфейсом eth0:0. Когда я пишу

# brctl show
bridge name bridge id       STP enabled interfaces
virbr0      8000.525400e0af01   yes virbr0-nic
virbr1      8000.525400e8a6b1   yes virbr1-nic
                            vnet1

Так virbr0же и мост, к которому virbr0-nicпривязан. Так как же virbr0-nicи vnet1созданы?


обычно это связано с чем-то вроде моста, специфичного для небольшого количества программного обеспечения. Что вы ДЕЙСТВИТЕЛЬНО пытаетесь сделать?
подмастерье Компьютерщик

Я установил KVM и заметил, что он создал новый сетевой адаптер virbr0-nic. Мне просто интересно, как я могу создать свой собственный NIC, такой как этот.
Cosimo

Ответы:


10

Это фиктивные устройства. Вы можете запустить

modprobe dummy

Для создания сетевого интерфейса называется dummy0.

Если вам нужно более одного устройства, вы можете создать, скажем, 5 с

modprobe dummy numdummies=5

Затем вы можете управлять этими устройствами как любое другое сетевое устройство.

Дайте ему MAC-адрес с

ip link set dummy0 address aa:aa:aa:bb:bb:bb

Дайте ему IP-адрес с

ip addr add 10.0.0.1/24 dev dummy0

Добавьте его в свой существующий мост с

brctl addif virbr0 dummy0

Установите это, установите это, NAT от этого, и так далее.


1
Эти ответы кажутся более правильными, чем альтернатива, но в них недостаточно подробностей о создании интерфейса, который эквивалентен настройкам KVM по умолчанию (virbr0-nic).
pepper_chico

Постер вопроса, кажется, понимает, что делает мост и что делает фиктивное устройство, он просто хотел знать, как создавать подобные интерфейсы. Вы можете улучшить ответ, если считаете, что он может быть лучше.
suprjami

6

Для этой цели libvirt использует устройство TUN. Вы можете вручную создать это устройство с помощью следующей команды:

# /usr/bin/tunctl -t virbr0-nic

3

virbr0-nic обозначает виртуальный сетевой адаптер.

По сути, это мост между вашей физической сетевой картой и виртуальной сетевой картой вашей виртуальной машины.

Для управления мостовым интерфейсом вы можете использовать brctlкоманду. Вы можете перечислить все ваши мостовые интерфейсы с

brctl show 

и добавьте или измените мосты в соответствии с вашими потребностями. Для создания нового моста используйте

brctl addbr <name>

где <name>будет имя вашего нового моста (как virbr0-nic). Затем вы можете добавить интерфейсы к мосту с помощью

brctl addif <brname> <ifname>

Вы можете обратиться к справочной странице для получения дополнительной информации.


1
Это фактически не говорит о создании нового "virbr1-nic", просто новый "virbr1", чей интерфейс должен быть установлен ("virbr1-nic"), предполагается, что существовал ранее.
pepper_chico

Я не думаю, что это мост между физическим и виртуальным тоже. Я должен сделать маскировку между virbr0 и физическим для пакетов, чтобы маршрутизироваться.
Пит Эшдаун

2

Пока не ясно, какие именно типы устройств virbr0-nicи vnet1есть в ваших настройках. Существует несколько типов виртуальных устройств, которые могут быть полезны для включения в мост, некоторые из которых могут быть созданы с помощью ipкоманды.

Один вид виртуальных устройств - vethэто создание пар подключенных виртуальных интерфейсов Ethernet.

ip link add veth0 type veth peer name veth1

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

Виртуальный интерфейс другого типа - vlanэто создание виртуального интерфейса Ethernet, присоединенного к определенному тегу 802.1q на физическом интерфейсе:

ip link add link eth0 name eth0.10 type vlan id 10

Существует справочная страница с информацией о еще большем количестве типов виртуальных интерфейсов, которые можно создать с помощью ipкоманды. Название справочной страницы зависит от того, какую версию вы установили, я видел ее по имени ip-linkили просто ip.

Кроме того, если вы используете какую-либо виртуализацию, существуют виртуальные интерфейсы, соединяющие хост и ВМ. Особенности этого зависят от используемого вами решения для виртуализации.


1

но у меня нет этого / usr / bin / tunctl -t virbr0-nic, который установлен из кабины, и я не могу найти опцию удаления, когда я буду использовать виртуальную машину, хорошо, если она существует, но для работы в сети с systemd-networkd у меня много проблем с этим. Кабина будет использовать Network-Manager и файлы конфигурации из него. после установки моя сеть выходит из строя, все устройства и приложения работают со многими сбоями.

Если вы проверите 'ifconfig -a' после новой установки системы RHEL / CentOS 6,7, вы найдете имя интерфейсов virbr0. Вот пример из недавно установленной системы CentOS 7.

ifconfig -a

....

virbr0: flags=4099[UP,BROADCAST,MULTICAST]  mtu 1500
        inet 192.168.122.1  netmask 255.255.255.0  broadcast 192.168.122.255
        ether 52:54:00:d5:f2:0c  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

virbr0-nic: flags=4098[BROADCAST,MULTICAST]  mtu 1500
        ether 52:54:00:d5:f2:0c  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

Что такое интерфейс virbr0 Интерфейс моста virbr0 создается сетевой конфигурацией по умолчанию libvirtd. libvirtd - это сервис, который обеспечивает основу для работы хоста в качестве гипервизора. Поэтому, если вы не используете виртуализацию xen, вы можете либо запретить активацию сети libvirtd по умолчанию при загрузке, либо запретить активацию самой libvirtd при загрузке. Первый не позволит любому гостю виртуальной машины, подключенному к сети по умолчанию libvirtd, иметь сетевое подключение, а второй запретит запуск виртуальных машин вообще. Что хорошо, если вы не используете его. Отключить libvirtd по умолчанию сеть

  1. Вы можете временно отключить сеть по умолчанию в libvirtd с помощью команды virsh. Это не будет сохраняться при перезагрузке.

    virsh net-destroy default

  2. Чтобы навсегда отключить создание сети по умолчанию в libvirtd при загрузке:

    virsh net-autostart по умолчанию --disable

Удалить сеть libvirtd по умолчанию Чтобы окончательно удалить сеть libvirtd по умолчанию:

virsh net-undefine default

Чтобы навсегда отключить запуск службы libvirtd при загрузке на RHEL5 и RHEL6:

chkconfig libvirtd off

Чтобы навсегда отключить запуск службы libvirtd при загрузке на RHEL7:

systemctl disable libvirtd.service
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.