So verwandeln Sie einen Linux -Server in einen Router, um den Verkehr statisch und dynamisch zu bewältigen - Teil 10

So verwandeln Sie einen Linux -Server in einen Router, um den Verkehr statisch und dynamisch zu bewältigen - Teil 10

Wie wir in früheren Tutorials davon erwartet haben Lfce (Linux Foundation Certified Engineer) Serie werden in diesem Artikel das Routing des IP -Verkehrs statisch und dynamisch mit bestimmten Anwendungen erörtert.

Linux Foundation Certified Engineer - Teil 10
Einführung des Linux Foundation -Zertifizierungsprogramms

Das Wichtigste zuerst, lassen Sie uns einige Definitionen klarstellen:

  1. In einfachen Worten a Paket ist die grundlegende Einheit, mit der Informationen innerhalb eines Netzwerks übertragen werden. Netzwerke, die TCP/IP als Netzwerkprotokoll verwenden.
  2. Routing ist der Prozess von “Leitfaden”Die Daten von Quelle zu Ziel innerhalb eines Netzwerks.
  3. Statische Routing erfordert eine manuell konfigurierte Reihe von Regeln, die in einer Routing-Tabelle definiert sind. Diese Regeln werden festgelegt und werden verwendet, um die Art und Weise zu definieren, wie ein Paket durchlaufen muss, wenn es von einer Maschine zu einer anderen wandert.
  4. Dynamisches Routing, oder Smart Routing (Wenn Sie möchten) bedeutet, dass sich das System nach Bedarf automatisch verändern kann, die Route, die ein Paket folgt.

Erweiterte IP- und Netzwerkgerätekonfiguration

Der iPrute Das Paket bietet eine Reihe von Tools zur Verwaltung der Netzwerk- und Verkehrskontrolle, die wir in diesem Artikel verwenden werden, da sie den Austausch von Legacy -Tools wie IFConfig und darstellen Route.

Der zentrale Nutzen in der iPrute Suite heißt einfach IP. Die grundlegende Syntax ist wie folgt:

# IP -Objektbefehl 

Wo Objekt kann nur eines der folgenden sein (nur die häufigsten Objekte werden angezeigt - Sie können sich auf den Menschen beziehen IP für eine vollständige Liste):

  1. Verknüpfung: Netzwerkgerät.
  2. ADDR: Protokoll (IP- oder IPv6) -Ade auf einem Gerät.
  3. Route: Routing -Tabelleneintrag.
  4. Regel: Regel in der Routing -Richtlinie -Datenbank.

Wohingegen Befehl repräsentiert eine spezifische Aktion, die am Objekt ausgeführt werden kann. Sie können den folgenden Befehl ausführen, um die vollständige Liste der Befehle anzuzeigen, die auf ein bestimmtes Objekt angewendet werden können:

# IP -Objekthilfe 

Zum Beispiel,

# IP -Link Hilfe 
IP -Befehlshilfe

Das obige Bild zeigt beispielsweise, dass Sie den Status einer Netzwerkschnittstelle mit dem folgenden Befehl ändern können:

# IP -Link -Set -Schnittstelle up | runter 

Für solche weiteren Beispiele von ''IP'Befehl, 10 nützliche' IP ' -Befehle lesen, um die IP -Adresse zu konfigurieren

Beispiel 1: Deaktivieren und Aktivieren einer Netzwerkschnittstelle

In diesem Beispiel werden wir deaktivieren und aktivieren Eth1:

# IP -Link anzeigen # IP -Link Set Eth1 Down # IP -Link anzeigen 
Deaktivieren Sie die ETH0 -Schnittstelle

Wenn Sie ETH1 erneut erleben möchten,

# IP -Link Setzen Sie ETH1 auf 

Anstatt alle Netzwerkschnittstellen anzuzeigen, können wir eines davon angeben:

# IP -Link anzeigen ETH1 

Die alle Informationen für ETH1 zurückgeben.

Beispiel 2: Anzeige der Hauptrouting -Tabelle

Sie können Ihre aktuelle Hauptrouting -Tabelle mit einem der folgenden 3 Befehle anzeigen:

# IP -Route Show # Route -n # netstat -rn 
Überprüfen Sie die Linux -Routentabelle

