Legacy iptables on RHEL: Backward Compatibility (Artikel 096)
Umgang mit veralteten Firewall-Konfigurationen unter RHEL. Erfahren Sie, wie die Kompatibilitätsschicht iptables-nft arbeitet und wie Sie Alt-Systeme sicher migrieren.
# Legacy iptables: Überleben im nftables-Zeitalter
TL;DR / Management Summary Seit RHEL 8 ist der Kernel-Standard für Paketfilterung nftables. Dennoch begegnen uns in Enterprise-Umgebungen ständig alte Skripte oder Applikationen, die nach
iptablesverlangen. RHEL bietet hierfür die iptables-nft Schicht: Sie erlaubt die Nutzung der alten Syntax, übersetzt diese aber im Hintergrund transparent in nftables-Regeln. Ein Senior Admin muss diesen Mechanismus verstehen, um Konflikte zwischen firewalld und alten Skripten zu vermeiden.
# 1. Einführung & Architektur
Der Translator im Hintergrund.
In modernen RHEL-Systemen ist das Kommando /usr/sbin/iptables ein Symlink auf /usr/sbin/xtables-nft-multi.
# Die Schichten (Mermaid)
graph TD
A[Legacy Script / Admin] -->|iptables command| B[iptables-nft Translation Layer]
B -->|Generates| C[nftables API]
D[firewalld Daemon] -->|Native| C
C --> E[Kernel: nftables sub-system]
Gefahr: Wenn Sie gleichzeitig firewalld und manuelle iptables Skripte nutzen, entsteht eine unübersichtliche Regel-Hölle. nftables erlaubt mehrere “Tables”, die sich gegenseitig beeinflussen können.
# 2. Nutzung von iptables-services
Der Weg zurück (nur wenn nötig).
Manchmal brauchen Sie den klassischen iptables.service, um eine Datei /etc/sysconfig/iptables beim Booten zu laden.
# Installation & Aktivierung
sudo dnf install iptables-services
sudo systemctl stop firewalld
sudo systemctl mask firewalld # Wichtig: Verhindert Parallelbetrieb!
sudo systemctl enable --now iptables
# 3. Analyse der Regeln
Was passiert wirklich im Kernel?
Da iptables-nft nur ein Frontend ist, sehen Sie mit dem nativen Tool oft mehr:
# Zeigt Regeln in der alten Syntax
sudo iptables -L -n
# Zeigt die echten, übersetzten Regeln in nftables Syntax
sudo nft list ruleset
# 4. Day-2 Operations: Migration zu nftables
Die Zukunft ist jetzt.
Anstatt alte Skripte ewig mitzuschleifen, sollten Sie diese konvertieren. Red Hat bietet dafür ein spezielles Tool.
# Konvertierung mit iptables-restore-translate
# Exportieren der alten Regeln
sudo iptables-save > legacy.rules
# Übersetzen in nftables Format
iptables-restore-translate -f legacy.rules > modern.nft
# 5. Troubleshooting & “War Stories”
Wenn die Firewall Geister sieht.
# Story 1: “Die verschwundenen Regeln”
Symptom: Ein Admin fügt eine Regel mit iptables -A INPUT ... hinzu. Kurz darauf ist sie wieder weg.
Ursache: firewalld läuft im Hintergrund. Bei jedem Reload (firewall-cmd --reload) flusht firewalld die Tables und schreibt sein eigenes Regelwerk neu. Manuelle iptables Kommandos werden dabei gelöscht.
Lösung: Nutzen Sie firewall-cmd --direct (siehe Artikel 092) oder migrieren Sie die Regel komplett in eine Zone.
# Story 2: “Duplicate Matching”
Symptom: Traffic wird blockiert, obwohl eine iptables Regel ihn erlaubt.
Ursache: Es existiert eine nftables-Chain (z.B. von firewalld), die den Traffic vorher per drop verwirft. Bei nftables gilt: Wenn eine Chain drop sagt, ist das Paket weg – egal was spätere Chains sagen.
Lösung: Nutzen Sie immer nft list ruleset, um die gesamte Kette zu sehen.
# 6. Fazit & Empfehlung
- Vermeidung: Nutzen Sie kein
iptablesmehr auf neuen RHEL 9 Systemen. - Wahl: Wenn Sie maximale Kontrolle brauchen, nutzen Sie natives nftables via
/etc/nftables.conf. - Sicherheit: Das alte
iptables(legacy) Kernel-Modul ist in RHEL 9 offiziell nicht mehr vorhanden. Alles läuft über die Translation-Layer.
# Anhang: Cheatsheet
| Aufgabe | Befehl |
|---|---|
| Regeln speichern | iptables-save > /etc/sysconfig/iptables |
| Regeln laden | iptables-restore < /file |
| nftables-Status | nft list ruleset |
| Translation Test | iptables-translate -A INPUT -p tcp --dport 22 -j ACCEPT |
| Kernel Module check | `lsmod |