linux-arch-alpine-minimal alpine networking openrc busybox services

Alpine Networking: Services & Config (Artikel 198)

Konfiguration von Netzwerkdiensten unter Alpine Linux. Erfahren Sie alles über das klassische interfaces-Format, die Nutzung von BusyBox-Applets und das Management von DNS und DHCP.

# Alpine Networking: Schlanke Dienste, stabil vernetzt

TL;DR / Management Summary In Alpine Linux gibt es keinen massiven NetworkManager. Alles ist auf Effizienz getrimmt. Das Netzwerk wird über die klassische Datei /etc/network/interfaces gesteuert und von OpenRC (Artikel 195) verwaltet. Viele Standarddienste (wie NTP oder ein kleiner DHCP-Server) werden direkt vom All-in-one Tool BusyBox bereitgestellt. Wer diese minimalistische Herkunft versteht, baut Netzwerk-Appliances, die auch unter extremen Bedingungen (Wenig RAM, CPU) stabil laufen.


# 1. Einführung & Architektur

Das Netzwerk-Skelett.

Alpine nutzt den klassischen Debian-Style für die Konfiguration, verzichtet aber auf komplexe Hintergrund-Dämons.

# Die Komponenten (Mermaid)

graph LR
    A[Config: /etc/network/interfaces] --> B[OpenRC: networking service]
    B --> C[Tool: ifup / ifdown]
    C --> D[Kernel Stack]
    E[BusyBox] --> F[Service: udhcpc - DHCP Client]
    E --> G[Service: ntpd - NTP Sync]
    E --> H[Service: syslogd]
    subgraph "SUSE/RHEL comparison"
        I[No Netplan]
        J[No NetworkManager]
    end

# 2. Grundkonfiguration

Statische IPs und DNS.

Die Datei /etc/network/interfaces ist die “Source of Truth”.

# Beispiel: Statische IP

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
    address 192.168.1.10
    netmask 255.255.255.0
    gateway 192.168.1.1

# DNS Resolver

Wie bei fast jedem Linux: /etc/resolv.conf.

nameserver 1.1.1.1
nameserver 8.8.8.8

# 3. BusyBox Applets nutzen

Dienste ohne Overhead.

Anstatt schwere Dämons zu installieren, nutzen wir die in BusyBox integrierten Funktionen.

# NTP Zeitsynchronisation

# In Alpine standardmäßig aktiv
rc-service ntpd start
rc-update add ntpd default

# DHCP Client (udhcpc)

Alpine nutzt den extrem kleinen udhcpc. Er wird automatisch von ifup gestartet, wenn in der interfaces Datei inet dhcp steht.


# 4. Day-2 Operations: Fortgeschrittene Setups

Bridges und VLANs.

Auch Alpine kann komplexe Topologien, benötigt dafür aber zusätzliche Pakete.

# Bridges für LXC/Docker

apk add bridge-utils

Konfig in interfaces:

auto br0
iface br0 inet dhcp
    bridge-ports eth0
    bridge-stp off

# 5. Troubleshooting & “War Stories”

Wenn die Pakete nicht fließen.

# Story 1: “Der ignorierte Hostname”

Symptom: Der Server hat die korrekte IP, meldet sich aber im Netzwerk (z.B. in der Proxmox-Liste) mit dem Namen localhost. Ursache: Alpine setzt den Hostnamen in zwei Dateien: /etc/hostname und beim DHCP-Request. Lösung: Stellen Sie sicher, dass /etc/hostname den korrekten Namen enthält und führen Sie hostname -F /etc/hostname aus. In der interfaces Datei können Sie zudem hostname <name> beim DHCP-Eintrag erzwingen.

# Story 2: “Das hängende Netzwerk nach Reboot”

Symptom: Nach einem Kernel-Update kommt das Netzwerk nicht mehr hoch. Manuell mit ifup eth0 geht es. Ursache: Das Interface braucht länger zur Initialisierung, als der OpenRC networking Dienst wartet. Lösung: Erhöhen Sie den Timeout in der /etc/conf.d/net oder nutzen Sie den Dienst ifplugd, der auf Hardware-Link-Events reagiert.


# 6. Fazit & Empfehlung

  • Einfachheit: Nutzen Sie die interfaces Datei für statische Setups. Es ist fehlerresistent und leicht zu automatisieren.
  • Minimalismus: Vermeiden Sie es, bind oder isc-dhcp-server zu installieren, wenn die BusyBox-Alternativen ausreichen.
  • Firewall: Kombinieren Sie das Netzwerk mit awall (Alpine Wall), einem speziell für Alpine entwickelten Frontend für Iptables/Nftables.

# Anhang: Cheatsheet

Aufgabe Alpine / CLI Befehl
IP Adressen sehen ip addr
Routing Tabelle ip route
Interface neustarten ifdown eth0 && ifup eth0
DNS Test nslookup google.com
Offene Ports (BusyBox) netstat -tulpn
NTP Status ntpq -p (falls installiert) / busybox ntpd -p <peer>
Hostname ändern setup-hostname
Logs ansehen logread -f