Die erste Spalte in der Ausgabe der drei Befehle gibt das Zielnetzwerk an. Die Ausgabe von IP -Route anzeigen (folgen dem Schlüsselwort Dev) präsentiert auch die Netzwerkgeräte, die als physisches Tor zu diesen Netzwerken dienen.

Obwohl heutzutage die IP -Befehl wird über Route bevorzugt, Sie können sich immer noch auf den Menschen beziehen IP-Route Und Mannroute Für eine detaillierte Erklärung des Restes der Spalten.

Beispiel 3: Verwenden eines Linux -Servers, um Pakete zwischen zwei privaten Netzwerken zu leiten

Wir wollen Routen ICMP (PING) Pakete von Dev2 bis Dev4 und umgekehrt (beachten Sie, dass beide Client -Maschinen in verschiedenen Netzwerken sind). Der Name jeder NIC sowie die entsprechende IPv4 -Adresse ist in quadratischen Klammern angegeben.

Unsere Testumgebung ist wie folgt:

Kunde 1: Centos 7 [ENP0S3: 192.168.0.17/24] - Dev1 Router: Debian wheezy 7.7 [ETH0: 192.168.0.15/24, ETH1: 10.0.0.15/24] - Dev2 Kunde 2: OpenSuse 13.2 [ENP0S3: 10.0.0.18/24] - Dev4 

Lassen Sie uns die Routing -Tabelle in Dev1 (CentOS -Box) anzeigen:

# IP -Routenshow 

und modifizieren Sie es dann, um seine zu verwenden ENP0S3 NIC und die Verbindung zu 192.168.0.15, um auf Hosts in den 10 zuzugreifen.0.0.0/24 Netzwerk:

# IP -Route 10 hinzufügen.0.0.0/24 über 192.168.0.15 Dev ENP0S3 

Was im Wesentlichen lautet: „Fügen Sie dem 10 eine Route hinzu.0.0.0/24 Netzwerk über die ENP0S3 -Netzwerkschnittstelle mit 192.168.0.15 als Gateway “.

Routennetzwerk in Linux

Ebenso in Dev4 (OpenSuse Box) an Ping -Hosts in der 192.168.0.0/24 Netzwerk:

# IP -Route add 192.168.0.0/24 über 10.0.0.15 Dev ENP0S3 
Netzwerkrouting unter Linux

Schließlich müssen wir in unserem Debian -Router die Weiterleitung ermöglichen:

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

Jetzt lasst uns pingen:

Überprüfen Sie das Netzwerkrouting

Und,

Routen Sie den Pingstatus

Damit diese Einstellungen über die Stiefel hinweg fortbestehen können, bearbeiten Sie /etc/sysctl.Conf auf dem Router und stellen Sie sicher, dass die Netz.IPv4.ip_forward Variable wird wie folgt auf True eingestellt:

Netz.IPv4.ip_forward = 1 

Konfigurieren Sie außerdem die NICs in beiden Clients (suchen Sie nach der Konfigurationsdatei innerhalb /etc/sysconfig/network auf OpenSuse und /etc/sysconfig/network-scripts In CentOS - in beiden Fällen heißt es IFCFG-ENP0S3).

Hier ist die Konfigurationsdatei aus dem OpenSuSe -Box:

BootProto = static Broadcast = 10.0.0.255 iPaddr = 10.0.0.18 NetMask = 255.255.255.0 Gateway = 10.0.0.15 Name = ENP0S3 Network = 10.0.0.0 Onboot = Ja 
Beispiel 4: Verwenden eines Linux -Servers, um Pakete zwischen privaten Netzwerken und dem Internet zu leiten

Ein weiteres Szenario, in dem ein Linux -Computer als Router verwendet werden kann, ist, wenn Sie Ihre Internetverbindung mit einem privaten LAN teilen müssen.

Router: Debian wheezy 7.7 [ETH0: Öffentliche IP, ETH1: 10.0.0.15/24] - Dev2 Klient: OpenSuse 13.2 [ENP0S3: 10.0.0.18/24] - Dev4 

Zusätzlich zur Einrichtung der Paketweiterleitung und der statischen Routing -Tabelle im Client müssen wir im Router einige Iptables -Regeln hinzufügen:

# iptables -t nat -a poTrouting -o eth0 -j masquerade # iptables -a Forward -i ETH0 -O ETH1 -M -Staat -State verwandt, etabliert -j Akzeptieren # iptables -a Forward -i Eth1 -o Eth0 -j AKZEPTIEREN 

