Iptables Nat: Unterschied zwischen den Versionen

Aus Xinux Wiki
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 wenn eine Regel greift hört der Verarbeitungsprozess auf.
+
*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"|filter table
+
!colspan="6"|nat table
 
|-style="font-style: italic; color: blue;"
 
|-style="font-style: italic; color: blue;"
||INPUT||OUTPUT||FORWARD
+
||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 filter Tabelle=
+
=Die nat Tabelle=
==Die Ketten der filter Kette==
+
==Die Ketten der nat Tabelle==
*'''FORWARD''': für Pakte die über eine Schnittstelle hereinkommen, den Rechner auch wieder verlassen.  
+
*'''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 die über eine Schnittstelle herausgehenden Pakete, die von einem lokalen Dienst
+
*'''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}}
  
;In diesem Schaubild sind nat und mangel Tabellen ausgeblendet.
+
=Arten von Nat=
{{#drawio:iptables-filter.png}}
+
*[[Arten von NAT]]
 +
==Die Regeln der nat-Tabelle==
 +
Regeln werden mit '''iptables''' erstellt und an Ziele geschickt.
  
*Jedes Paket durchläuft nur eine Filter Kette
+
==Ziele der nat-Tabelle==
 
+
*'''SNAT''': Quell Adresse oder Port werden verändert.  
==Die Filter Regeln der filter Tabelle==
+
*'''DNAT''': Ziel Adresse oder Port werden verändert.
Regeln werden mit '''iptables''' erstellt und an Ziele geschickt.
+
*'''MASQUERADE''': Quell Adresse wird auf die IP einer Schnittstelle geändert.
==Ziele der filter Tabelle==
+
*'''NETMAP''': Ganze Netze werden umgesetzt. Kann sowohl Quell als auch Ziel Netze sein.
*'''ACCEPT''': das Paket kann passieren
+
*'''RETURN''': Abarbeitung geht mit der nächsten Kette weiter.
*'''REJECT''': das Paket wird zurückgewiesen und ein Fehlerpaket wird gesendet
 
*'''LOG''': schreibt einen Eintrag in die syslog
 
*'''DROP''': das Paket wird ignoriert und keine Antwort gesendet
 
  
 
=Syntax Allgemein=
 
=Syntax Allgemein=
Die Momentan in der '''filter''' Tabelle gesetzten Ketten und Regeln sieht man mit  
+
Die Momentan in der '''nat''' Tabelle gesetzten Ketten und Regeln sieht man mit  
*iptables -nvL -t filter
+
*iptables -nvL -t nat
 
  -L        # Listing
 
  -L        # Listing
  -t filter # anzeigen der filter Kette
+
  -t nat    # anzeigen der nat Tabelle
 
  -n        # numerical
 
  -n        # numerical
  -v        # verbose
+
 
Da -t filter Default ist, kann man es auch weglassen,
+
'''Ausgangsskript vom filter Workshop'''
*iptables -nvL -t filter
+
 
 +
=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