Iptables Mangle

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen

Funktionsweise

  • Die Regeln werden nacheinander abgearbeitet wenn eine Regel greift hört der Verarbeitungsprozess auf.
  • Wenn keine greift wird die Default Policy angewandt.
  • Bei nat wird die Default Policy normalerweise nicht geändert.
nat table
PREROUTING INPUT FORWARD OUTPUT POSTROUTING
rule 1 rule 1 rule 1 rule 1 rule 1
rule 2 rule 2 rule 2 rule 2 rule 1
rule 3 rule 3 rule 3 rule 2 rule 1
rule 4 rule 4 rule 4 rule 4 rule 1
POLICY POLICY POLICY POLICY POLICY

Die mangle Tabelle

Die Ketten der mangle Tabelle

  • PREROUTING: für Pakte die über eine Schnittstelle hereinkommen, noch bevor 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
  • FORWARD: für Pakte die über eine Schnittstelle hereinkommen, den Rechner auch wieder verlassen.
  • OUTPUT: für die über eine Schnittstelle herausgehenden Pakete, die von einem lokalen Dienst generiert werden
  • POSTROUTING: Pakete die den Rechner verlassen.

Die Regeln der mangle Tabelle

Regeln werden mit iptables erstellt und an Ziele geschickt.

Ziele der Tabelle

  • ACCEPT: das Paket kann passieren
  • REJECT: das Paket wird zurückgewiesen und ein Fehlerpaket wird gesendet
  • 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

Syntax Allgemein

Die Momentan in der mangle Tabelle gesetzten Ketten und Regeln sieht man mit

  • iptables -nvL -t nat
-L        # Listing
-t mangle # anzeigen der mangle Tabelle
-n        # numerical

Ausgangsskript vom filter Workshop

MSS Reduktion

Theorie

  • Wenn PPPOE oder IPSEC VPNS benutzt werden, kann man ab und nicht die komplette 1500 Byter der MTU nutzen.
  • Man könnte nun auf Fragmentierung hoffen.
  • Leider haben viele Betriebssystem das Don't Fragment Bit gesetzt.
  • Die Pakete gehen dann oft ohne Rückmeldung verloren.
  • Es gibt aber einen Trick dies zu umgehen.
  • Im ersten Paket wird in den TCP OPTIONEN die Maximale Segment Size(MSS) angeben.
  • Dies ist die Maximale Anzahl an Bytes die ein TCP Paket übertragen kann.
  • Wenn man dazu nun den IP(20 Byte) und den TCP(20Byte) Header dazuzählt kommt man auf eine theoritische MTU, die kleiner ist.

Befehl

  • iptables -t mangle -A FORWARD -p tcp -i $LANDEV -o $WANDEV --tcp-flags SYN,RST SYN -j TCPMSS --set-mss 1400