Leider gibt es etliche Web-Seiten, welche noch veraltete net-tools Befehle nutzen - siehe linuxfoundation.org. Daher versuche ich neue iproute2 Befehle zu beschreiben und erwähne, der Vollständigkeit halber, noch die alten net-tools Befehle. Ich denke dann kann man schneller den Unterschied erkennen...
Zum Anfang
/usr/sbin/ifconfig veraltet enp37s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.178.35 netmask 255.255.255.0 broadcast 192.168.178.255 lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 loop txqueuelen 1000 (Local Loopback) virbr0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500 inet 192.168.122.1 netmask 255.255.255.0 broadcast 192.168.122.255 wlp36s0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
Der besseren Übersicht halber habe ich die Zeilen mit
"device memory, inet6, ether, RX, TX" entfernt.
Was in diesem Beispiel nicht auffällt,
ifconfig
zeigt nur die aktivierten Schnittstellen.
Stattdessen wird der Befehl ip addr show
zur Anzeige der Geräte-Adresse verwendet.
ip address show Kurzform: ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 inet 127.0.0.1/8 scope host lo 2: enp37s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 inet 192.168.178.35/24 brd 192.168.178.255 scope global dynamic noprefixroute enp37s0 3: wlp36s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN group default qlen 1000 4: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000 inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0 5: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr0 state DOWN group default qlen 1000
Etwas zusammen gekürzt (IPv6, valid_lft, link/ entfernt)
kann man trotzdem noch erkennen, dass folgende Schnittstellen
in diesem Beispiel existieren.
lo:
eine Loop-Schnittstelle (lokal Host) 127.0.0.1enp37s0:
eine externe Ethernet-Schnittstelle "en" (benutzt)wlp36s0:
eine Wlan-Schnittstelle "wl" (unbenutzt)
virbr0:
ist ein Switch oder eine Bridge, welche mit libvirt
installiert wurde. Zum Anfang
Weitere Möglichkeiten um die Ausgabe einzuschränken sind z.B. folgende.
ip -4 addr show dev virbr0
Zum Anfang
Ursprünglich hätte ich dafür route -n
verwendet,
wobei -n für die Anzeige der numerischen Adresse, statt symbolischen Namen, steht.
/usr/sbin/route -n veraltet! Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 192.168.178.1 0.0.0.0 UG 100 0 0 enp37s0 169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 enp37s0 192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0 192.168.178.0 0.0.0.0 255.255.255.0 U 100 0 0 enp37s0
Ein weiterer veralteter Befehl ist brctl
su apt install bridge-utils exit /sbin/brctl show virbr0 veraltet bridge name bridge id STP enabled interfaces virbr0 8000.525400985a1d yes virbr0-nic
Ebenso kann die Routing-Tabelle auch durch ip route show
oder ip route list
dargestellt werden.
ip route show Kurzform: ip r default via 192.168.178.1 dev enp37s0 proto dhcp metric 100 169.254.0.0/16 dev enp37s0 scope link metric 1000 192.168.122.0/24 dev virbr0 proto kernel scope link src 192.168.122.1 linkdown 192.168.178.0/24 dev enp37s0 proto kernel scope link src 192.168.178.35 metric 100
Zur besseren Optik habe ich die Zeilen leicht verschoben...
Per DHCP bekomme ich von meiner Fritz-Box Router-Adresse 192.168.178.1
eine Adresse zugewiesen.
In diesem Fall wurde vom Router 192.168.178.35
zugewiesen.
Mit statischer IP zwischen 169.254.0.0
und 169.254.255.255
darf auch an den Router ein Gerät angeschlossen werden.
Das passt gut zur Dokumentation der Fritzbox wo 169.254.1.1
die Notfall-IP Adresse ist.
Dann gibt es noch ein lokales Netzwerk virbr0
welches einen eigenen IP-Breich bekommen hat.
192.168.122.0 - 192.168.122.255
.
Zum Anfang
Aktive Verbindungen habe ich mir wie folgt über den veralteten Befehl nmcli
angeschaut.
nmcli heißt soviel wie NetworkManager command line interface.
nmcli connection show --active veraltet NAME UUID TYPE DEVICE virbr0 f8eeaed5-eb13-482f-9963-134443c493e1 bridge virbr0 Wired connection 1 e59515c8-0b5e-4daa-8ac6-3be61ca77df8 ethernet enp37s0
Details zu einer Verknüpfung einer Netzwerkschnittstelle (hier virbr0-nic
)
kann man auch über folgenden Befehl bekommen.
ip link show virbr0-nic Kurzform: ip l s virbr0-nic 5: virbr0-nic:mtu 1500 qdisc pfifo_fast master virbr0 state DOWN mode DEFAULT group default qlen 1000 link/ether 52:54:00:98:5a:1d brd ff:ff:ff:ff:ff:ff
Zum Anfang
Grob kann man sagen, das Thema Netzwerk-Brücke für eine VM - virtual maschine gliedert sich in 2 Teile.
Hier wird nur der erste Teil betrachtet. Der 2. Teil ist in KVM virsh beschrieben.
Zum Anfang
Die Default-Schnittstelle ist nicht die optimalste,
da Host- und Gast-System sich im Default-Fall die selbe IP-Adresse via NAT teilen.
Ein paar Grundlagen dazu, sind gut unter libvirt.org VirtualNetworking beschrieben.
Besser ist es eine sogenannte Bridge einzurichten,
sodass das Gast-System eine andere IP-Adresse zugewiesen bekommt.
Zum Einen kann ich dann Netzwerke etablieren, welche nur innerhalb des Host-Systems laufen
und zum Anderen kann ich den Zugriff Aufgrund einer anderen IP-Adresse besser im Router kontrollieren.
nmtui
, bridge-utils
. bridge-utils
DEPRECATED ist und stattdessen bridge
verwendet werden soll. brctl
(ein Teil des Paketes bridge-utils)...
Zum Anfang
nmtui
erstellen
nmtui
ist das Text user interface für den NetworkManager-Daemon.
Für Veränderungen sind Admin-Rechte erforderlich.
su nmtui ┌─┤ NetworkManager TUI ├──┐ │ │ │ Please select an option │ │ │ │ Edit a connection │ │ Activate a connection │ │ Set system hostname │ │ │ │ Quit │ │ │ │ <OK> │ │ │ └─────────────────────────┘
Im ersten Menüeintrag Edit a connection
können wir ein weiteres Netzwerk
via Add
hinzufügen.
Add
erreiche ich via TAB und RETURN.
┌───────────────────────────────────────┐
│ │
│ ┌─────────────────────────┐ │
│ │ Ethernet ↑ │ <Add> │
│ │ Wired connection 1 ▒ │ │
│ │ Bridge ▒ │ <Edit...> │
│ │ virbr0 ▒ │ │
│ │ ▒ │ <Delete> │
│ │ ▒ │ │
│ │ ▒ │ │
│ │ ▮ │ │
│ │ ▒ │ │
│ │ ▒ │ │
│ │ ▒ │ │
│ │ ▒ │ │
│ │ ▒ │ │
│ │ ▒ │ │
│ │ ▒ │ │
│ │ ↓ │ <Back> │
│ └─────────────────────────┘ │
│ │
└───────────────────────────────────────┘
Dann kann ich Bridge
auswählen
und mit Create
fortsetzen.
┌──────────────────────┤ New Connection ├──────────────────────┐ │ │ │ Select the type of connection you wish to create. │ │ │ │ Ethernet ↑ │ │ InfiniBand ▒ │ │ Wi-Fi ▮ │ │ Bond ▒ │ │ Bridge ↓ │ │ │ │ <Cancel> <Create> │ │ │ └──────────────────────────────────────────────────────────────┘
Nun kann ich dem Tier noch einen Namen geben z.B. virbr1
Über TAB gelange ich zum Menüpunkt Add
.
┌───────────────────────────┤ Edit Connection ├───────────────────────────┐ │ ↑│ │ Profile name virbr1__________________________________ ▮│ │ Device virbr1__________________________________ ▒│ │ ▒│ │ ╤ BRIDGE <Hide> ▒│ │ │ Slaves ▒│ │ │ ┌───────────────────────────────────────────────┐ ▒│ │ │ │ ↑ │ <Add> ▒│ │ │ │ ▮ │ ▒│ │ │ │ ▒ │ <Edit...> ▒│ │ │ │ ▒ │ ▒│ │ │ │ ▒ │ <Delete> ▒│ │ │ │ ↓ │ ▒│ │ │ └───────────────────────────────────────────────┘ ▒│ │ │ Aging time 300_______ seconds ▒│ │ │ [X] Enable IGMP snooping ▒│ │ │ [X] Enable STP (Spanning Tree Protocol) ▒│ │ │ Priority 32768_____ ▒│ │ │ Forward delay 15________ seconds ▒│ │ ↓│ └─────────────────────────────────────────────────────────────────────────┘
Hier kann ich als Slave-Verbindung Ethernet
auswählen.
und die neue Brücke mit Create
erzeugen.
┌───────────────────────────┤ Edit Connection ├───────────────────────────┐ │ ↑│ │ Profile name virbr1__________________________________ ▮│ │ Device virbr1__________________________________ ▒│ │ ▒│ │ ╤ BR┌──────────────────────┤ New Connection ├──────────────────────┐ ▒│ │ │ Sl│ │ ▒│ │ │ ┌─│ Select the type of slave connection you wish to add. │ ▒│ │ │ │ │ │ ▒│ │ │ │ │ Ethernet ↑ │ ▒│ │ │ │ │ Wi-Fi ▮ │ ▒│ │ │ │ │ VLAN ▒ │ ▒│ │ │ │ │ ▒ │ ▒│ │ │ │ │ ↓ │ ▒│ │ │ └─│ │ ▒│ │ │ │ <Cancel> <Create> │ ▒│ │ │ [X│ │ ▒│ │ │ [X└──────────────────────────────────────────────────────────────┘ ▒│ │ │ ▒│ │ │ Forward delay 15________ seconds ▒│ │ ↓│ └─────────────────────────────────────────────────────────────────────────┘
Nun wähle ich noch die physikalische Schnittstelle aus, mit dem die Brücke verbunden werden soll.
In meinen Fall ist das enp37s0
.
┌─────────────────────────┤ Edit Connection ├──────────────────────────┐ │ │ │ Profile name Ethernet connection 1___________________ │ │ Device enp37s0_________________________________ │ │ │ │ ═ ETHERNET <Show> │ │ │ │ ╤ BRIDGE PORT <Hide> │ │ │ Priority 32________ │ │ │ Path cost 100_______ │ │ │ [ ] Hairpin mode │ │ └ │ │ [X] Automatically connect │ │ [X] Available to all users │ │ │ │ <Cancel> <OK> │ │ │ │ │ │ │ │ │ │ │ └──────────────────────────────────────────────────────────────────────┘
Da mein PC über DHCP vom Router die Adresse erhält, sind keine weiteren Aktionen nötig.
Also nach unten scrollen und die Seite mit OK
abschließen.
┌───────────────────────────┤ Edit Connection ├───────────────────────────┐
│ ↑│
│ │ ▒│
│ │ Aging time 300_______ seconds ▒│
│ │ [X] Enable IGMP snooping ▒│
│ │ [X] Enable STP (Spanning Tree Protocol) ▒│
│ │ Priority 32768_____ ▒│
│ │ Forward delay 15________ seconds ▒│
│ │ Hello time 2_________ seconds ▒│
│ │ Max age 20________ seconds ▒│
│ │ Group forward mask 0_________ ▒│
│ └ ▒│
│ ▒│
│ ═ IPv4 CONFIGURATION <Automatic> <Show> ▒│
│ ═ IPv6 CONFIGURATION <Automatic> <Show> ▒│
│ ▒│
│ [X] Automatically connect ▒│
│ [X] Available to all users ▒│
│ ▒│
│ <Cancel> <OK>▮│
│ ↓│
└─────────────────────────────────────────────────────────────────────────┘
Nun gehe ich erst einmal zuück ins Ursprungsmenü
┌───────────────────────────────────────┐
│ │
│ ┌─────────────────────────┐ │
│ │ Ethernet ↑ │ <Add> │
│ │ Wired connection 1 ▒ │ │
│ │ Bridge ▒ │ <Edit...> │
│ │ virbr0 ▒ │ │
│ │ virbr1 ▒ │ <Delete> │
│ │ ▒ │ │
│ │ ▒ │ │
│ │ ▒ │ │
│ │ ▒ │ │
│ │ ▒ │ │
│ │ ▒ │ │
│ │ ▒ │ │
│ │ ▒ │ │
│ │ ▒ │ │
│ │ ▮ │ │
│ │ ↓ │ <Back> │
│ └─────────────────────────┘ │
│ │
└───────────────────────────────────────┘
Dort verändere ich die aktiven Verbindungen.
┌─┤ NetworkManager TUI ├──┐ │ │ │ Please select an option │ │ │ │ Edit a connection │ │ Activate a connection │ │ Set system hostname │ │ │ │ Quit │ │ │ │ <OK> │ │ │ └─────────────────────────┘
Nun ist es noch erforderlich wired zu trennen und virbr1 zu verbinden.
Das Ergebnis sollte dann wie folgt aussehen
Also kein *
vor Wired connection 1
┌──────────────────────────────────────────┐ │ │ │ ┌─────────────────────────┐ │ │ │ Wired ↑ │ <Activate> │ │ │ Wired connection 1 ▒ │ │ │ │ ▒ │ │ │ │ Bridge (virbr0) ▒ │ │ │ │ * virbr0 ▮ │ │ │ │ ▒ │ │ │ │ Bridge (virbr1) ▒ │ │ │ │ * virbr1 ▒ │ │ │ │ ▒ │ │ │ │ ▒ │ │ │ │ ▒ │ │ │ │ ▒ │ │ │ │ ▒ │ │ │ │ ▒ │ │ │ │ ▒ │ │ │ │ ↓ │ <Back> │ │ └─────────────────────────┘ │ │ │ └──────────────────────────────────────────┘
Damit die neue Konfiguration benutzbar ist,
muß das Netzwerk unter DEB 10 wie folgt neu gestartet werden.
sudo systemctl restart NetworkManager.service
Zum Anfang
vmm
verwenden
Im Virtual Machine Manager virt-manager
kann ich nun die neu etablierte Bridge verwenden,
indem ich die Konfiguration meines virtuellen Klienten anpasse.
Das geschieht durch Selektion der virtuellen Maschine gefolgt von open
.
Nun klicke ich auf die Glühbirne Show virtual hardware details
und dann auf die Netzwerkschnittstelle (NIC).
Hier ändere ich das Netzwerkinterface zur Bridge virbr1
.
Als pseudo Hardware verwende ich einen alten Intel Netzwerkcontroller e1000e
Nach dem Speichern der veränderten Konfiguration und Start der virtuellen Maschine
sollte in der Fritzbox die neu genutzte Adresse zu sehen sein.
Zum Anfang
Aufgrund der Menge habe ich es so weit es geht alphabetisch sortiert um Dupletten zu vermeiden.
archlinux.org Network configuration
ping; iproute2; enable, disable; static/dynamic IP; routing table; DHCP; etc.
cyberciti.biz how-to-install-kvm-on-ubuntu-20-04-lts-headless-server - 2021
Bridge mit nmcli erzeugen; VM erzeugen mit virt-install; Display via virsh vncdisplay;
VM erzeugen mit virt-builder; etc.
cyberciti.biz How to setup Bridge br0 on Ubuntu - 2020
mit bridge-utils; systemctl restart networking
cyberciti.biz How to configure network interfaces as a Bridge - 2021
mit bridge-utils (); /etc/network/interfaces; service networking stop; service networking start;
verify with ip addr show; brctl show
cyberciti.biz Linux ip Command Examples - 2022
datacenter-insider.de
virsh Verwaltung der KVM (2015)
Win-7 Installation über virsh (veraltet, virsh Dialog funktioniert nicht mehr bei DEB 10),
virt-install, virsh Kommandos; virsh migrate
debian.org the_virtual_interface; Kapitel 5. Netzwerkkonfiguration;
debian.org
manpage von virt-install, mit allen erdenklichen Optionen ;-)
debian.org BridgeNetworkConnections
dedoimedo.com How to setup bridged networking in KVM (2011)
creating bridge via brctl, virt-manager, some dirty bridging hacks,
digitalocean.com how to use systemctl (2015)
Systemd versus SysV; Services: start, stop, re-start, re-load, enable, disable, status, unmask, etc.
funtoo.org
libvirt (Anleitung für DEB nicht so geeignet)
via NAT, spice, Virt-Manager, BIOS-Versionen, XML editing to return unused space
funtoo.org Windows_10_Virtualization_with_KVM
Win mit VirtIO-Treiber; script to install Win; using spicy
golinuxcloud.com
virt-install examples; KVM virtualisation commands cheatsheet
virt-install, virt-viewer, tigervnc
golinuxcloud.com
how to configure network bridge via nmtui on CentOS
nmtui, /etc/sysconfig/network-... existiert nicht unter DEB,
golinuxcloud.com
nmcli-command-examples-cheatsheet-centos-rhel
golinuxcloud.com
16 Linux ip command examples to configure network interfaces (cheatsheet)
games4linux.de
Debian 9 «Stretch»: Das ist neu & Dist-Upgrade erläutert
gitconnected.com
How to Setup Bridge Networking with KVM on Ubuntu 20.04 - 2020
howtogeek.com How to Use the ip Command on Linux - 2020
isc.org BIND9; DHCP;
linuxconfig.org
How to use bridged networking with libvirt and KVM - 2021
libvirt.org Domain XML format
Ein paar Netzwerk-Grundlagen (NAT, routed, isolated) und Konfiguration mit virt-manager,
Netzwerksteuerung mit virsh.
linuxhint.com debian_/etc/network/interfaces
/etc/network/interfaces; DHCP or static address, two interfaces, network bonding, logging
linuxhint.com debian_/etc/network/interfaces
gateways, masquerading, network bonding, etc.
linux-kvm.org
Configuring Guest Networking
linux-kvm.org Ubuntu Networking
bridge-utils;
linuxtechi.com install-kvm-hypervisor-on-centos-7-and-rhel-7
bridge interface, virt-manager, virt-install
ostechnix.com manage-kvm-virtual-machines-with-virsh-program
virsh: help, list, save, restore, destroy, shutdown, dumpxml, create, edit, undefine, net- commands
raymii.org install online Distro with virt-install
fallocate, div. Beispiele virt-install, osinfo-query os, etc.
suse.com 13 Managing Networks
tecmint.com How to manage KVM via command line tools (2015)
virsh create storage pool, virt-install
tecmint.com 11 best tools to access remote linux desktop (2019)
TigerVNC, RealVNC, TeamViewer, Remmina, NoMachine, Apache Guacamole, XRDP, FreeNX, X2Go, Xpra
tecmint.com
install-and-configure-kvm-in-linux
How to Create Virtual Machines in Linux Using KVM (Kernel-based Virtual Machine) – Part 1
tecmint.com
How to Use IP Command in Linux [24 Useful Examples]
techotopia.com
Installing a KVM Guest-OS from the Command-line (virt-install)
virt-install Parameter-Tabelle & ein Beispiel (ein bischen wenig...)
thomas-krenn.com
virsh Werkzeug zur Verwaltung virtueller Maschinen
Grundlagen, Virsh-Parameter-Tabelle; virsh: VM starten, entfernen, etc.; XML von VM editieren - mehr nicht...
thomas-krenn.com
Netzwerkkonfiguration
bridge-utils
techotopia.com
Creating a RHEL 8 KVM Networked Bridge Interface
techtarget.com
virtual machine (VM)
tldp.org
Introduction to Linux Traffic Control
tldp.org
6. Classless Queuing Disciplines
ubuntu.com KVM Networking
NAT & bridged; via bridge-utils & anderen Methoden; Private Virtual Switch; boot over network
ubuntuusers.de virsh
virt-install; virsh: start, shutdown via ACPI -> acpid für den Gast, console (Debugging), virt-top
Zum Anfang