Ifup/ifdown: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
 
(4 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
 +
  
 
== Allgemeines ==
 
== Allgemeines ==
* ifup/ifdown ist ein klassisches Netzwerk-Management-Tool unter Debian-basierten Systemen
+
* Klassisches Netzwerk-Management unter Debian
* Konfiguration erfolgt zentral über /etc/network/interfaces
+
* Zentrale Konfiguration über /etc/network/interfaces
* Ziel: einfache, reproduzierbare und stabile Netzwerkkonfiguration
+
* Deterministisch und gut skriptbar
  
== Grundprinzip ==
+
== Prinzip ==
* Interfaces werden deklarativ beschrieben
+
* Interface definieren
* Aktivierung erfolgt über ifup <interface>
+
* Aktivieren mit ifup <interface>
* Deaktivierung erfolgt über ifdown <interface>
+
* Deaktivieren mit ifdown <interface>
  
 
== Datei: /etc/network/interfaces ==
 
== Datei: /etc/network/interfaces ==
Zeile 22: Zeile 23:
 
</pre>
 
</pre>
  
== Best Practice: Klare Trennung ==
+
== auto vs allow-hotplug ==
* pro Interface nur eine Aufgabe (kein Mischbetrieb DHCP + static)
+
* auto startet Interface beim Boot
* sprechende Interface-Namen verwenden (Predictable Names wie enp0s3)
+
* allow-hotplug reagiert auf Geräteereignisse
 
 
== Best Practice: auto vs allow-hotplug ==
 
* auto = Interface wird beim Boot aktiviert
 
* allow-hotplug = Aktivierung nur bei physischem Ereignis
 
  
 
<pre>
 
<pre>
 
auto enp0s3
 
auto enp0s3
 
</pre>
 
</pre>
 
oder
 
  
 
<pre>
 
<pre>
Zeile 40: Zeile 35:
 
</pre>
 
</pre>
  
== Best Practice: Statische Konfiguration ==
+
== Struktur ==
* CIDR-Notation verwenden (address 192.168.1.10/24)
+
* Konfiguration auslagern
* Gateway nur einmal global setzen
 
* DNS explizit definieren
 
 
 
== Best Practice: Includes nutzen ==
 
* große Konfigurationen auslagern
 
  
 
<pre>
 
<pre>
Zeile 52: Zeile 42:
 
</pre>
 
</pre>
  
== Beispiel: Datei: /etc/network/interfaces.d/lan.cfg ==
+
== Datei: /etc/network/interfaces.d/lan.cfg ==
 
<pre>
 
<pre>
 
auto enp0s3
 
auto enp0s3
Zeile 60: Zeile 50:
 
</pre>
 
</pre>
  
== Best Practice: Kein Mischbetrieb mit NetworkManager ==
+
== Wichtige Befehle ==
* entweder ifupdown ODER NetworkManager
+
 
* Konflikte vermeiden
+
;Aktiviert alle Interfaces, die mit auto definiert sind
 +
* ifup -a
 +
 
 +
;Deaktiviert alle Interfaces aus der Konfiguration
 +
* ifdown -a
  
== Status prüfen ==
+
;Aktiviert gezielt ein Interface
 +
* ifup enp0s3
 +
 
 +
;Deaktiviert gezielt ein Interface
 +
* ifdown enp0s3
 +
 
 +
;Aktiviert ein Interface mit detaillierter Ausgabe (Debug)
 +
* ifup -v enp0s3
 +
 
 +
;Deaktiviert ein Interface mit detaillierter Ausgabe
 +
* ifdown -v enp0s3
 +
 
 +
;Simulation, zeigt nur was passieren würde (kein Apply)
 +
* ifup -n enp0s3
 +
 
 +
;Simulation für das Deaktivieren
 +
* ifdown -n enp0s3
 +
 
 +
;Listet alle bekannten Interfaces aus der Konfiguration
 +
* ifquery --list
 +
 
 +
;Zeigt Details zur Interface-Konfiguration
 +
* ifquery enp0s3
 +
 
 +
== Status ==
 
* ip a
 
* ip a
 
* ip r
 
* ip r
 +
* ip link
  
== Interface neu laden ==
+
== Neu laden ==
 
* ifdown enp0s3 && ifup enp0s3
 
* ifdown enp0s3 && ifup enp0s3
  
== Fehler vermeiden ==
+
== Debug ==
* keine Tabs und Spaces mischen
 
* Einrückung konsistent halten
 
* immer nach Änderungen testen
 
  
== Debugging ==
+
;Zeigt System-Logs für Netzwerkfehler und Dienste
 
* journalctl -xe
 
* journalctl -xe
* ip link show
+
 
* ifquery --list
+
;Detaillierte Ausgabe beim Hochfahren eines Interfaces
 +
* ifup -v enp0s3
 +
 
 +
;Prüft die Konfiguration ohne das Interface zu verändern
 +
* ifquery enp0s3
 +
 
 +
== Hinweise ==
 +
* kein Mischbetrieb mit NetworkManager
 +
* saubere Einrückung (Spaces, keine Tabs)
 +
* Änderungen immer direkt testen
  
 
== Fazit ==
 
== Fazit ==
 
* minimal halten
 
* minimal halten
 
* klar strukturieren
 
* klar strukturieren
* reproduzierbar konfigurieren
+
* Befehle gezielt nutzen
 +
 
 +
 
 +
 
 +
== Hooks (pre-up / post-up / pre-down / post-down) ==
 +
* Ermöglichen eigene Befehle vor/nach Interface-Events
 +
* Werden direkt in der interfaces-Datei definiert
 +
 
 +
== Ablauf ==
 +
* pre-up → vor dem Hochfahren
 +
* up → während das Interface aktiv wird
 +
* post-up → nach erfolgreichem Start
 +
* pre-down → vor dem Herunterfahren
 +
* down → während des Stopps
 +
* post-down → nach dem Stop
 +
 
 +
== Beispiel ==
 +
<pre>
 +
auto enp0s3
 +
iface enp0s3 inet static
 +
    address 192.168.1.10/24
 +
    gateway 192.168.1.1
 +
 
 +
    pre-up ip link set enp0s3 mtu 1400
 +
    up ip addr add 192.168.1.20/24 dev enp0s3
 +
    post-up ip route add 10.10.0.0/16 via 192.168.1.1
 +
 
 +
    pre-down echo "Interface wird beendet"
 +
    down ip addr del 192.168.1.20/24 dev enp0s3
 +
    post-down echo "Interface ist down"
 +
</pre>
 +
 
 +
== Verhalten ==
 +
* Befehle laufen synchron im Kontext von ifup/ifdown
 +
* Fehler in pre-up verhindern das Starten
 +
* post-up läuft nur bei Erfolg
 +
 
 +
== Typische Einsätze ==
 +
* Routen setzen/löschen
 +
* Firewall-Regeln (nftables/iptables)
 +
* MTU anpassen
 +
* Zusatz-IP-Adressen
 +
* Logging / Debug
 +
 
 +
== Hinweise ==
 +
* Befehle ohne interaktive Eingaben
 +
* Absolute Pfade verwenden (z. B. /sbin/ip)
 +
* Fehler sauber behandeln (|| true falls nötig)
 +
 
 +
== Debug ==
 +
* ifup -v enp0s3
 +
* journalctl -xe

Aktuelle Version vom 29. März 2026, 09:10 Uhr


Allgemeines

  • Klassisches Netzwerk-Management unter Debian
  • Zentrale Konfiguration über /etc/network/interfaces
  • Deterministisch und gut skriptbar

Prinzip

  • Interface definieren
  • Aktivieren mit ifup <interface>
  • Deaktivieren mit ifdown <interface>

Datei: /etc/network/interfaces

auto lo
iface lo inet loopback

auto enp0s3
iface enp0s3 inet static
    address 192.168.1.10/24
    gateway 192.168.1.1
    dns-nameservers 1.1.1.1 8.8.8.8

auto vs allow-hotplug

  • auto startet Interface beim Boot
  • allow-hotplug reagiert auf Geräteereignisse
auto enp0s3
allow-hotplug enp0s3

Struktur

  • Konfiguration auslagern
source /etc/network/interfaces.d/*

Datei: /etc/network/interfaces.d/lan.cfg

auto enp0s3
iface enp0s3 inet static
    address 10.0.0.10/24
    gateway 10.0.0.1

Wichtige Befehle

Aktiviert alle Interfaces, die mit auto definiert sind
  • ifup -a
Deaktiviert alle Interfaces aus der Konfiguration
  • ifdown -a
Aktiviert gezielt ein Interface
  • ifup enp0s3
Deaktiviert gezielt ein Interface
  • ifdown enp0s3
Aktiviert ein Interface mit detaillierter Ausgabe (Debug)
  • ifup -v enp0s3
Deaktiviert ein Interface mit detaillierter Ausgabe
  • ifdown -v enp0s3
Simulation, zeigt nur was passieren würde (kein Apply)
  • ifup -n enp0s3
Simulation für das Deaktivieren
  • ifdown -n enp0s3
Listet alle bekannten Interfaces aus der Konfiguration
  • ifquery --list
Zeigt Details zur Interface-Konfiguration
  • ifquery enp0s3

Status

  • ip a
  • ip r
  • ip link

Neu laden

  • ifdown enp0s3 && ifup enp0s3

Debug

Zeigt System-Logs für Netzwerkfehler und Dienste
  • journalctl -xe
Detaillierte Ausgabe beim Hochfahren eines Interfaces
  • ifup -v enp0s3
Prüft die Konfiguration ohne das Interface zu verändern
  • ifquery enp0s3

Hinweise

  • kein Mischbetrieb mit NetworkManager
  • saubere Einrückung (Spaces, keine Tabs)
  • Änderungen immer direkt testen

Fazit

  • minimal halten
  • klar strukturieren
  • Befehle gezielt nutzen


Hooks (pre-up / post-up / pre-down / post-down)

  • Ermöglichen eigene Befehle vor/nach Interface-Events
  • Werden direkt in der interfaces-Datei definiert

Ablauf

  • pre-up → vor dem Hochfahren
  • up → während das Interface aktiv wird
  • post-up → nach erfolgreichem Start
  • pre-down → vor dem Herunterfahren
  • down → während des Stopps
  • post-down → nach dem Stop

Beispiel

auto enp0s3
iface enp0s3 inet static
    address 192.168.1.10/24
    gateway 192.168.1.1

    pre-up ip link set enp0s3 mtu 1400
    up ip addr add 192.168.1.20/24 dev enp0s3
    post-up ip route add 10.10.0.0/16 via 192.168.1.1

    pre-down echo "Interface wird beendet"
    down ip addr del 192.168.1.20/24 dev enp0s3
    post-down echo "Interface ist down"

Verhalten

  • Befehle laufen synchron im Kontext von ifup/ifdown
  • Fehler in pre-up verhindern das Starten
  • post-up läuft nur bei Erfolg

Typische Einsätze

  • Routen setzen/löschen
  • Firewall-Regeln (nftables/iptables)
  • MTU anpassen
  • Zusatz-IP-Adressen
  • Logging / Debug

Hinweise

  • Befehle ohne interaktive Eingaben
  • Absolute Pfade verwenden (z. B. /sbin/ip)
  • Fehler sauber behandeln (|| true falls nötig)

Debug

  • ifup -v enp0s3
  • journalctl -xe