Portweiterleitung
Für NAT, Packetfilter, Portweiterleitungen und Packet-Manipulationen aller Art ist netfilter zuständig. Netfilter ist eine Komponente des Linux Kernels.
Konfiguriert wird Netfilter grundsätzlich und ausschließlich mit Hilfe der dafür vorgesehenen user space-Programme. Sie könne nur mit root-Rechten ausgeführt werden:
iptables: ausschließlich für IPv4
ip6tables: ausschließlich für IPv6
ebtables:
arptables:
nftables: soll eines Tages alle obigen Programme ersetzen
Konfiguration
Die Syntax der obigen Kommandozeilenprogramme (außer nftables) sieht wie folgt aus:
Portweiterleitung
Zuerst einmal sollte man Sicherstellen, dass die Pakete durchgelassen werden:
Die Pakete DNAT-en, damit sie weitergeleitet (geroutet) werden:
Script
Um obige Zeilen nicht nach jedem Neustart eintippen zu müssen, bietet es sich an, sie in ein Shell Skript zu packen bzw. sie in das vorhandene Shell Skript für die Netfilter-Konfiguration einzubauen. Doch diesmal mit Variablen:
1 #!/bin/bash
2
3 IPT=/sbin/iptables
4 IF_DSL=pppoe_dsl
5 IP_USER_1=192.168.142.42
6 PORT_1=12345
7
8 $IPT -A FORWARD -j ACCEPT -p udp --dport $PORT_1 --sport 1024:65535 -d $IP_USER_1 -m state --state NEW
9 $IPT -A FORWARD -j ACCEPT -p tcp --dport $PORT_1 --sport 1024:65535 -d $IP_USER_1 -m state --state NEW
10
11 $IPT -t nat -A PREROUTING -i $IF_DSL -p udp --dport $PORT_1 -j DNAT --to-destination ${IP_USER_1}:${PORT_1}
12 $IPT -t nat -A PREROUTING -i $IF_DSL -p tcp --dport $PORT_1 -j DNAT --to-destination ${IP_USER_1}:${PORT_1}
Allerdings ist es dringend Angeraten, lediglich ein Shell-Skript für die Komplette Netfilter-Konfiguration anzulegen, da man ansonsten leicht Fehler macht, denn die Reihenfolge, in welcher iptables aufgerufen wird, ist ausschlaggebend.
Anmerkung: Wenn man zur Bearbeitung seiner Firewall-Shell-Skripte vim benutzt, so sollte man sich dafür unbedingt iptables-save/restore syntax highlighter installieren, die Dinge werden so übersichtlicher und es Hilft Schreibfehler zu vermeiden.