Linux Netzwerkkonfiguration - Workshop Dezember 2024
1 Agenda
- Netzwerkkonfiguration
- Linux Befehle zur Netzwerkkonfiguration
- RedHat und NetworkManager
- SUSE und Wicked
- Ubuntu und Netplan
- Systemd-Networkd
2 Lab-Umgebung Internet
- Benutzername:
user - Passwort:
network - Die virtuellen Maschinen im Internet haben je zwei Netzwerkschnittstellen
eth0: Verbindung mit dem Interneteth1: Privates Netzwerk
- Maschinen im Internet
| Nummer | Name | IP-Adresse eth0 | URL |
|---|---|---|---|
| 1 | Carsten | 159.223.23.148 | https://networkk01.dane.onl |
| 2 | Bernhard | 164.92.180.181 | https://networkk02.dane.onl |
| 3 | Alexander | 159.89.100.218 | https://networkk03.dane.onl |
| 4 | Maikl | 164.92.138.252 | https://networkk04.dane.onl |
| 5 | Helmut | 159.89.110.163 | https://networkk05.dane.onl |
| 6 | Stefan | 159.65.124.180 | https://networkk06.dane.onl |
| 7 | Jürgen | 159.65.122.143 | https://networkk07.dane.onl |
| 8 | Leon | 139.59.141.178 | https://networkk08.dane.onl |
| 9 | Michael | 139.59.154.247 | https://networkk09.dane.onl |
| 10 | Christine | 139.59.153.66 | https://networkk10.dane.onl |
| 11 | Johannes | 159.65.114.208 | https://networkk11.dane.onl |
| 12 | Georg | 139.59.139.191 | https://networkk12.dane.onl |
| 13 | Thomas | 139.59.153.139 | https://networkk13.dane.onl |
| 14 | Andreas | 139.59.157.18 | https://networkk14.dane.onl |
| 15 | Christian | 139.59.149.33 | https://networkk15.dane.onl |
3 Lab-Umgebung Lokal
- Virtuelle Maschinen im WLAN
linuxlab - Benutzername:
user - Passwort:
network - Die (lokalen) virtuellen Maschinen haben je zwei Netzwerkschnittstellen
eth0: Verbindung in das Lab-Netzwerketh1: Verbindung der VMs untereinander
4 Netzwerkkonfiguration
4.1 IP-Adressen
- IPv4 Adressen sind intern eine 32bit Zahl. Diese Zahl wird als 4 Gruppen zu
je einem Byte (Octet) geschrieben
- Beispiel: 192.0.2.10
- Wird eine IPv4 Adresse mit weniger Bytes/Octets geschrieben, so ist dies kein
Fehler sondern die fehlenden Bytes werden mit Nullen "0" aufgefüllt
# ping 1.1 PING 1.1 (1.0.0.1) 56(84) bytes of data.
- Octets/Bytes in IPv4 Adresse mit führenden "0" werden oktal (Basis 8) interpretiert:
# ping 0100.0200.010.001 PING 0100.0200.010.001 (64.128.8.1) 56(84) bytes of data.
- ACHTUNG: Diese Schreibweisen können auch gemischt werden und werden von Angreifern benutzt um bösartige Konfigurationen zu verschleiern
4.2 Aufbau von IPv4 Adressen
- Classless vs. Class-based IPv4 Adressen
- In den Anfangstagen von IPv4 waren IPv4 Adressen in Klassen (Classes) eingeteilt.
- Class A: 10.0.0.0/8
- Class B: 172.16.0.0/16
- Class C: 192.168.1.0/24
- Class D: 224.0.0.0 (Multicast)
- Class E: 240.0.0.0 (Reserviert)
- Der Anteil des Netzbereiches der IPv4 Adresse war allein durch die ersten Bits der Adresse vorbelegt, es gab keine Subnetzmasken und keine Prefix-Längen-Angaben
- Diese Klassenunterteilung gibt es seit Anfang der 1990er Jahre nicht mehr. Seitdem werden classless Adressen benutzt, welche eine variable Prefix-Länge besitzen
- In den Anfangstagen von IPv4 waren IPv4 Adressen in Klassen (Classes) eingeteilt.
- IPv4 Adressen setzen sich aus dem Netzwerk-Teil (Bits der Adresse von der linken Seite gezählt) und dem Host-Teil (Bits der Adresse von der rechten Seite gezählt) zusammen
- In den ersten 20 Jahren (ca. 199x-200x) der IPv4 Classless-Adressen wurden diese
häufig zusammen mit einer Subnetzmaske spezifiziert:
192.168.1.10 Maske: 255.255.255.0
- Seit dem Jahrtausendwechsel (und der Verbreitung vom IPv6) werden
IPv4 Adressen (wie IPv6 Adressen) in der Regel als Kombination
aus IP-Adresse und Prefix-Länge geschrieben:
192.168.1.10/24 - Die Prefix-Länge beschreibt, welche Bits der Adresse von links
aus gezählt vom Netzwerkteil der Adresse gehören. Die restlichen
Bits machen daher die Host-Adresse der IP-Adresse aus
Prefixnotation Subnetzmaske /32 255.255.255.255 /30 255.255.255.252 /28 255.255.255.240 /24 255.255.255.0 /16 255.255.0.0 /8 255.0.0.0
- Seit dem Jahrtausendwechsel (und der Verbreitung vom IPv6) werden
IPv4 Adressen (wie IPv6 Adressen) in der Regel als Kombination
aus IP-Adresse und Prefix-Länge geschrieben:
5 Linux-Befehle zur IP-Konfiguration
- Die Befehle zur Netzwerkkonfiguration wurden in Linux ursprünglich
von den BSD-Unix-Systemen übernommen:
ifconfig,arp,route,netstat - Diese Befehle sind aber (unter Linux) veraltet und werden nicht
mehr weiter entwickelt
- Diese Befehle sollten unter Linux nicht mehr verwendet werden,
obwohl diese noch aus dem Paketen installierbar sind und häufig
auch vorinstalliert wurden. Diese Befehle wurde nicht auf einige
neue Netzwerktechnologien angepasst und können die
Netzwerkkonfiguration negativ beeinflussen. Auch zeigen diese
Befehle die Netzwerkkonfiguration in modernen Linux-Systemen
nicht immer akkurat an (
ifconfigzeigt z.B. nur eine IPv4 Adresse pro Netzwerkschnittstelle, auch wenn mehrere Adressen auf einer Schnittstelle konfiguriert sind). - Unter anderen Unix-Systemen (FreeBSD, NetBSD, OpenBSD, Solaris
…) werden diese Befehle weiterentwickelt, hier entfernen sich
Linux und die anderen Unix-Systeme voneinander und sind nicht
mehr kompatibel
Funktion Alter Befehl Neuer Befehl Netzwerk Hardware konfigurieren ethtoolip linkARP Protokoll arpip neighIP Adressen konfigurieren ifconfigip addressRouten konfigurieren routeip routeNetzwerkinformationen abrufen netstatss(Socket Status)DNS Namensauflösung nslookupdig
- Diese Befehle sollten unter Linux nicht mehr verwendet werden,
obwohl diese noch aus dem Paketen installierbar sind und häufig
auch vorinstalliert wurden. Diese Befehle wurde nicht auf einige
neue Netzwerktechnologien angepasst und können die
Netzwerkkonfiguration negativ beeinflussen. Auch zeigen diese
Befehle die Netzwerkkonfiguration in modernen Linux-Systemen
nicht immer akkurat an (
5.1 IP-Befehl
- Der IP-Befehl fasst die Funktionen der alten Befehle
ethtool,arp,ifconfigundroutezusammen. Zusätzlich bietetipFunktionen zur Konfiguration von ipsec, /segment-routing, Netzwerk-/Namespaces, Eternet-over-TCP-Tunnel (ltp), Multicast, VRF, Tunnel (z.B. GRE) - Der
ipBefehl nimmt Parameter auf der Kommandozeile entgegen. Befehlsparameter werden mit Leerzeichen getrennt angegeben und beziehen sich auf die Funktion desipBefehls. Konfigurationsparameter verändern die Ausführung desipBefehls und beginnen mit einem-und einem Buchstaben oder einem oder mehreren Worten verbunden mit Bindestrichen (ASCII-Minus). Die kurzen Parameter können beimipBefehl nicht kombiniert werden!- Beispiel kurzer Parameter:
ip -4 route - Beispiel langer Parameter:
ip -timestamp address show
- Beispiel kurzer Parameter:
- Wichtige globale Parameter des
ipBefehls-4nur auf IPv4 arbeiten-6nur auf IPv6 arbeiten-sStatistiken ausgeben-dmehr Details-rIP-Adressen in Hostnamen auflösen-n <nsname>Befehl in Netzwerk-Namespace ausführen-hDaten in für Menschen besser lesbare Einheiten ausgeben-jDaten im JSON Format ausgeben (gut für Scripting)-pJSON-Daten aufbereiten
- Sub-Befehle des
ipBefehl können beliebig verkürzt werden, solange der Befehl eindeutig ist
# Voller Befehl ip address show # Abkürzung benutzt ip addr sh # Extreme Abkürzung ip a s # "show" ist der Default fÜr 'ip address' und kann daher # weggelassen werden ip a
5.2 Netzwerk-Schnittstellen
5.2.1 Schnittstellen Informationen abfragen
ip link show
5.2.2 Schnisttellen ändern
ip link set dev eth1 up ip link set dev eth1 name dmz ip link set dev dmz mtu 9000
5.2.3 Schnittstellen anlegen
ip link add eth10 type dummy
5.2.4 Schnittstelle entfernen
- Nicht-physische Netzwerkschnittstellen können mit dem IP-Befehl entfernt werden
ip link del dmz
5.2.5 Bridge anlegen
ip link add bridge0 type bridge
5.2.6 Schnittstellen einer Bridge zuweisen
ip link set dev eth1 master bridge0 ip link set dev eth2 master bridge0
5.3 IP-Adressen Konfiguration
5.3.1 Informationen über IPv4-Adressen abfragen
ip address show ip -s -h address show ip address show up ip address show dev eth0
5.3.2 IPv4 Adresse zuweisen
ip addr add 192.0.2.10/24 dev eth0
5.3.3 IPv4 Adresse entfernen
ip addr del 192.0.2.10/24 dev eth0
5.4 ARP
- In IPv4 Systemen verbindet das ARP-Protokoll (Address-Resolution-Protocol) die IPv4-Adressen mit den Hardware-Adressen der Netzwerkschnittstellen.
- Um einen anderen Rechner im gleichen Subnetz zu erreichen muss der
TCP/IP-Stack die Ziel-IP-Adresse in die Hardware-Adresse auflösen
- Der Sender schickt ein ARP-Broadcast mit der Ziel-IP-Adresse in das Netzsegment
- Der Besitzer der IPv4-Adresse (und Empfänger) sendet die eigene Hardware-Adresse (MAC-Adresse) zurück
- Der Sender speichert diese Adresse für eine gewisse Zeit im ARP-Cache des TCP/IP-Stack
- Ist eine Gegenstelle nicht mehr erreichbar (Timeout), so wird der ARP-Eintrag aus dem Cache vorzeitig entfernt (NUD - Neighbourhood Unreachability Detection)
5.4.1 ARP-Tabelle abfragen
ip -4 -s neigh show
5.4.2 ARP-Eintrag setzen
ip neigh add 192.0.2.10 lladdr 01:02:03:04:05:06 dev eth0
5.4.3 ARP-Eintrag löschen
ip neigh del 192.0.2.10 dev eth0
5.4.4 Permanenter Eintrag im ARP-Cache
ip neigh add 192.0.2.10 lladdr 01:02:03:04:05:06 nud permanent dev eth0
5.5 Aufgabe 1:
- Auf der VM
- Erstelle eine Schnittstelle von Typ
dummy - Weise die IPv4 Adresse 192.0.2.10/27 dieser Schnittstelle zu
- Aktiviere die Schnittstelle
- Prüfe das die Schnittstelle per
pingerreichbar ist - Schaue dir die ARP Tabelle an. Ist die neue IP-Adresse dort sichtbar?
- Erstelle eine Schnittstelle von Typ
5.6 Lösung Aufgabe 1:
ip link add dummy0 type dummy ip address add 192.0.2.10/27 dev dummy0 ip link set dev dummy0 up ip -4 neigh show
- Die IP-Adresse für lokale Schnittstelle wird nicht in der ARP-Tabelle gespeichert (nur externe Systeme werden in der ARP-Tabelle vermerkt)
5.7 IP Monitoring
- Der Befehl
ip monitorzeigt die Änderungen an der Netzwerkkonfiguration an. Dieser Befehl kann zur Fehlersuche verwendet werden, speziell bei Netzwerk-Konfigurations-Diensten wie NetworkManager (RedHat) oder Wicked (SUSE)- Der Parameter
-tgibt einen Zeitstempel vor jeder Ausgabezeile aus
- Der Parameter
5.8 Aufgabe 2:
- Starte
tmux - Starte
ip monitor - Öffne eine weitere Shell im
tmuxmit der Tastenkombination CTRL-b+" (CTRL/STRG halten und zusammen mit Taste 'b' betätigen, dann beide Tasten loslassen und die Taste '"' betätigen). Es sollte ein neues Shell Fenster unten erscheinen. - Ändere in der zweiten Shell die IP-Adresse der
dummySchnittstelle auf eine neue IP-Adresse (bestehende IP-Adresse soll gelöscht werden). Verfolge die Meldungen vomip monitorim oberen Fenster.
5.9 Routing
5.9.1 Routing Tabelle anzeigen
ip -4 route show
5.9.2 Route hinzufügen
# Default-Route setzen route add default via 10.0.10.1 dev eth0 # Host-Route route add 192.0.2.0/32 via 10.0.10.1 dev eth0 # Netzwerk-Route auf Netzwerkschnittstelle route add -net 192.1.2.0/24 dev wg0 # Netzwerk-Route auf Router-IP-Adresse route add -net 192.1.2.0/24 via 10.0.0.1 dev wg0
5.9.3 Route löschen
route del 192.0.2.10/24
5.10 Netzwerk Informationen abfragen
ss(Socket stat) zeigt die aktiven TCP/IP und Unix-Sockets an- Wichtige Parameter:
-tTCP Sockets anzeigen-uUDP Sockets anzeigen-lAuf Anfragen wartende Sockets (Listen)-pProzesse zu den Sockets anzeigen-eErweiterte Informationen anzeigen-nkeine Namensauflösung für IP-Adressen-iInterne TCP-Informationen anzeigen-ZSELinux Context anzeigen-sGlobale Statistiken anzeigen
ss -s ss -tulpen ss -tulip ss -tulipe4
5.11 Namensauflösung
5.11.1 IPv4 Adresse über den konfigurierten Resolver abfragen
# IPv4 Adresse von 'example.com' abfragen dig example.com # Nur die Antwort anzeigen dig example.com +short # Nur die Antwort-Sektion anzeigen dig example.com +noall +answer
5.11.2 DNS-Anfrage an speziellen DNS-Server senden
dig @dns1.example.com example.com dig @1.1.1.1 example.com
5.11.3 DNS-Anfrage für andere DNS-Record-Typen
# TXT-Records dig txt example.com # MX-Record dig mx exmaple.com # IPv6-Adresse dig aaaa example.com # Name-Server für Domain dig ns example.com # SOA-Record dig soa example.com
5.11.4 Status/Verbindung zu allen DNS-Servern einer Domain prüfen
- Der Parameter
+nssearchsendet eine Anfrage nach dem SOA-Record an alle DNS-Server, welche für die Domain als NS-Records gelistet sind. Hierzu muss der Rechner direkte DNS-Verbindung zu diesen DNS-Server haben
dig example.com +nssearch
5.11.5 DNSSEC Status prüfen
- Den DNSSEC-Status, inkl. der DNSSEC-Signatur-Records abfragen. Bei
erfolgreicher DNSSEC Prüfung muss das
AD-Flag im Header der DNS-Antwort angezeigt werden
dig example.com +dnssec +multi
5.12 TCP/IP Fehlersuche
5.12.1 ICMP Echo Request (ping)
- Mit dem
pingBefehl kann die IP-Verbindung zu einem Host im Netzwerk geprüft werdenpingbenutzt das ICMP-Protokoll, das ICMP-Protokoll kann prüfen ob die IP-Verbindung (ARP, Routing) funktioniert. Mittelspingkann keine verlässliche Aussage über TCP oder UDP gemacht werden!- Firewall-Systeme können ICMP blockieren und TCP oder UDP erlauben, oder andersherum
- In Internet-Backbone-Systemen hat ICMP-echo-request (PING) oft eine niedrige Priorität. Eine schlechte PING-Verbindung kann nicht in jedem Fall auf die Qualität der TCP oder UDP Verbindung schliessen lassen.
5.12.2 traceroute, tracepath, mtr
- Der Befehl
traceroutezeigt den Weg eines Pakets durch eine Netzwerkverbindung an. Der Befehl sendet Pakete mit geringer TTL (Hop-Count), und wartet auf die ICMP-Fehler-Rückmeldungen der Systeme auf dem Weg, welche das Paket verwerden- Nicht alle Systeme senden ICMP-Fehlermeldungen
- ICMP-Pakete können auf dem Rückweg durch Firewall-Systeme blockiert werden
- Linux
traceroutebenutzt UDP und kann mittels Parameter auf TCP oder ICMP umgestellt werden - Der Befehl
tracepatharbeitet ähnlich wietraceroute, gibt zusätzlich Informationen über die MTU (Maximum Transfer Unit = maximale IP Paketgrösse) für jedes Netzwerksegment auf dem Weg aus - Der Befehl
mtr(oft nicht vorinstalliert) gibt kontinuierlich die Trace-Informationen auf dem Terminal aus.
6 RedHat kompatible Linux-Distributionen
- Die folgenden Informationen sind für RedHat kompatible Linux-Distributionen (Fedora / Rocky Linux / Alma Linux / Oracle Linux / CentOS)
- Die derzeitige Netzwerk-Verwaltungs-Software heisst NetworkManager
- NetworkManager kann über eine GUI-Anwendung, die Konsolen-Anwendung
nmtuioder über das Kommandozeilen-Programmnmclikonfiguriert werden. Es ist auch möglich die NetworkManager Konfigurationsdateien unterhalb von/etc/NetworkManager/system-connectionszu ändern.
6.1 Generelle Informationen
- Konfigurationsdateien in
/etc/NetworkManager- Schnittstellenkonfiguration in
/etc/NetworkManager/system-connections - Nach manueller änderungen in den Konfigurationsdateien:
- Schnittstellenkonfiguration in
# systemctl reload NetworkManager # nmcli connection reload
- NetworkManager CLI
# nmcli networking # nmcli general # nmcli net off # nmcli net on # nmcli device status # nmcli connection
6.2 Ethernet Netzwerk
ip link add eth1 type dummy
nmcli con add con-name my-eth1 ifname eth1 type ethernet ip4 192.168.100.100/24 \
gw4 192.168.100.1
nmcli -p con show my-eth1
nmcli con mod my-eth1 ipv4.dns "8.8.8.8 8.8.4.4"
nmcli con mod my-eth1 ipv4.ignore-auto-dns yes
nmcli device up eth1
nmcli con up my-eth1
nmcli con down my-eth1
nmcli con mod my-eth1 connection.zone work
nmcli -p connection show my-eth1
nmcli con mod my-eth1 connection.id eth-ens14
nmcli con del "Wired connection 1"
nmcli con edit eth-ens14
nmcli> describe ipv4
nmcli> describe ethernet
nmcli> set ipv4.routes 192.168.122.0/24 10.10.10.1
nmcli>
nmcli> save persistent
Saving the connection with 'autoconnect=yes'. That might result in an immediate activation of the connection.
Do you still want to save? [yes] yes
nmcli> quit
6.3 Beispiel Konfigurationsdatei
[connection] id=eth0 uuid=7f616ba0-9552-3ca3-afff-c07201d0794c type=ethernet autoconnect-priority=-999 interface-name=eth0 timestamp=1732647665 [ethernet] [ipv4] method=auto [ipv6] addr-gen-mode=eui64 method=auto [proxy]
6.4 NetworkManager Konfiguration anschalten
- Eine Verbindung aktivieren
nmcli con up <connection-name>
- Ein Verbindungsprofil soll automatisch beim Systemstart aktiv werden
nmcli con modify <connection-name> connection.autoconnect yes
6.5 Bridge
- Eine Bridge Konfiguration erstellen
nmcli connection add type bridge ifname bridge0
- Eine Netzwerkschnittstelle der Bridge hinzufügen
nmcli connection add type bridge-slave ifname eth0 master bridge0
- Bridge Konfiguration anzeigen
nmcli connection show bridge-bridge0
- Bridge aktivieren
nmcli connection up bridge-bridge0
6.6 Routing
- Default-Route (Gateway) setzen
nmcli con modify my-eth0 ipv4.gateway 172.16.1.1
- Route hinzufügen (Syntax:
netzwerk/prefix nexthop metric, [...])
nmcli con modify my-eth0 ipv4.routes "192.0.2.0/24 10.0.0.1 4, 100.64.1.0/28 5, 1.0.0.0/8 192.0.2.100"
6.7 DNS Resolver
- DNS Resolver IP-Adressen der Konfiguration
my-eth0setzen
nmcli con modify my-eth0 ipv4.dns "1.1.1.1,9.9.9.9"
- DNS Resolver IP-Adresse der Konfiguration
my-eth0hinzufügen
nmcli con modify my-eth0 +ipv4.dns 8.8.8.8
7 SUSE Linux
- Die derzeitige Netzwerkkonfigurationslösung für SUSE Systeme heisst Wicked
- XML-Konfigurationsdateien in
/etc/wicked/*.xml/etc/wicked/common.xml/etc/wicked/server.xml/etc/wicked/client.xml/etc/wicked/nanny.xml
- Dokumentation:
man wicked-config/man wicked - Liest alternativ alte RedHat-Style und SUSE-Style
Netwerkkonfigurationen aus
/etc/sysconfig/network/ifcfg-* - Werden die
ifcfgDateien verwendet, so kann ein SUSE-Linux-System von Wicked zu NetworkManager umgeschaltet werden
7.1 Status des Wicked-Dienstes abfragen
systemctl status wicked wicked show all
7.2 Konfiguration einer Netzwerkschnittstelle mit statischer IP-Adresse
- Dokumentation:
man 5 ifcfg - Datei
/etc/sysconfig/network/ifcfg-eth0(für die Netzwerkschnittstelleeth0)
BOOTPROTO='static' STARTMODE='auto' WICKED='yes' IPADDR=172.16.1.1/24 GATEWAY=172.16.1.254
- Konfiguration aktivieren (Achtung bei Administration via
ssh, dieser Befehl kann die aktive Verbindung beenden!)
sudo systemctl restart network
7.3 Bridge Konfiguration unter SUSE Linux mit Wicked
- Dokumentation:
man ifcfg-bridge - Eine
ifcfg-Konfigurationsdatei unter/etc/sysconfig/network/mit dem Namenifcfg-br0erstellen
STARTMODE='auto' BOOTPROTO='static' WICKED='yes' IPADDR=172.16.1.155/24 BRIDGE='yes' BRIDGE_STP='off' BRIDGE_FORWARDDELAY='0' BRIDGE_PORTS='veth0 eth1'
- Neue Konfiguration aktivieren
systemctl restart network
7.4 Aufgabe 1
- Konfiguriere die Netzwerkschnittelle
eth1mit der statischen IP-Adresse172.16.1.x - Teste das die Gegenstelle
172.16.1.200erreichbar ist
7.5 Aufgabe 2
- Erstelle eine Konfiguration für Wicked um die statische
IP-Adresse aus Aufgabe 1 auf die Schnittstelle
eth1zu setzen - Teste die Konfiguration mittels eines Netstart des Systems
7.6 Aufgabe 3
- Erstelle eine Konfiguration für eine Bridge
- Füge die Netzwerkschnittstelle
eth1dieser Bridge hinzu - Starte einen Systemd-nspawn Container mit privatem Netzwerk und VETH-Netzwerkschnittstellen
systemd-nspawn -b -D /srv/container/suse15 --private-network --network-veth - Konfigure the VETH-Network inside the container with the IP-Address
172.16.1.10x - Füge die VETH-Schnittstelle auf dem Host der Bridge hinzu
- Teste die Verbindung vom Container zu der IP-Adresse
172.16.1.200
8 Ubuntu
- Netplan: https://netplan.readthedocs.io/en/stable/
- Konfigurationsdateien
/lib/netplan/*.yaml- vom OS gelieferte Konfigurationen/etc/netplan/*.yaml- lokale Konfigurationen/run/netplan/*.yaml- temporäre Konfigurationen
- Netplan ist kein eigener Netzwerk-Konfigurations-Dienst, sondern
erstellt (rendert) aus den Netplan-Konfigurationsdateien
Konfiguration für z.B.
systemd-networkdoderNetworkManager- Ubuntu 24.04 LTS wird mit NetworkManager ausgeliefert
# cat /etc/netplan/01-network-manager-all.yaml # Let NetworkManager manage all devices on this system network: version: 2 renderer: NetworkManager
8.1 Generelle Informationen
# chmod 600 /etc/netplan/01-network-manager-all.yaml # netplan status --all # netplan get
8.2 Ethernet Konfiguration
# ip link add eth2 type dummy
- Netplan Konfiguration prüfen
# netplan try
- Netplan Konfiguration aktivieren
# netplan apply
8.3 Konfiguration statische IPv4 Adresse
- Datei
/etc/netplan/50-eth2-static-ipv4.yaml
network:
version: 2
renderer: NetworkManager
ethernets:
eth2:
addresses:
- 192.0.2.10/24
nameservers:
search:
- "example.com"
addresses:
- 9.9.9.9
- 8.8.8.8
- Berechtigungen anpassen
# chmod 600 /etc/netplan/50-eth1-static-ipv4.yaml
- Netplan Konfiguration aktivieren
# netplan apply
- Generierte
NetworkManagerKonfiguration
# cat /run/NetworkManager/system-connections/netplan-eth2.nmconnection [connection] id=netplan-eth2 type=dummy interface-name=eth2 [ethernet] wake-on-lan=0 [ipv4] method=manual address1=192.0.2.10/24 dns=9.9.9.9;8.8.8.8; dns-search=example.com; [ipv6] method=ignore
8.4 Bridge Konfiguration:
- Netplan Konfigurationsdatei in
/etc/netplan/10-bridge.yaml
network:
version: 2
ethernets:
eth0:
dhcp4: no
eth1:
dhcp4: no
bridges:
br0:
interfaces: [veth0, eth1]
addresses:
- 192.0.2.250/24
- Berechtigungen anpassen
# chmod 600 /etc/netplan/10-bridge.yaml
- Netplan Konfiguration aktivieren
# netplan apply
8.5 Aufgabe 1
- Konfiguriere die Netzwerkschnittelle
eth1mit der statischen IP-Adresse172.16.1.x - Teste das die Gegenstelle
172.16.1.200erreichbar ist
8.6 Aufgabe 2
- Erstelle eine Konfiguration für Netplan um die statische
IP-Adresse aus Aufgabe 1 auf die Schnittstelle
eth1zu setzen - Teste die Konfiguration mittels eines Netstart des Systems
8.7 Aufgabe 3
- Erstelle eine Konfiguration für eine Bridge
- Füge die Netzwerkschnittstelle
eth1dieser Bridge hinzu - Starte einen Systemd-nspawn Container mit privatem Netzwerk und VETH-Netzwerkschnittstellen
systemd-nspawn -b -D /srv/container/ubuntu24 --private-network --network-veth - Konfigure the VETH-Network inside the container with the IP-Address
172.16.1.10x - Füge die VETH-Schnittstelle auf dem Host der Bridge hinzu
- Teste die Verbindung vom Container zu der IP-Adresse
172.16.1.200
9 Systemd-networkd
systemd-networkdist der Netzwerk-Konfigurationsdienst des SystemD-Projektes.- Es wird erwartet das die populären Linux-Distributionen in den
kommenden Jahren von eigenen Netzwerkkonfigurations-Lösungen auf
systemd-networkdumstellen - Systemd-networkd sucht Konfigurationsdateien in den folgenden
Verzeichnissen (Lade-Reihenfolge, später geladene Dateien haben
Priorität über früher geladene Dateien):
/usr/lib/systemd/network/usr/local/lib/systemd/network/run/systemd/network/etc/systemd/network
- Es wird erwartet das die populären Linux-Distributionen in den
kommenden Jahren von eigenen Netzwerkkonfigurations-Lösungen auf
9.1 Link-Dateien
- Dateien mit der Endung
.linkBeschreiben die Konfiguration der Hardware-Schnittstellen (z.B. Ethernet) - In diesen Dateien können z.B. Verbindungsparamter (Netzwerkgeschwindigkeit, MTU, Duplex) oder Schnittstellen-Parameter (MAC-Adresse, Name der Schnittstelle, Wake-on-LAN) konfiguriert werden
- Link-Dateien sollten mit mit einer zweistellingen Nummer im
Dateinamen beginnen. Die Link-Dateien werden in der
Sortierreihenfolge der Datei-Namen gelesen (
00- erste Datei,99- letzte Datei) - Dokumentation:
man systemd.link - Beispiel: Umbenennung einer Netzwerkschnittstell anhand der MAC-Adresse
[Match] MACAddress=00:a0:de:63:7a:e6 [Link] Name=dmz0
- Nachdem eine neue
.link-Datei erstellt oder eine bestehende.link-Datei geändert wurde, können die neuen Einstellungen mit den folgenden Befehlen auf die entsprechende Schnittstelle (hiereth0) angewendet werden:
$ sudo udevadm control --reload $ sudo ip link set eth0 down $ sudo udevadm trigger --verbose --settle --action add /sys/class/net/eth0
9.2 Netdev-Dateien
- Dateien mit der Endung
.netdevdefinieren und konfigurieren virtuelle Netzwerkgeräte wieveth,macvlan,ipvlan, IPSec, Vlan oderbridgeSchnittstellen - Dokumentation
man systemd.netdev - Beispiel: Bridge
[NetDev] Name=bridge0 Kind=bridge [Bridge] Priority=10 STP=true VLANFiltering=true
- Beispiel: VLAN
Name=vlan1 Kind=vlan [VLAN] Id=1
- Beispiel: VETH-Schnittstelle
[NetDev] Name=veth-cust0 Kind=veth [Peer] Name=veth-host0 MACAddress=00:AA:00:11:22:33
9.3 Network-Dateien
- Dateien mit der Endung
.networkBeschreiben die IP-Konfiguration (IPv4 oder IPv6) einer Netzwerkschnittstelle - Die
[Match]Sektion der Konfigurationsdatei wählt die Netzwerkschnittstelle anhand der Namens, des Netzwerktreibers, der Hardware-Adresse, SSID oder PCI-Pfad aus. Jede.networkDatei sollte mit einer[Match]Sektion beginnen - In der
[Link]Sektion können einige Parameter der Hardware-Schicht konfiguriert werden, wie z.B. die MTU. Hier sind jedoch nicht alle Optionen der[Link]Dateien vorhanden - In der
[Network]wird das TCP/IP Netzwerk konfiguriert:- DHCP an/aus
- Default-Route
- DNS Resolver inkl. DNSSEC Validierungs-Status
- Mulicast DNS und LLMNR
- NTP-Server
- Forwarding
- In der
[Address]Sektion werden die IPv4- und IPv6 Adressen konfiguriert - In der
[Neighbor]Sektion können IPv4 ARP Einträge manuell vorgenommen werden - In der
[Route]Sektion wird die Routing-Konfiguration im Detail konfiguriert (Default-Gateway, weitere Host- oder Netz-Routen) - In der
[DHCPV4]Sektion kann die Funktion des DHCPv4-Clients im Detail konfiguriert werden - In der
[BRIDGE]Sektion werden die Einstellungen für eine Software Bridge konfiguriert - Beispiel: statische Netzkonfiguration
[Match] Name=enp2s0 [Network] Address=192.0.2.15/24 Gateway=192.0.2.1
- Beispiel: Bridge mit 2 Schnittstellen
[NetDev] Name=bridge0 Kind=bridge
[Match] Name=bridge0 [Network] Address=192.0.2.15/24 Gateway=192.0.2.1 DNS=192.0.2.53
[Match] Name=eth0 [Network] Bridge=bridge0
[Match] Name=enp7s0 [Network] Bridge=bridge0
9.4 Aufgabe 1
- Konfiguriere die Netzwerkschnittelle
eth1mit der statischen IP-Adresse172.16.1.x - Teste das die Gegenstelle
172.16.1.200erreichbar ist
9.5 Aufgabe 2
- Erstelle eine Konfiguration für systemd-networkd um die statische
IP-Adresse aus Aufgabe 1 auf die Schnittstelle
eth1zu setzen - Teste die Konfiguration mittels eines Netstart des Systems
9.6 Aufgabe 3
- Erstelle eine Konfiguration für eine Bridge
- Füge die Netzwerkschnittstelle
eth1dieser Bridge hinzu - Starte einen Systemd-nspawn Container mit privatem Netzwerk und VETH-Netzwerkschnittstellen
systemd-nspawn -b -D /srv/container/redhat --private-network --network-veth - Konfigure the VETH-Network inside the container with the IP-Address
172.16.1.10x - Füge die VETH-Schnittstelle auf dem Host der Bridge hinzu
- Teste die Verbindung vom Container zu der IP-Adresse
172.16.1.200