Iptables Nat: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
| (27 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 | + | *Bei Network Address Translation (NAT) wird die Default Policy normalerweise nicht geändert. |
{| class="wikitable" | {| class="wikitable" | ||
!colspan="6"|nat table | !colspan="6"|nat table | ||
| Zeile 21: | Zeile 21: | ||
=Die nat Tabelle= | =Die nat Tabelle= | ||
==Die Ketten der nat Tabelle== | ==Die Ketten der nat Tabelle== | ||
| − | *'''PREROUTING''': für Pakte die über eine Schnittstelle hereinkommen | + | *'''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. | + | *'''POSTROUTING''': Pakete, die den Rechner verlassen. |
;In diesem Schaubild ist mangle Tabelle ausgeblendet. | ;In diesem Schaubild ist mangle Tabelle ausgeblendet. | ||
{{#drawio:iptables-nat.png}} | {{#drawio:iptables-nat.png}} | ||
| − | ==Die | + | =Arten von Nat= |
| + | *[[Arten von NAT]] | ||
| + | ==Die Regeln der nat-Tabelle== | ||
Regeln werden mit '''iptables''' erstellt und an Ziele geschickt. | Regeln werden mit '''iptables''' erstellt und an Ziele geschickt. | ||
| − | ==Ziele der | + | |
| − | + | ==Ziele der nat-Tabelle== | |
| − | |||
*'''SNAT''': Quell Adresse oder Port werden verändert. | *'''SNAT''': Quell Adresse oder Port werden verändert. | ||
*'''DNAT''': Ziel 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. | *'''MASQUERADE''': Quell Adresse wird auf die IP einer Schnittstelle geändert. | ||
| − | *'''NETMAP''': Ganze Netze werden umgesetzt. Kann sowohl Quell als auch Ziel Netze sein | + | *'''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= | ||
| Zeile 42: | Zeile 44: | ||
*iptables -nvL -t nat | *iptables -nvL -t nat | ||
-L # Listing | -L # Listing | ||
| − | -t | + | -t nat # anzeigen der nat Tabelle |
-n # numerical | -n # numerical | ||
| Zeile 48: | Zeile 50: | ||
=MASQUERADE= | =MASQUERADE= | ||
| − | + | *MASQUERADE agiert auch in der Regel in der POSTROUTING Kette | |
| − | *MASQUERADE | + | *Bei SNAT wird eine IP dynamisch zugewiesen. |
| − | + | '''iptables -t nat -A POSTROUTING -s $LAN -o $WANDEV -j MASQUERADE''' | |
| − | |||
| − | |||
| − | * | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | '''iptables -t nat -A POSTROUTING -s $LAN -o $WANDEV -j MASQUERADE''' | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
=SNAT= | =SNAT= | ||
*SNAT agiert auch in der Regel in der POSTROUTING Kette | *SNAT agiert auch in der Regel in der POSTROUTING Kette | ||
| Zeile 142: | Zeile 63: | ||
*In diesem Fall in der POSTROUTING Kette | *In diesem Fall in der POSTROUTING Kette | ||
*Hier wird das Original Netz in ein anderes umgesetzt. | *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''' | '''iptables -t nat -A POSTROUTING -j NETMAP -s $LAN --to $NEWLAN -o $WANDEV''' | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
=PORTFORWARDING= | =PORTFORWARDING= | ||
*Beim Portforwarding wird ein Port der normalerweise an einem externen Interface ankommt, nach Innen geleitet. | *Beim Portforwarding wird ein Port der normalerweise an einem externen Interface ankommt, nach Innen geleitet. | ||
*Portforwarding kommt in der PREROUTING Kette zur Anwendung | *Portforwarding kommt in der PREROUTING Kette zur Anwendung | ||
| − | *Das Ziel beim | + | *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. | ;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''' | '''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 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 -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''' | |
| − | + | ||
| − | |||
| − | |||
| − | |||
| − | iptables -t nat -A PREROUTING -j DNAT -d $WANIP -p tcp --dport 9922 --to $WEBSERVER:22 | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
=NETMAP in der PREROUTING KETTE= | =NETMAP in der PREROUTING KETTE= | ||
*Mit NETMAP können ganze NETZE umgeschrieben werden | *Mit NETMAP können ganze NETZE umgeschrieben werden | ||
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
