Iptables Nat: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
(Die Seite wurde neu angelegt: „=Funktionsweise= *Die Regeln werden nacheinander abgearbeitet wenn eine Regel greift hört der Verarbeitungsprozess auf. *Wenn keine greift wird die Default Po…“) |
|||
| (58 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt) | |||
| Zeile 1: | Zeile 1: | ||
=Funktionsweise= | =Funktionsweise= | ||
| − | *Die Regeln werden nacheinander abgearbeitet | + | *Die Regeln werden nacheinander abgearbeitet bis eine Regel greift, wonach der Verarbeitungsprozess aufhört. |
| − | *Wenn keine greift wird die Default Policy angewandt. | + | *Wenn keine greift, wird die Default Policy angewandt. |
| + | *Bei Network Address Translation (NAT) wird die Default Policy normalerweise nicht geändert. | ||
{| class="wikitable" | {| class="wikitable" | ||
| − | !colspan="6"| | + | !colspan="6"|nat table |
|-style="font-style: italic; color: blue;" | |-style="font-style: italic; color: blue;" | ||
| − | ||INPUT||OUTPUT|| | + | ||PREROUTING||INPUT||OUTPUT||POSTROUTING |
|- | |- | ||
| − | ||rule 1 ||rule 1 ||rule 1 | + | ||rule 1 ||rule 1 ||rule 1 ||rule 1 |
|- | |- | ||
| − | ||rule 2 ||rule 2 ||rule 2 | + | ||rule 2 ||rule 2 ||rule 2||rule 2 |
|- | |- | ||
| − | ||rule 3 ||rule 3 ||rule 3 | + | ||rule 3 ||rule 3 ||rule 3||rule 2 |
|- | |- | ||
| − | ||rule 4 ||rule 4 ||rule 4 | + | ||rule 4 ||rule 4 ||rule 4|| rule 4 |
|-style="font-style: italic; color: red;" | |-style="font-style: italic; color: red;" | ||
| − | ||POLICY||POLICY||POLICY | + | ||POLICY||POLICY||POLICY||POLICY |
|} | |} | ||
| − | =Die | + | =Die nat Tabelle= |
| − | ==Die Ketten der | + | ==Die Ketten der nat Tabelle== |
| − | *''' | + | *'''PREROUTING''': für Pakte, die über eine Schnittstelle hereinkommen und noch bevor es entschieden ist, ob sie an den Rechner oder weitergeleitet werden. |
| − | *'''INPUT''': für Pakete die über eine Schnittstelle hereinkommen und einen Dienst auf dem Rechner ansprechen | + | *'''INPUT''': für Pakete, die über eine Schnittstelle hereinkommen und einen Dienst auf dem Rechner ansprechen. |
| − | *'''OUTPUT''': für | + | *'''OUTPUT''': für über eine Schnittstelle herausgehenden Pakete, die von einem lokalen Dienst generiert werden. |
| + | *'''POSTROUTING''': Pakete, die den Rechner verlassen. | ||
| + | ;In diesem Schaubild ist mangle Tabelle ausgeblendet. | ||
| + | {{#drawio:iptables-nat.png}} | ||
| − | + | =Arten von Nat= | |
| − | + | *[[Arten von NAT]] | |
| + | ==Die Regeln der nat-Tabelle== | ||
| + | Regeln werden mit '''iptables''' erstellt und an Ziele geschickt. | ||
| − | + | ==Ziele der nat-Tabelle== | |
| − | + | *'''SNAT''': Quell Adresse oder Port werden verändert. | |
| − | == | + | *'''DNAT''': Ziel Adresse oder Port werden verändert. |
| − | + | *'''MASQUERADE''': Quell Adresse wird auf die IP einer Schnittstelle geändert. | |
| − | + | *'''NETMAP''': Ganze Netze werden umgesetzt. Kann sowohl Quell als auch Ziel Netze sein. | |
| − | *''' | + | *'''RETURN''': Abarbeitung geht mit der nächsten Kette weiter. |
| − | *''' | ||
| − | *''' | ||
| − | *''' | ||
=Syntax Allgemein= | =Syntax Allgemein= | ||
| − | Die Momentan in der ''' | + | Die Momentan in der '''nat''' Tabelle gesetzten Ketten und Regeln sieht man mit |
| − | *iptables -nvL -t | + | *iptables -nvL -t nat |
-L # Listing | -L # Listing | ||
| − | -t | + | -t nat # anzeigen der nat Tabelle |
-n # numerical | -n # numerical | ||
| − | - | + | |
| − | + | '''Ausgangsskript vom filter Workshop''' | |
| − | *iptables - | + | |
| + | =MASQUERADE= | ||
| + | *MASQUERADE agiert auch in der Regel in der POSTROUTING Kette | ||
| + | *Bei SNAT wird eine IP dynamisch zugewiesen. | ||
| + | '''iptables -t nat -A POSTROUTING -s $LAN -o $WANDEV -j MASQUERADE''' | ||
| + | =SNAT= | ||
| + | *SNAT agiert auch in der Regel in der POSTROUTING Kette | ||
| + | *Bei SNAT wird eine IP statisch zugewiesen. | ||
| + | *SNAT ist darum schneller als MASQUERADE | ||
| + | ;SNAT Pentant | ||
| + | *iptables -t nat -A POSTROUTING -s $LAN -o $WANDEV -j SNAT --to-source $WANIP | ||
| + | =NETMAP in der POSTROUTING KETTE= | ||
| + | *Mit NETMAP können ganze NETZE umgeschrieben werden | ||
| + | *In diesem Fall in der POSTROUTING Kette | ||
| + | *Hier wird das Original Netz in ein anderes umgesetzt. | ||
| + | *Neuer Eintrag in die /usr/local/etc/firewall.cfg | ||
| + | '''NEWLAN="10.82.242.0/24"''' | ||
| + | '''iptables -t nat -A POSTROUTING -j NETMAP -s $LAN --to $NEWLAN -o $WANDEV''' | ||
| + | =PORTFORWARDING= | ||
| + | *Beim Portforwarding wird ein Port der normalerweise an einem externen Interface ankommt, nach Innen geleitet. | ||
| + | *Portforwarding kommt in der PREROUTING Kette zur Anwendung | ||
| + | *Das Ziel beim Portforwarding ist DNAT | ||
| + | ;Wir leiten hier den Port 80 auf den Webserver um und den Port 9922 auf den ssh port des Webservers. | ||
| + | *Eintrag in die Konfigdatei | ||
| + | '''WEBSERVER=10.82.243.11''' | ||
| + | '''iptables -A FORWARD -p tcp --dport 80 -i $WANDEV -o $LANDEV -d $WEBSERVER -j ACCEPT''' | ||
| + | '''iptables -A FORWARD -p tcp --dport 22 -i $WANDEV -o $LANDEV -d $WEBSERVER -j ACCEPT''' | ||
| + | '''iptables -t nat -A PREROUTING -j DNAT -d $WANIP -p tcp --dport 80 --to $WEBSERVER''' | ||
| + | '''iptables -t nat -A PREROUTING -j DNAT -d $WANIP -p tcp --dport 9922 --to $WEBSERVER:22''' | ||
| + | |||
| + | =NETMAP in der PREROUTING KETTE= | ||
| + | *Mit NETMAP können ganze NETZE umgeschrieben werden | ||
| + | *In diesem Fall in der PREROUTING Kette | ||
| + | *Hier wird ein anderes Netz in das Original Netz umgesetzt. | ||
| + | ;firewall Regel | ||
| + | *iptables -A FORWARD -i $WANDEV -o $LANDEV -d $LAN -j ACCEPT | ||
| + | ;nat Regel | ||
| + | *iptables -t nat -A PREROUTING -j NETMAP -s $NEWLAN --to $LAN -i $WANDEV | ||
Aktuelle Version vom 1. August 2023, 11:24 Uhr
Funktionsweise
- Die Regeln werden nacheinander abgearbeitet bis eine Regel greift, wonach der Verarbeitungsprozess aufhört.
- Wenn keine greift, wird die Default Policy angewandt.
- Bei Network Address Translation (NAT) wird die Default Policy normalerweise nicht geändert.
| nat table | |||||
|---|---|---|---|---|---|
| PREROUTING | INPUT | OUTPUT | POSTROUTING | ||
| rule 1 | rule 1 | rule 1 | rule 1 | ||
| rule 2 | rule 2 | rule 2 | rule 2 | ||
| rule 3 | rule 3 | rule 3 | rule 2 | ||
| rule 4 | rule 4 | rule 4 | rule 4 | ||
| POLICY | POLICY | POLICY | POLICY | ||
Die nat Tabelle
Die Ketten der nat Tabelle
- PREROUTING: für Pakte, die über eine Schnittstelle hereinkommen und noch bevor es entschieden ist, ob sie an den Rechner oder weitergeleitet werden.
- INPUT: für Pakete, die über eine Schnittstelle hereinkommen und einen Dienst auf dem Rechner ansprechen.
- OUTPUT: für über eine Schnittstelle herausgehenden Pakete, die von einem lokalen Dienst generiert werden.
- POSTROUTING: Pakete, die den Rechner verlassen.
- In diesem Schaubild ist mangle Tabelle ausgeblendet.
Arten von Nat
Die Regeln der nat-Tabelle
Regeln werden mit iptables erstellt und an Ziele geschickt.
Ziele der nat-Tabelle
- SNAT: Quell Adresse oder Port werden verändert.
- DNAT: Ziel Adresse oder Port werden verändert.
- MASQUERADE: Quell Adresse wird auf die IP einer Schnittstelle geändert.
- NETMAP: Ganze Netze werden umgesetzt. Kann sowohl Quell als auch Ziel Netze sein.
- RETURN: Abarbeitung geht mit der nächsten Kette weiter.
Syntax Allgemein
Die Momentan in der nat Tabelle gesetzten Ketten und Regeln sieht man mit
- iptables -nvL -t nat
-L # Listing -t nat # anzeigen der nat Tabelle -n # numerical
Ausgangsskript vom filter Workshop
MASQUERADE
- MASQUERADE agiert auch in der Regel in der POSTROUTING Kette
- Bei SNAT wird eine IP dynamisch zugewiesen.
iptables -t nat -A POSTROUTING -s $LAN -o $WANDEV -j MASQUERADE
SNAT
- SNAT agiert auch in der Regel in der POSTROUTING Kette
- Bei SNAT wird eine IP statisch zugewiesen.
- SNAT ist darum schneller als MASQUERADE
- SNAT Pentant
- iptables -t nat -A POSTROUTING -s $LAN -o $WANDEV -j SNAT --to-source $WANIP
NETMAP in der POSTROUTING KETTE
- Mit NETMAP können ganze NETZE umgeschrieben werden
- In diesem Fall in der POSTROUTING Kette
- Hier wird das Original Netz in ein anderes umgesetzt.
- Neuer Eintrag in die /usr/local/etc/firewall.cfg
NEWLAN="10.82.242.0/24"
iptables -t nat -A POSTROUTING -j NETMAP -s $LAN --to $NEWLAN -o $WANDEV
PORTFORWARDING
- Beim Portforwarding wird ein Port der normalerweise an einem externen Interface ankommt, nach Innen geleitet.
- Portforwarding kommt in der PREROUTING Kette zur Anwendung
- Das Ziel beim Portforwarding ist DNAT
- Wir leiten hier den Port 80 auf den Webserver um und den Port 9922 auf den ssh port des Webservers.
- Eintrag in die Konfigdatei
WEBSERVER=10.82.243.11 iptables -A FORWARD -p tcp --dport 80 -i $WANDEV -o $LANDEV -d $WEBSERVER -j ACCEPT iptables -A FORWARD -p tcp --dport 22 -i $WANDEV -o $LANDEV -d $WEBSERVER -j ACCEPT iptables -t nat -A PREROUTING -j DNAT -d $WANIP -p tcp --dport 80 --to $WEBSERVER iptables -t nat -A PREROUTING -j DNAT -d $WANIP -p tcp --dport 9922 --to $WEBSERVER:22
NETMAP in der PREROUTING KETTE
- Mit NETMAP können ganze NETZE umgeschrieben werden
- In diesem Fall in der PREROUTING Kette
- Hier wird ein anderes Netz in das Original Netz umgesetzt.
- firewall Regel
- iptables -A FORWARD -i $WANDEV -o $LANDEV -d $LAN -j ACCEPT
- nat Regel
- iptables -t nat -A PREROUTING -j NETMAP -s $NEWLAN --to $LAN -i $WANDEV