Der erste Befehl fügt dem eine Regel hinzu Postrouting Kette in der NAT -Tabelle (Netzwerkadressenübersetzung), die angibt, dass die ETH0 -NIC für ausgehende Pakete verwendet werden sollte.

Maskerade Zeigt an, dass diese NIC eine dynamische IP hat und das, bevor das Paket an die “gesendet wird“wilde wilde Welt”Aus dem Internet muss die private Quelladresse des Pakets in die der öffentlichen IP des Routers geändert werden.

In einem LAN mit vielen Gastgebern verfolgt der Router etablierte Verbindungen in /proc/net/ip_conntrack Es weiß also, wo die Antwort aus dem Internet wieder auf die Reaktion zurückgegeben werden muss.

Nur ein Teil der Ausgabe von:

# Cat/Proc/net/ip_conntrack 

wird im folgenden Screenshot angezeigt.

Routenpakete in Linux

Wenn der Ursprung (private IP von OpenSuse -Box) und das Ziel (Google DNS) von Paketen hervorgehoben wird. Dies war das Ergebnis des Laufens:

# curl www.Tecmint.com 

auf der openSuse -Box.

Wie Sie sicher schon erraten können, verwendet der Router die 8 von Google.8.8.8 als Namenserver, was erklärt, warum das Ziel der ausgehenden Pakete auf diese Adresse hinweist.

