Ein Maskenball im LAN

maskDer heutige Post handelt von IP Masquerading, einem schnellen Weg um ein ganzes Netzwerk Online zu bringen, indem man den Gateway aufbaut. Alle Computer in unserem Netz – nennen wir es der Einfachheit halber doch LAN – senden ihre IP Pakete, sofern sie nicht für einen anderen Rechner im LAN bestimmt sind, an diesen Gateway. Dieser Gateway leitet nun die Pakete weiter und reicht die Antworten zurück an den entsprechenden Client. Vom Internet aus gesehen sieht es so aus, als würde jener Gateway diese Anfragen stellen. Man maskiert die Anfragen, welche aus dem LAN kommen.

Der Vorteil dabei liegt klar auf der Hand: Die Computer im LAN können nicht vom Internet aus erreicht werden. Das heisst mitunter, dass sie vor direkten Angriffen aus dem Internet geschützt sind.

Nun aber genug der blanken Theorie. Was brauch man, um Masquerading zu realisieren?

  • Iptables und dessen Erweiterungen im Kernel
  • Zwei Netzwerkkarten

Der als Gateway zu fungierende Rechner muss von allen im LAN befindlichen Clients erreichbar und dort als Gateway eingetragen sein. Den Rest erledigen ein paar Befehle auf der Shell:

Zuallererst erlauben wir dem Gateway, Pakete weiterzuleiten. Dies geschieht am Schnellsten über /proc. Will man es permanent lösen, bietet sich die Datei /etc/sysctl.conf an.

echo 1 > /proc/sys/net/ipv4/ip_forward

Das eigentliche Masquerading ist sehr simpel und passiert mit folgendem Befehl

iptables -A POSTROUTING -t nat -s 192.168.0.0/24 -j MASQUERADE

192.168.0.0 bezeichnet das LAN, welches wir durchstellen und maskieren wollen. Dieser Eintrag ist entsprechend anzupassen. Im Normalfall reicht es aus, die ersten drei Segmente der Serveradresse im LAN zu nehmen und die letzte Stelle auf 0 zu setzen, da wir das gesamte Netz meinen.

Wenn dabei etwas schief ging, ist es sehr einfach, die komplette Firewall (iptables) zurückzusetzen:

iptables -F
iptables -t nat -F
iptables -X
iptables -t nat -X

Author:

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert