Plasterouter versus eigenem Router -Teil 3-

Hier will ich grob zeigen wie man vorgeht, einen einfachen Router aufzubauen. Dies stellt keine vollständige Anleitung dar.

Hardware

Bei den heutigen Bandbreiten unserer Festnetzanschüssen brauchen wir auf jeden Fall Gigabit für das Netzwerk. Um diese IO-Last zu gewährleisten, benötigen wir mindestens etwas wie einen Raspberry 4. Dazu kommt ein USB-3-Lan-Adapter. Beides ist bei fast allen gängigen Kistenschiebern erhältlich.

Installation eines Betriebssystem

Da ich seit langem mit Debian arbeite, verwende ich auch diese Distribution. Zu Installation verweise ich auf die Dokumentation von Debian:

Debian Installation Debian Wiki

Während des Installationsvorgang wird im Debian-Installer ein sogenannter Tasksel ausgeführt. Hier bitte alle Desktops wie Gnome und Co. abwählen. Sie sind hier überflüssig. Was wir brauchen ist der SSH-Server. Der sollte gleich mit installiert werden.

Welche Tools brauchen wir

Ich habe immer gern ein paar Tools an Bord, die so nicht dabei sind

Einfache Policy

Wir wollen einfach nur mit unseren PC und Endgeräten ins Internet. Dabei soll von aussen auf unsere Geräte kein Zugriff möglich sein. So machen es die Router der Provider auch.

Einfaches Routing

Seit der Version 11 von Debian kommt nftables statt iptables zum Einsatz. Da ich weiterhin iptables verwenden möchte, ist folgender Schritt als root nötig:

$ update-alternatives —config iptables Es gibt 2 Auswahlmöglichkeiten für die Alternative iptables Auswahl Pfad Priorität Status * 0 /usr/sbin/iptables-nft 20 automatischer Modus 1 /usr/sbin/iptables-legacy 10 manueller Modus 2 /usr/sbin/iptables-nft 20 manueller Modus

Wir wählen “1” aus und benutzen den reinen iptables als Paketfilter.

Nun wird das Forwarding im Kernel aktiviert:

$ sysctl -w net.ipv4.ip_forward=1

oder

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

Um diese Einstellung persistent zu machen, setzen wir in der Datei /etc/sysctl.conf folgende Zuweisung ein:

net.ipv4.ip_forward = 1

Wir haben 2 Netzwerkschnittstellen. * eth0 zeigt auf das interne Lan * eth1 zeigt auf den DSL-Router

Wir setzen die Maskierung der Pakete ein, die ins Internet geschickt werden. Das heist, alle Pakete werden mit der IP des Interface eth1 maskiert. Der DSL-Router sieht also nur Pakete von dieser IP:

$ iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE

Im Groben und Ganzen sind wir hier fertig. Mehr macht der DSL-Router auch nicht.

NAT oder nicht?

Warum passiert diese Maskierung überhaupt? Ein kleiner Ausflug in die Welt der IP... Per Definition gib es drei Subnetze bei IPv4, die nicht im Internet geroutet werden:

10.0.0.8/8 172.16.0.0/12 192.168.0.0/16

Eines dieser Netzbereiche wird hinter der DSL-Box verwendet. So auch bei meiner:

192.168.178.0/24

Die Zahl hinter dem “/” sagt aus, wieviele IP sich dahinter verbergen:

/8 = 2^24= 16.777.216 /12 = 2^20= 1.048.576 /24= 2^16 = 65.536

Fazit

So wir vorgegangen sind, werden unsere Pakete zweimal maskiert oder “genattet”. Einmal von unserem eigenen Router und ein zweites Mal von der DSL-Box. Das Maskieren auf unserem Router ist eigendlich nicht notwendig, da das ja die DSL-Box für uns erledigt. Es kostet einfach nur Rechenleistung.

Dieser Teil sollte nur einen Einstieg in ein sehr komplexes Thema vermitteln. Vieles habe ich aus Gründen der Übersicht stark vereinfacht oder auch weg gelassen. Im nächsten Teil machen wir einen Ausflug in das DNS und DHCP, um zu verstehen, warum diese Dienste auch für den Betrieb eines eigenen Routers oder Firewall wichtig sind.

Wikipedia: Private IP Wikipedia: IP Debian Installation Debian Wiki