Notiz: Diese eingehenden Pakete aus dem Internet werden nur akzeptiert, wenn sie Teil einer bereits festgelegten Verbindung sind (Befehl Nr. 2), während ausgehende Pakete zulässig sind “Kostenloser Ausgang”(Befehl #3).

Vergessen Sie nicht, Ihre Iptables -Regeln anhaltend den in Teil 8 beschriebenen Schritten zu befolgen - Konfigurieren Sie Iptables Firewall dieser Serie.

Dynamisches Routing mit Quagga

Heutzutage ist das Werkzeug, das am meisten für dynamisches Routing unter Linux verwendet wird Quagga. Es ermöglicht die Systemadministratoren, mit einem relativ kostengünstigen Linux-Server die gleiche Funktionalität zu implementieren, die von leistungsstarken (und kostspieligen) Cisco-Routern bereitgestellt wird.

Das Tool selbst behandelt das Routing nicht, sondern modifiziert die Kernel -Routing -Tabelle, da es neue beste Routen zum Umgang mit Paketen lernt.

Da es sich um eine Gabel von Zebra handelt, ein Programm, dessen Entwicklung vor einiger Zeit eingestellt hat, behält es aus historischen Gründen die gleichen Befehle und Struktur bei wie Zebra beibehalten. Deshalb werden Sie von diesem Punkt an viel Verweis auf Zebra sehen.

Bitte beachten Sie, dass es nicht möglich ist, das dynamische Routing und alle zugehörigen Protokolle in einem einzigen Artikel abzudecken, aber ich bin zuversichtlich, dass der hier vorgestellte Inhalt als Ausgangspunkt für Sie dient, auf dem Sie aufbauen können.

Installieren von Quagga unter Linux

So installieren Sie Quagga auf Ihrer gewählten Verteilung:

# Aptitude Update && Aptitude Installieren Sie Quagga [auf Ubuntu] # yum update && yum Installieren Sie Quagga [Centos/Rhel] # Zypper Refresh && Zypper Installieren Sie Quagga [OpenSuse] 

Wir werden dieselbe Umgebung wie bei Beispiel 3 verwenden, wobei der einzige Unterschied, dass ETH0 mit einem Hauptgateway -Router mit IP 192 verbunden ist.168.0.1.

Als nächstes bearbeiten /etc/quagga/dämonen mit,

Zebra = 1 RIPD = 1 

Erstellen Sie nun die folgenden Konfigurationsdateien.

#/etc/quagga/Zebra.conf #/etc/quagga/ripd.Conf 

und fügen Sie diese Zeilen hinzu (ersetzen Sie einen Hostnamen und ein Passwort Ihrer Wahl):

Service Quagga starten Sie Hostname Dev2 Passwort Quagga neu 
# Service Quagga Neustart 
Starten Sie den Quagga -Service

Notiz: Das RIPD.Conf ist die Konfigurationsdatei für das Routing -Informationsprotokoll, das dem Router die Informationen zur Verfügung stellt, welche Netzwerke erreicht werden können und wie weit (in Bezug auf die Menge an Hopfen) sie sind.

Beachten Sie, dass dies nur eines der Protokolle ist, die zusammen mit Quagga verwendet werden können, und ich habe es aufgrund der einfacheren Nutzung für dieses Tutorial ausgewählt und da die meisten Netzwerkgeräte es unterstützen, obwohl es den Nachteil von Passing -Anmeldeinformationen im Klartext hat. Aus diesem Grund müssen Sie der Konfigurationsdatei ordnungsgemäße Berechtigungen zuweisen:

# Chown Quagga: Quaggy/etc/quagga/*.conf # chmod 640/etc/quagga/*.Conf 
Beispiel 5: Quagga einrichten, um den IP -Verkehr dynamisch weiterzuleiten

In diesem Beispiel verwenden wir das folgende Setup mit zwei Routern (erstellen Sie sicher, dass die Konfigurationsdateien für erstellt werden Router #2 wie zuvor erläutert):

Quagga konfigurieren

Wichtig: Vergessen Sie nicht, das folgende Setup für beide Router zu wiederholen.

Stellen Sie eine Verbindung zum Zebra her (Hören am Port 2601), das ist der logische Vermittler zwischen dem Router und dem Kernel:

# Telnet localhost 2601 

Geben Sie das Passwort ein, das in der festgelegt wurde /etc/quagga/Zebra.Conf Datei und dann Konfiguration aktivieren:

Aktivieren Sie die Konfiguration des Terminals 

Geben Sie die IP -Adresse und die Netzwerkmaske jeder NIC ein:

Inter Eth0 IP ADDR 192.168.0.15 Inter Eth1 IP ADDR 10.0.0.15 Exit Exit Write schreiben 
Router konfigurieren

Jetzt müssen wir uns mit dem verbinden RUHE IN FRIEDEN Daemon Terminal (Port 2602):

# Telnet localhost 2602 

Geben Sie den Benutzernamen und das Passwort ein, wie sie in der konfiguriert sind /etc/quagga/ripd.Conf Datei und dann die folgenden Befehle fett eingeben (Kommentare werden zur Klärung hinzugefügt):

ermöglichen Schaltet den Befehl privilegierter Modus ein. Terminal konfigurieren Änderungen des Konfigurationsmodus. Dieser Befehl ist der erste Schritt zur Konfiguration Router RIP ermöglicht RIP. Netzwerk 10.0.0.0/24 Legt die RIP -Aktivierungsschnittstelle für die 10 fest.0.0.0/24 Netzwerk. Ausfahrt Ausfahrt schreiben schreibt die aktuelle Konfiguration in die Konfigurationsdatei. 
Router aktivieren

Notiz: In beiden Fällen wird die Konfiguration an die zuvor hinzugefügten Zeilen angehängt (zuvor hinzugefügt (/etc/quagga/Zebra.Conf Und /etc/quagga/ripd.Conf).

Schließlich stellen Sie sich beider Router erneut mit dem Zebra -Dienst an und beachten Sie, wie jeder von ihnen hat "gelernt”Die Route zum Netzwerk, das sich hinter dem anderen befindet und der der nächste Hop ist, um zu diesem Netzwerk zu gelangen, indem Sie den Befehl ausführen IP -Route anzeigen:

# IP -Route anzeigen 
Überprüfen Sie das IP -Routing

Wenn Sie verschiedene Protokolle oder Setups ausprobieren möchten, sollten Sie sich möglicherweise auf die Quagga -Projektseite finden, um weitere Dokumentation zu erhalten.

Abschluss

In diesem Artikel haben wir erläutert, wie ein statisches und dynamisches Routing eingerichtet wird, indem wir einen Linux -Box -Router (en) verwenden. Fühlen Sie sich frei, so viele Router hinzuzufügen, wie Sie möchten, und experimentieren Sie so viel wie Sie möchten. Zögern Sie nicht, mit dem folgenden Kontaktformular bei uns zurückzukehren, wenn Sie Kommentare oder Fragen haben.

Werden Sie ein Linux -zertifizierter Ingenieur