Routing verstehen und einsetzen
Routing ist eine Wegbeschreibung für Datenpakete in einem Netzwerk. Ein Netzwerk kann aus mehreren Subnetzen bestehen. Damit bestimmte Geräte aus verschiedenen Subnetzen miteinander kommentieren können, müssen wir Routen setzen.
Wenn man bestimmte Regeln beachtet, ist das Setzen von Routen ziemlich einfach und verständlich. Ich selbst beachte, auch die gleichen Regeln.
- Ein Plan des Netzwerkes muss vorhanden sein, auf dem Papier oder im Kopf.
- Feststellung von Anzahl der Subnetzen, mindestens in bestimmten Bereich, wenn das Firmennetz sehr groß ist.
- Feststellung von Anzahl der Gateways in einem Subnetz. Das ist die Anzahl der Geräte, die 2 oder mehr IP-Adressen aus verschiedenen Subnetzen besitzen.
- Festlegung des Standard-Gateways (Default-Gateway) für jedes Subnetz. Grundsätzlich ist das Gateway
(IP-Adresse), das in Richtung Internet zeigt.
Ein praktisches Beispiel eines Netzes, das sich auf der Zeichnung befindet.
Zuerst machen wir die Analyse des Netzwerkes und versuchen auf die 4 Punkte von oben zu beantworten.
- Ist der Netzwerkplan vorhanden? Ja
- Wie viel Subnetze haben wir? 3
Netz1: 172.16.0.0/22
Netz2: 192.168.16.0/24
Netz3: 192.168.4.0/24 - Anzahl der Gateways
Netz1: 3, insgesamt gibt es 3 Geräte in diesem Netz, die mit anderen Netzen direkt kommunizieren,
das ist die Firewall, Router1 und Router2
Netz2: 1 (Router1)
Netz3: 1 (Router2) - Die Standardgateways werden wie folgt festgelegt, immer Richtung Internet
-für Netz1: 172.16.0.0/22, Standard Gateway: 172.16.0.1
-für Netz2: 192.168.16.0/24, Standard Gateway: 192.168.16.20
-für Netz3: 192.168.4.0/24, Standard Gateway: 192.168.4.30
Jedes Gerät, unabhängig von Anzahl der Netzwerkkarten (IP-Adressen) bekommt nur ein Standard Gateway und
zwar für der Netzwerkkarte, die in die Richtung Internet zeigt.
Wir können jetzt jedem Gerät in jedem Subnetz die entsprechende IP-Adresse vergeben und das dazugehörige Gateway. Als DNS IP-Adresse können wir vorübergehend eine öffentliche DNS IP-Adresse nehmen. z.B. 8.8.8.8. Ab jetzt kann man von jedem Gerät beliebige Internetadresse erreichen.
Um Geräte von einem anderen Subnetzen zu erreichen, müssen wir entsprechende Routen setzen. An welchem Gerät die Route gesetzt wird, ist abhängig von dem, was wir erreichen wollen. In unserem Fall gibt es drei Möglichkeiten,
- alle Routen werden an der Firewall gesetzt. Es ist überschaubar mit wenig Aufwand. Alle Netze können
miteinander kommunizieren. Nachteil: bei sehr großen Datenmengen kann die Firewall-Netzwerkkarte überlastet werden. - die Routen werden an den Geräten im Netz1 gesetzt. Das ist mit mehr Aufwand verbunden. Der Vorteil: Netz2
und Netz3 kann mit Netz1 Kommunizieren, aber Netz2 mit Netz3 können erst miteinander kommunizieren,
wenn weitere Routen an Router1 bzw. Route2 gesetzt werden. Die Netzwerkkarte der Firewall wird nicht
so stark belastet. - Wir können auch die Routen in allen notwendigen Geräten im Netz1 setzen.
Abhängig von Betriebssystem werden bestimmte Kommandos benutzt, um die Routen in System (auf dem Gerät) einzutragen. Die Route kann man auf der Firewall bzw. auf dem Server (Netz1) eintragen. Die Vorteile und Nachteile wurden schon erwähnt.
Bei Linux Debian 12 z.B.
# ip route add {DESTINATION_NETWORK} via {GATEWAY_IP} dev {DEVICE}
In unserem Fall würde das so aussehen, wir müssen allerdings zuerst schauen, wie unsere Netzwerkkarte heißt.
# ip route add 192.168.16.0/24 via 172.16.0.20 dev eth0
# ip route add 192.168.4.0/24 via 172.16.0.30 dev eth0
Bei Windows. Hier könnte man noch den Parameter -p benutzen, bedeutet permanent. route -p ADD ...
In unserem Fall würde das so aussehen, wir müssen allerdings zuerst schauen, wie unsere Netzwerkkarte heißt.
# ip route add 192.168.16.0/24 via 172.16.0.20 dev eth0
# ip route add 192.168.4.0/24 via 172.16.0.30 dev eth0
Bei Windows. Hier könnte man noch den Parameter -p benutzen, bedeutet permanent. route -p ADD ...
C:\> route ADD {DESTINATION_NETWORK} MASK {SUBNET_MASK} {GATEWAY_IP}
In unserem Fall würde das so aussehen
C:\> route ADD 192.168.16.0 MASK 255.255.255.0 172.16.0.20
C:\> route ADD 192.168.4.0 MASK 255.255.255.0 172.16.0.30
In unserem Fall würde das so aussehen
C:\> route ADD 192.168.16.0 MASK 255.255.255.0 172.16.0.20
C:\> route ADD 192.168.4.0 MASK 255.255.255.0 172.16.0.30
Analyse der Routen
Wir analysieren die Routen.
Wir machen einen einfachen ping von 192.168.16.77 nach 172.16.0.10
Zuerst ohne irgendwelcher Route zu setzen.
Die Pakete gehen von 192.168.16.77 nach 192.168.16.20 -> 172.16.0.20 -> 172.16.0.10. Der Server beantwortet. Auf dem 172.16.0.10 sind keine Routen gesetzt und die Pakete aus dem Netz 192.168.16.0 sind unbekannt. Die Pakete werden an Standard Gateway geschickt 172.16.0.1. Für die Firewall sind das auch unbekannte Pakete, weil hier auch keine Route gesetzt ist. Die Pakete gehen ins Internet und gehen verloren.
Auf dem 192.168.16.77 bekomme ich von dem 172.16.0.10 keine Antwort. Es scheint so, als würden die Pakete den Server 172.16.0.10 nicht erreichen. In Wirklichkeit erreichen die Pakete den Server, aber die Antwortroute ist falsch.
Die entsprechende Route wird in der Firewall gesetzt.
Die Pakete gehen von 192.168.16.77 nach 192.168.16.20 -> 172.16.0.20 -> 172.16.0.10. Der Server beantwortet. Auf dem 172.16.0.10 sind keine Routen gesetzt und die Pakete aus dem Netz 192.168.16.0 sind unbekannt. Die Pakete werden an Standard Gateway geschickt 172.16.0.1. Hier ist die Route gesetzt und sagt so viel wie, alle Pakete für das Netz 192.168.16.0/24 bitte nach 172.16.0.20 schicken. Wir bekommen eine Antwort.
Wir machen einen einfachen ping von 192.168.16.77 nach 172.16.0.10
Zuerst ohne irgendwelcher Route zu setzen.
Die Pakete gehen von 192.168.16.77 nach 192.168.16.20 -> 172.16.0.20 -> 172.16.0.10. Der Server beantwortet. Auf dem 172.16.0.10 sind keine Routen gesetzt und die Pakete aus dem Netz 192.168.16.0 sind unbekannt. Die Pakete werden an Standard Gateway geschickt 172.16.0.1. Für die Firewall sind das auch unbekannte Pakete, weil hier auch keine Route gesetzt ist. Die Pakete gehen ins Internet und gehen verloren.
Auf dem 192.168.16.77 bekomme ich von dem 172.16.0.10 keine Antwort. Es scheint so, als würden die Pakete den Server 172.16.0.10 nicht erreichen. In Wirklichkeit erreichen die Pakete den Server, aber die Antwortroute ist falsch.
Die entsprechende Route wird in der Firewall gesetzt.
Die Pakete gehen von 192.168.16.77 nach 192.168.16.20 -> 172.16.0.20 -> 172.16.0.10. Der Server beantwortet. Auf dem 172.16.0.10 sind keine Routen gesetzt und die Pakete aus dem Netz 192.168.16.0 sind unbekannt. Die Pakete werden an Standard Gateway geschickt 172.16.0.1. Hier ist die Route gesetzt und sagt so viel wie, alle Pakete für das Netz 192.168.16.0/24 bitte nach 172.16.0.20 schicken. Wir bekommen eine Antwort.
Die entsprechende Route wird auf einem Server in Netz1 gesetzt. z.B. Auf dem 172.16.0.10
Die Pakete gehen von 192.168.16.77 nach 192.168.16.20 -> 172.16.0.20 -> 172.16.0.10. Der Server beantwortet. Auf dem 172.16.0.10 wurde eine Route gesetzt und sagt so viel wie, alle Pakete für das Netz 192.168.16.0/24 bitte nach 172.16.0.20 schicken. Wir bekommen eine Antwort. In diesem Fall wird die Firewall Schnittstelle nicht belastet.
Die Pakete gehen von 192.168.16.77 nach 192.168.16.20 -> 172.16.0.20 -> 172.16.0.10. Der Server beantwortet. Auf dem 172.16.0.10 wurde eine Route gesetzt und sagt so viel wie, alle Pakete für das Netz 192.168.16.0/24 bitte nach 172.16.0.20 schicken. Wir bekommen eine Antwort. In diesem Fall wird die Firewall Schnittstelle nicht belastet.
Es wird noch interessanter, wenn Netz2 mit Netz3 direkt kommunizieren soll und in der Firewall noch keine Route gesetzt ist.
Wir machen einen einfachen ping von 192.168.16.77 nach 192.168.4.88. Damit das funktioniert, müssen wir zwei Routen setzen.
Einmal auf dem Router1. <ethX> ersetzen Sie bitte mit dem richtigen Kartennetzwerknamen.
# ip route add 192.168.4.0/24 via 172.16.0.30 dev <ethX>
Wir machen einen einfachen ping von 192.168.16.77 nach 192.168.4.88. Damit das funktioniert, müssen wir zwei Routen setzen.
Einmal auf dem Router1. <ethX> ersetzen Sie bitte mit dem richtigen Kartennetzwerknamen.
# ip route add 192.168.4.0/24 via 172.16.0.30 dev <ethX>
Einmal auf dem Router2. <ethX> ersetzen Sie bitte mit dem richtigen Kartennetzwerknamen.
# ip route add 192.168.16.0/24 via 172.16.0.20 dev <ethX>
Die Kommunikation zwischen den 2 Netzen funktioniert jetzt.
Wenn die Netze2 und Netz3 Internetzugriff haben sollen, müssen wir auch die Routen in der Firewall eintragen. Letztendlich die Firewall sollte auch wissen, an welches Gateway im Netz1 die entsprechenden Pakete geschickt werden sollen. In unserem Fall Pakete für das Netz2 192.168.16.0/24 sollten an das Gateway 172.16.0.20 geschickt werden und Pakete für das Netz3 192.168.4.0/24 an das Gateway 172.16.0.30,