Iptables Mangle: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
| Zeile 49: | Zeile 49: | ||
=MSS Reduktion= | =MSS Reduktion= | ||
==Theorie== | ==Theorie== | ||
| − | *Wenn | + | *Wenn PPPoE oder IPSec VPNs benutzt werden, kann man manchmal nicht die komplette 1500 Byte der MTU nutzen. |
*Man könnte nun auf Fragmentierung hoffen. | *Man könnte nun auf Fragmentierung hoffen. | ||
| − | *Leider haben viele Betriebssystem das Don't Fragment Bit gesetzt. | + | *Leider haben viele Betriebssystem das "Don't Fragment"-Bit gesetzt. |
*Die Pakete gehen dann oft ohne Rückmeldung verloren. | *Die Pakete gehen dann oft ohne Rückmeldung verloren. | ||
| − | *Es gibt aber einen Trick dies zu umgehen. | + | *Es gibt aber einen Trick, um dies zu umgehen. |
| − | *Im ersten Paket wird in den TCP | + | *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. | + | *Dies ist die Maximale Anzahl an Bytes, die ein TCP Paket übertragen kann. |
| − | *Wenn man dazu nun den IP(20 Byte) und den TCP( | + | *Wenn man dazu nun den IP (20 Byte) und den TCP (20 Byte) Header dazuzählt, kommt man auf eine theoretische MTU, die kleiner ist. |
| + | |||
==Befehl== | ==Befehl== | ||
iptables -t mangle -A FORWARD -p tcp -i $LANDEV -o $WANDEV --tcp-flags SYN,RST SYN -j TCPMSS --set-mss 1400 | iptables -t mangle -A FORWARD -p tcp -i $LANDEV -o $WANDEV --tcp-flags SYN,RST SYN -j TCPMSS --set-mss 1400 | ||
Version vom 2. September 2022, 10:58 Uhr
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 manchmal nicht die komplette 1500 Byte 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, um 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 (20 Byte) Header dazuzählt, kommt man auf eine theoretische 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
PORTFORWARDING ACCEPT Sauberer
- Wenn wir nach innen ein Portfording machen
- Wird zuerst der Port geändert und danach in der FORWARD Kette freigeschaltet.
- Beispiel
iptables -t nat -A PREROUTING -j DNAT -d $WANIP -p tcp --dport 80 --to $WEBSERVER iptables -A FORWARD -p tcp --dport 80 -i $WANDEV -o $LANDEV -d $WEBSERVER -j ACCEPT
- Wir wollen nun schon den Verbindungsaufbau zur WANIP kontrollieren.
iptables -t mangle -A PREROUTING -j MARK -i $WANDEV -p tcp --dport 80 -d $WANIP --set-mark 0x8 iptables -t nat -A PREROUTING -j DNAT -i $WANDEV -p tcp --dport 80 -d $WANIP --to $WEBSERVER iptables -t filter -A FORWARD -j ACCEPT -m mark --mark 0x8
