Wie entsteht virbr0-nic?

11

Wie kann ich eine virtuelle Netzwerkschnittstelle wie erstellen virbr0-nic? Ich versuche einen Weg zu finden, um eine Netzwerkkarte wie zu erstellen, virbr0-nicaber alles, was ich im Internet finden kann, ist, wie man eine Schnittstelle erstellt, die mit der physischen Schnittstelle verbunden ist eth0:0. Wenn ich schreibe

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

So virbr0ist die Brücke, an der virbr0-nicbefestigt ist. Also , wie virbr0-nicund vnet1erstellt?

Cosimo
quelle
Normalerweise ist das mit so etwas wie einer Brücke verbunden, die für ein bisschen Software spezifisch ist. Was versuchst du WIRKLICH zu tun?
Geselle Geek
Ich habe KVM installiert und festgestellt, dass es eine neue NIC virbr0-nic erstellt hat. Ich frage mich nur, wie ich meine eigene Netzwerkkarte wie diese erstellen kann.
Cosimo

Antworten:

10

Dies sind Dummy-Geräte. Du kannst rennen

modprobe dummy

So erstellen Sie eine Netzwerkschnittstelle mit dem Namen dummy0.

Wenn Sie mehr als ein Gerät möchten, können Sie beispielsweise 5 mit erstellen

modprobe dummy numdummies=5

Sie können diese Geräte dann wie jedes andere Netzwerkgerät steuern.

Geben Sie ihm eine MAC-Adresse mit

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

Geben Sie ihm eine IP-Adresse mit

ip addr add 10.0.0.1/24 dev dummy0

Fügen Sie es Ihrer vorhandenen Brücke mit hinzu

brctl addif virbr0 dummy0

Richten Sie es ein, setzen Sie es ab, NAT ausschalten und so weiter.

suprjami
quelle
1
Diese Antwort scheint korrekter zu sein als die Alternative , es fehlen jedoch Details zum Erstellen einer Schnittstelle, die den standardmäßig von KVM eingerichteten Schnittstellen entspricht (virbr0-nic).
Pepper_chico
Das Poster der Frage scheint zu verstehen, was die Bridge macht und was das Dummy-Gerät macht. Er wollte nur wissen, wie man ähnliche Schnittstellen erstellt. Sie können die Antwort gerne verbessern, wenn Sie der Meinung sind, dass sie besser sein könnte.
Suprjami
6

Das libvirt verwendet zu diesem Zweck das TUN-Gerät. Sie können dieses Gerät manuell erstellen, indem Sie den folgenden Befehl ausführen:

# /usr/bin/tunctl -t virbr0-nic
Max A.
quelle
3

virbr0-nic steht für Virtual Bridge NIC.

Es ist im Grunde eine Brücke zwischen Ihrer physischen Netzwerkkarte und der virtuellen Netzwerkkarte Ihrer virtuellen Maschine.

Um die überbrückte Schnittstelle zu verwalten, können Sie den brctlBefehl verwenden. Sie können alle Ihre überbrückten Schnittstellen mit auflisten

brctl show 

und fügen Sie Brücken entsprechend Ihren Anforderungen hinzu oder ändern Sie sie. Um eine neue Brücke zu erstellen, verwenden Sie

brctl addbr <name>

Wo <name>wird der Name Ihrer neuen Brücke sein (als virbr0-nic). Dann können Sie der Brücke Schnittstellen hinzufügen mit

brctl addif <brname> <ifname>

Weitere Informationen finden Sie auf der Manpage .

Giorgio Previtera
quelle
1
Dies sagt eigentlich nichts über das Erstellen eines neuen "virbr1-nic" aus, sondern nur über ein neues "virbr1", dessen einzustellende Schnittstelle ("virbr1-nic") impliziert ist, dass es zuvor existiert.
Pepper_chico
Ich denke auch nicht, dass es eine Brücke zwischen physisch und virtuell ist. Ich muss mich zwischen virbr0 und dem physischen maskieren, damit Pakete weitergeleitet werden.
Pete Ashdown
2

