Netzwerke unter Linux


© November 2020, Letzte Änd. 01.11.20

--- diese Seite ist noch unvollständig ---

Themen

Bestandsaufnahme

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...

Welche Schnittstellen habe ich?

/usr/sbin/ifconfig                               veraltet
enp37s0: flags=4163  mtu 1500
        inet 192.168.178.35  netmask 255.255.255.0  broadcast 192.168.178.255

lo: flags=73  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        loop  txqueuelen 1000  (Local Loopback)

virbr0: flags=4099  mtu 1500
        inet 192.168.122.1  netmask 255.255.255.0  broadcast 192.168.122.255

wlp36s0: flags=4099  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:  mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    inet 127.0.0.1/8 scope host lo
2: enp37s0:  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:  mtu 1500 qdisc mq state DOWN group default qlen 1000

4: virbr0:  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:  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 es eine Ethernet- enp37s0, eine Loop lo und eine Wlan-Schnittstelle wlp36s0 gibt.
Eine Bridge wie z.B. virbr0 existiert bereits.

Interessiert einem nur eine Schnittstelle kann man z.B. folgendes eingeben ip address show dev enp37s0.

Zur Erklärung der Begriffe

Welche Verbindungen sind geroutet?

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 eine Adresse zwischen 192.168.178.1 und 192.168.178.255
(augedrückt durch die /24 entsprechend Bit 8:31 = hexFFF0) oder anders dargestellt 255.255.255.0
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 bis 192.168.122.255)

Interessieren einem nur die Schnittstellen-Brücken kann man z.B. folgendes eingeben ip address show type bridge.

Verbindung aktiv?

Aktive Verbindungen habe ich mir wie folgt über den veralteten Befehl nmcli angeschaut.

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

Eine Netzwerk-Brücke einrichten

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.

Netzwerk auf dem Host einrichten

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.

Dann sichere ich die Konfiguration der Datei /etc/network/interfaces um sie danach zu editieren.

Siehe
debian.org the virtual interface
debian.org BridgeNetworkConnections

su
cd /etc/network/
cp interfaces interfaces_backup
nano interfaces
...
auto lo
iface lo inet loopback                           # ist der Ursprungsteil
                                                 # mit DHCP der neue Teil
auto br0                                         # bridge startet nach dem booten autom. 
iface br0 inet dhcp                              # DHCP 
      bridge_ports enp37s0                       # verbunden mit enp37s0 
#     bridge_ports none                          # falls br0 für sich bleiben soll      
      bridge_stp off                             # im Falle von mögl. Loops, aktivieren
      bridge_fd 0                                # forward ohne Verzögerung
      bridge_maxwait 0                           # keine Wartezeit

Die geänderte Konfiguration wird erst nach Neustart des Netzwerkes wirksam.

su
systemctl restart networking                     führt zur Fehlermeldung
Job for networking.service failed because the control process exited with error code.
See "systemctl status networking.service" and "journalctl -xe" for details.

systemctl status networking
● networking.service - Raise network interfaces
   Loaded: loaded (/lib/systemd/system/networking.service; enabled; vendor preset: enabled)
   Active: failed (Result: exit-code) since Sat 2020-10-31 01:27:20 CET; 41s ago
     Docs: man:interfaces(5)
  Process: 4472 ExecStart=/sbin/ifup -a --read-environment (code=exited, status=1/FAILURE)
 Main PID: 4472 (code=exited, status=1/FAILURE)

Oct 31 01:27:20 b41 dhclient[4524]: than a configuration issue please read the section on submitting
Oct 31 01:27:20 b41 dhclient[4524]: bugs on either our web page at www.isc.org or in the README file
Oct 31 01:27:20 b41 dhclient[4524]: before submitting a bug.  These pages explain the proper
Oct 31 01:27:20 b41 dhclient[4524]: process and the information we find helpful for debugging.
Oct 31 01:27:20 b41 dhclient[4524]: 
Oct 31 01:27:20 b41 dhclient[4524]: exiting.
Oct 31 01:27:20 b41 ifup[4472]: ifup: failed to bring up br0
Oct 31 01:27:20 b41 systemd[1]: networking.service: Main process exited, code=exited, status=1/FAILURE
Oct 31 01:27:20 b41 systemd[1]: networking.service: Failed with result 'exit-code'.
Oct 31 01:27:20 b41 systemd[1]: Failed to start Raise network interfaces.

journalctl -xe
Prerequisites: You need kvm up and running If you don't want to run as root, then the user needs to have rw access to /dev/kvm The following commands must be installed on the host system and executed as root: ip tunctl (deprecated). Use ip tuntap and ip link instead Solution: You need to create a bridge, e-g: ip link add br0 type bridge ; ifconfig br0 up # brctl addbr br0 (deprecated) https://www.linux-kvm.org/page/Networking Verweist auf https://www.isc.org/ virsh net-destroy br0 Network br0 destroyed virsh net-undefine br0 Network br0 has been undefined

a

b

$ bridge iptables -S -P INPUT ACCEPT -P FORWARD ACCEPT -P OUTPUT ACCEPT -A INPUT -i virbr0 -p udp -m udp --dport 53 -j ACCEPT -A INPUT -i virbr0 -p tcp -m tcp --dport 53 -j ACCEPT -A INPUT -i virbr0 -p udp -m udp --dport 67 -j ACCEPT -A INPUT -i virbr0 -p tcp -m tcp --dport 67 -j ACCEPT -A FORWARD -d 192.168.122.0/24 -o virbr0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT -A FORWARD -s 192.168.122.0/24 -i virbr0 -j ACCEPT -A FORWARD -i virbr0 -o virbr0 -j ACCEPT -A FORWARD -o virbr0 -j REJECT --reject-with icmp-port-unreachable -A FORWARD -i virbr0 -j REJECT --reject-with icmp-port-unreachable -A OUTPUT -o virbr0 -p udp -m udp --dport 68 -j ACCEPT https://www.tecmint.com/ifconfig-vs-ip-command-comparing-network-configuration/ https://www.tecmint.com/ip-command-examples/ https://www.cyberciti.biz/faq/linux-ip-command-examples-usage-syntax/ https://www.golinuxcloud.com/linux-ip-command/ https://tldp.org/HOWTO/Traffic-Control-HOWTO/intro.html https://tldp.org/HOWTO/Traffic-Control-HOWTO/classless-qdiscs.html https://wiki.archlinux.org/index.php/Network_Configuration https://games4linux.de/debian-9-stretch-das-ist-neu-dist-upgrade-erlaeutert/

Quellen

Aufgrund der Menge habe ich es so weit es geht alphabetisch sortiert um Dupletten zu vermeiden.

cyberciti.biz   how-to-install-kvm-on-ubuntu-20-04-lts-headless-server
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/
mit bridge-utils; systemctl restart networking

cyberciti.biz   How to configure network interfaces as a Bridge
mit bridge-utils (); /etc/network/interfaces; service networking stop; service networking start; verify with ip addr show; brctl show

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

debian.org   manpage virtinst, mit allen erdenklichen Optionen ;-)

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

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   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.

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

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...

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

https://www.thomas-krenn.com/de/wiki/KVM_mit_OpenPOWER#Netzwerkkonfiguration https://www.techotopia.com/index.php/Creating_a_RHEL_KVM_Networked_Bridge_Interface https://searchservervirtualization.techtarget.com/tip/Using-bridge-devices-as-a-connection-in-a-KVM-virtual-network https://documentation.suse.com/sles/15-SP1/html/SLES-all/cha-libvirt-networks.html

Zum Anfang