Parameter |
Kürzel |
Beschreibung |
Syntax/
Beispiel |
--table |
-t |
Hiermit wird die Tabelle
angegeben auf die sich die
Regel bezieht. Die Tabelle filter
ist die Standardtabelle. |
-t nat -t mangle |
--protocol |
-p |
Das
Protokoll auf das die Regel achten soll. Oft benutzte Argumente
sind
u.a. tcp, udp,
icmp oder all.
Es können auch die numerischen
Protokollwerte für
IP benutzt werden. Man findet sie in der Datei /etc/protocols.
Ein ! (Gesprochen: NICHT)
vor dem
Argument negiert den
Wert. |
-p tcp -p tcp,!udp -p 6 |
--source |
-s, --src |
Die
Quelladresse des Paketes. Benutzt werden kann ein Hostname,
IP-Nummer oder Netzwerkadresse.
Von der Benutzung eines Hostnamens ist aber aus
Geschwindigkeitsgründen abzuraten, da dieser ja erst
aufgelöst werden muss. Auch hier gilt: ein ! negiert
den Wert. Wenn keine
Quelladresse angegeben wurde, wird -s
0/0 benutzt (=alle Adressen) |
-s 192.168.0.1 -s 192.168.0.0/24 -s localhost |
--destination |
-d, --dst |
Die
Zieladresse des Paketes. Ansonsten siehe --source |
-d 192.168.0.1 -d 192.168.0.0/24 -d localhost |
--in-interface |
-i |
Die Netzwerkschnittstelle,
die das
Paket empfängt. Als Argument gilt der Name der Schnittstelle
(siehe ifconfig). Nur
die
Ketten INPUT, FORWARD
und PREROUTING haben
eine Input- Schnittstelle!Ein
! vor dem
Argument negiert den
Wert.
Ein + nach dem Namen ist ein Platzhalter (eth+
gilt für eth0, eth1
usw.) |
-i eth0 -i eth+ |
--out-interface |
-o |
Die Netzwerkschnittstelle über die das Paket gesendet wird. Nur die Ketten OUTPUT, FORWARD und POSTROUTING haben eine Output- Schnittstelle! Ansonsten siehe --in-interface | -o ppp0 -o ! ppp0 |
--fragment |
-f |
Wenn Pakete
zu groß sind um sie 'an einem Stück' zu versenden, werden
sie in mehrere Teile (Fragmente)
zerlegt. Der erste enthält weiterhin die komplette Header-
Felder
und wird wie ein 'normales' Paket behandelt. Die nachfolgenden
enthalten nur noch Teilinformationen. Mit diesem Parameter können
Regeln auf eben diese Teilstücke erstellt werden. |
-f ! -f |
--jump |
-j |
Das Ziel
der Regel. Hier wird festgelegt was mit einem Paket geschieht wenn
eine
Regel zutrifft. Als Argumente werden meist die bereits genannten Methoden verwendet. |
-j ACCEPT -j DROP |
# Ping aus dem lokalen Netz erlaubenIch füge eine neue Regel an die Kette INPUT an (-A INPUT). Da ich keine Tabelle (KEIN -t...) angegeben habe wird die Tabelle filter benutzt. Die Regel lässt Pakete die das Protokoll icmp und aus dem lokalen Netz kommen (--src 192.168.0.0/24) zu (-j ACCEPT).
iptables -A INPUT -p icmp --src 192.168.0.0/24 -j ACCEPT
Eine Regel wird an Position 1 der Kette INPUT eingefügt (-I INPUT 1). Diese Regel verwirft (-J DROP) Pakete die das Protokoll icmp (-p icmp) benutzen und als Ziel die Localhost-IP haben (--dst 127.0.0.1).
# Ping auf localhost verbieten
iptables -I INPUT 1 -p icmp --dst 127.0.0.1 -j DROP
Diese Regel verwirft Pakete (-j DROP) die aus dem Internet kommen (-i ppp0) und das Protokoll icmp benutzen.
# Ping der über den externe Netzweradapter reinkommt verbieten
iptables -A INPUT -p icmp -i ppp0 -j DROP
Diese Regel loggt Fragmente (-j LOG) die das Protokoll icmp benutzen. Anm.: das erste Paket dieser Fragmente wurde vermutlich schon von einer anderen Regel behandelt, das dieses den Paket-Header enthält.
# Fragmente im Logbuch vermerken
iptables -A INPUT -p icmp --fragment -j LOG
Pakete die als Ziel das Internet haben (-o ppp0) werden, nachdem geroutet wurde (-A POSTROUTING) mit einer anderen Adresse versehen ('Maskiert' -j MASQUERADE). Dies ist nur in der Tabelle nat möglich (-t nat)
# Masquerade: 'maskiert' alle Pakete die über ppp0 gesendet werden
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
Wenn jemand eine Anfrage auf eine Seite im Internet stellt (-p tcp --dport http) und diese Anfrage von dem internen Netzwerkadapter kommt (-i eth0) wird diese Anfrage vor dem Routing (-t nat -A PREROUTING) auf den Port 3128 umgeleitet (-j REDIRECT --to-port 3128). Dies wird häufig in Firmen benutzt um Anfragen auf einen lokalen Proxyserver (Port 3128) umzuleiten ohne dass dieser in den Eigenschaften des Browsers eingetragen wird. Details zu --dport finden Sie hier.
# leitet alle Port 80 Anfragen auf Adapter eth0 an Port 3128 ('transparenter Proxy')
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport http -j REDIRECT --to-port 3128