Es ist nicht klar , genau , welche Arten von Geräten virbr0-nicund vnet1ist in Ihrem Setup. Es gibt einige Arten von virtuellen Geräten, die nützlich sein können, um sie in eine Bridge aufzunehmen. Einige davon können mit dem ipBefehl erstellt werden .

Eine Art von virtuellen Geräten besteht darin veth, Paare verbundener virtueller Ethernet-Schnittstellen zu erstellen.

ip link add veth0 type veth peer name veth1

In diesem Beispiel veth0und veth1sind beliebige Schnittstellennamen , dass ich mit für das Beispiel kam. Diese Methode kann beispielsweise nützlich sein, wenn Sie eine der beiden Schnittstellen in einen anderen Netzwerk-Namespace verschieben möchten.

Eine andere Art von virtueller Schnittstelle besteht darin vlan, eine einzelne virtuelle Ethernet-Schnittstelle zu erstellen, die an ein bestimmtes 802.1q-Tag auf einer physischen Schnittstelle angeschlossen ist:

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

Es gibt eine Manpage mit Informationen zu noch mehr Arten von virtuellen Schnittstellen, die mit dem ipBefehl erstellt werden können. Der Name der Manpage hängt davon ab, welche Version Sie installiert haben, ich habe gesehen, dass sie benannt ist ip-linkoder nur ip.

Wenn Sie eine Virtualisierung verwenden, gibt es außerdem virtuelle Schnittstellen, die Host und VM verbinden. Die Einzelheiten hierzu hängen von der von Ihnen verwendeten Virtualisierungslösung ab.

Kasperd
quelle
1

aber ich habe nicht diese / usr / bin / tunctl -t virbr0-nic ich Sache, die vom Cockpit installiert wird und ich kann keine Löschoption finden, wenn ich eine virtuelle Maschine verwenden werde, ist es in Ordnung, wenn es existiert, aber für das Netzwerk mit systemd-networkd habe ich viele probleme damit. Cockpit verwendet Network-Manager und die Konfigurationsdateien davon. Nach der Installation fällt mein Netzwerk aus, alle Geräte und Anwendungen gehen mit vielen Fehlern hoch.

Wenn Sie nach einer Neuinstallation des RHEL / CentOS 6,7-Systems das 'ifconfig -a' überprüfen, finden Sie den Namen virbr0 der Schnittstelle. Hier ist ein Beispiel eines frisch installierten CentOS 7-Systems.

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

Was ist die virbr0-Schnittstelle? Die virbr0-Bridge-Schnittstelle wird durch die Standardnetzwerkkonfiguration von libvirtd erstellt. libvirtd ist der Dienst, der dem Host die Grundlage bietet, als Hypervisor zu fungieren. Wenn Sie also keine Xen-Virtualisierung verwenden, können Sie entweder verhindern, dass das Standardnetzwerk von libvirtd beim Booten aktiviert wird, oder Sie können verhindern, dass libvirtd selbst beim Booten aktiviert wird. Ersteres verhindert, dass ein an das Standardnetzwerk von libvirtd angeschlossener VM-Gast über eine Netzwerkverbindung verfügt, und letzteres verhindert, dass VMs überhaupt ausgeführt werden. Welches ist in Ordnung, wenn Sie es nicht verwenden. Deaktivieren Sie das libvirtd-Standardnetzwerk

  1. Sie können das Standardnetzwerk von libvirtd mit dem Befehl virsh vorübergehend deaktivieren. Dies bleibt beim Neustart nicht bestehen.

    virsh net-destroy default

  2. So deaktivieren Sie die Erstellung des libvirtd-Standardnetzwerks beim Booten dauerhaft:

    virsh net-autostart default --disable

Libvirtd-Standardnetzwerk entfernen So entfernen Sie das libvirtd-Standardnetzwerk dauerhaft:

virsh net-undefine default

So deaktivieren Sie den libvirtd-Dienst dauerhaft beim Starten auf RHEL5 und RHEL6:

chkconfig libvirtd off

So deaktivieren Sie den libvirtd-Dienst dauerhaft beim Starten auf RHEL7:

systemctl disable libvirtd.service
Aktony
quelle