In diesem Beitrag wird versucht, ein wenig zu klären, wie Netzwerke funktionieren und wie wir unsere Linux-Geräte in einen Router verwandeln können, der ein wenig mehr für unser Netzwerk sorgt, egal ob zu Hause oder sogar geschäftlich. Kommen wir also zur Sache:
Routing und Filterung
Um über Routing zu sprechen und es zu verstehen, können wir zunächst definieren, welche Rolle der Router spielt. Zu diesem Zweck können wir sagen, dass ein Router nicht nur ein Netzwerk erstellt und die Verbindung mit anderen Geräten ermöglicht (in dem Wissen, dass dies mit einem AP, Switch, Hub oder anderen möglich ist), sondern auch zwei verschiedene Netzwerke miteinander verbinden kann.
Wie wir im Bild sehen können, gibt es ein lokales Netzwerk "10.0.1.0", das vom Router erstellt wird und eine seiner beiden Schnittstellen erreicht. Dann hat der Router auf seiner anderen Schnittstelle ein anderes Netzwerk mit seiner öffentlichen IP, mit der er eine Verbindung zum Internet herstellen kann. Die Routing-Funktion besteht im Wesentlichen darin, als Vermittler zwischen diesen beiden Netzwerken zu dienen, damit sie kommunizieren können.
Linux als Router.
Natürlich kann der Linux-Kernel bereits "weiterleiten", aber standardmäßig ist er deaktiviert. Wenn unser Linux diese Arbeit ausführen soll, müssen wir zur Datei gehen.
/proc/sys/net/ipv4/ip_forward
Dort werden wir feststellen, dass es sich um eine Datei handelt, die nur eine Null "0" enthält. Wir müssen sie lediglich in eine Eins "1" ändern, um dieses Verhalten zu aktivieren. Dies wird leider gelöscht, wenn wir den Computer neu starten. Um ihn standardmäßig aktiviert zu lassen, müssen wir den folgenden Befehl verwenden:
sysctl net.ipv4.ip_forward=1
Oder bearbeiten Sie es direkt in der Datei /etc/sysctl.conf. Abhängig von der Distribution kann sich diese Konfiguration auch in einer Datei in befinden /etc/sysctl.d/.
Standardmäßig muss unser Linux über eine Routing-Tabelle verfügen, die im Allgemeinen die Konfiguration unseres LAN-Netzwerks und die Verbindung zum Router darstellt. Wenn wir dieses Routing sehen wollen, können wir zwei Befehle verwenden:
route -n
o
netstat -nr
Beide Befehle sollten gleich zurückgeben.
Im Allgemeinen reicht diese Konfiguration aus, damit Ihr Linux als Gateway dient und andere Computer durch unseren Computer navigieren können. Wenn wir nun möchten, dass unser Linux zwei oder mehr Netzwerke verbindet, ob lokal oder nicht, können wir statische Routen verwenden.
Angenommen, mein Linux hat zwei Netzwerkschnittstellen, die erste hat eine Internetverbindung mit dem Netzwerk 172.26.0.0 und die zweite (10.0.0.0) hat einige Computer aus einem anderen lokalen Netzwerk. Wenn wir Pakete an dieses andere Netzwerk weiterleiten möchten, können wir Folgendes verwenden:
route add -net 10.0.0.0 netmask 255.0.0.0 gw 172.26.0.8
Im Allgemeinen ist es:
route add -net REDDESTINO netmask MASCARA gw IPDELLINUX
wenn wir geben Route -n Unabhängig davon, ob dieses Netzwerk vorhanden ist oder nicht, wird dieses Routing in unserer Tabelle festgelegt.
Wenn wir dieses Routing eliminieren wollen, können wir es verwenden
route del -net 10.0.0.0 netmask 255.0.0.0
iptables.
Grundsätzlich wird iptables zum Filtern von ausgehenden, eingehenden oder anderen Paketen verwendet. Dies macht es zu einem großartigen Tool zur Verwaltung unseres Netzwerkverkehrs. Nun, iptables, so wie wir den Datenverkehr desselben Computers filtern können, können wir auch den Datenverkehr filtern, der durch ihn fließt. (Weiterleitung). Iptables können in Tabellen, Zeichenfolgen und Aktionen unterteilt werden.
- Boards: Grundsätzlich kann es zwei Tabellen geben, Filter, Pakete zu filtern und nat Adressen zu übersetzen, dh von einem Netzwerk in ein anderes zu wechseln.
- Ketten: Die Kette bezieht sich auf die Art des Verkehrs, den wir filtern oder schwimmen möchten, dh auf welchen Verkehr werden wir die Tabellen anwenden? und sie können sein: SPEISUNG: Eingehender Verkehr, AUSGABE: ausgehender Verkehr oder NACH VORNE: Verkehr, der durch ihn geht, aber es ist keine eigene Verbindung.
- Es kann auch erscheinen Nachbestellen, Hiermit wird das Paket nach dem Weiterleiten auf bestimmte Weise behandelt.
- Acciones: Aktionen sind im Grunde die Aktionen, die mit der Kette ausgeführt werden sollen. Diese Aktion kann sein Dropp das zerstört nur diesen Verkehr oder ACCEPT. Dadurch kann der Verkehr eine solche Aktion ausführen.
IPTABLES-Regeln werden in der Reihenfolge gespeichert und ausgeführt, in der sie erstellt wurden. Wenn eine Regel eine vorherige Regel löscht, wird immer die letzte Regel in der Reihenfolge angewendet.
Firewall-Richtlinien.
Im Allgemeinen funktionieren Firewalls auf zwei Arten:
- Erlaube allen Verkehr außer oder
- Erlaube keinen Verkehr außer ...
Verwenden Sie zum Anwenden von Richtlinien IPTABLES - P AKTIONSKETTE
Dabei steht die Zeichenfolge für die Art des Datenverkehrs (INPUT, OUTPUT, FORWARD, POSTROUTING ...) und die Aktion ist DROP OR ACCEPT.
Schauen wir uns ein Beispiel an.
Hier sehen wir, dass ich zuerst pingen konnte, dann sagte ich IPTABLES, dass der gesamte OUTPUT-Verkehr DROP war oder nicht erlaubt war. Dann sagte ich IPTABLES, es zu akzeptieren.
Wenn wir eine Firewall von Grund auf neu erstellen wollen, müssen wir immer die Regeln anwenden von (Erlaube keinen Datenverkehr außer ... Dazu wenden wir die Regeln an
iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP
Um zurückzukehren, schreiben wir dasselbe und ersetzen DROP durch ACCEPT.
An diesem Punkt, da der gesamte Datenverkehr verweigert wird, beginnen wir unseren IPTABLES mitzuteilen, welchen Datenverkehr er haben kann.
Die Syntax lautet:
iptables -A cadena -s ip_orgigen -d ip_destino -p protocolo --dport puerto -j acción
Wo:
String = EINGANG, AUSGANG oder VORWÄRTS
origin_ip = Ursprung der Pakete, dies kann eine einzelne IP oder ein Netzwerk sein und in diesem Fall müssen wir die Maske angeben).
Ziel-IP = wohin die Pakete gehen. Dies kann eine einzelne IP oder ein Netzwerk sein. In diesem Fall müssen wir die Maske angeben.
Protokoll = gibt das von den Paketen verwendete Protokoll an (icmp, tcp, udp ...)
port = Zielhafen des Verkehrs.
Aktion = TROPFEN oder AKZEPTIEREN.
Beispiel:
Es gelten ALLE eingeschränkten Richtlinien.
Anschließend fügen wir die Regeln hinzu, um Datenverkehr über Port 80 HTTP und 443 HTTPS mit dem TCP-Protokoll zu ermöglichen. Dann Port 53 Es wird angewendet, dass der DNS-Client die Domänen auflöst, andernfalls werden Sie nicht navigieren. Dies funktioniert mit dem udp-Protokoll.
Die Linie:
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
Dies hat folgende Gründe: Wenn Sie beispielsweise eine HTTP-Anforderung stellen, stellen Sie eine Verbindung zu Port 80 des Servers her, aber der Server, der die Informationen zurückgibt, muss über einen beliebigen Port eine Verbindung zu Ihnen herstellen. (Im Allgemeinen größer als 1024).
Da alle unsere Ports geschlossen sind, wird dies nur erreicht, wenn wir alle Ports höher als 1024 öffnen (schlechte Idee). Dies besagt, dass der gesamte eingehende Datenverkehr, der von einer von mir selbst hergestellten Verbindung stammt, akzeptiert wird. Ich meine, eine Verbindung, die ich im Prinzip begonnen habe.
Ich hoffe, Ihnen haben diese Informationen gefallen. Im nächsten werde ich über NAT, Proxy und Skripte für Firewal sprechen.
Dies ist die Grundlage, auf der viele Unternehmer ihre eigenen Firewalls herstellen. Deshalb gibt es so viele Marken von Firewalls mit eingebettetem Linux auf dem Markt, einige gute und andere weniger.
Hervorragender Artikel. Ich freue mich auf den zweiten Teil.
Sehr gute Erklärung, es hat mir geholfen, den Proxy meiner Arbeit zu verstehen. Vielen Dank
Hallo Jlcmux,
Ausgezeichnet, es hat mir sehr gut gefallen, wann wird die andere Partei verfügbar sein?
Grüße und danke fürs Teilen
Danke für den Kommentar.
Ich habe den anderen Teil gestern gesendet, im Laufe des Tages denke ich, dass sie ihn veröffentlichen werden.
Grüße.
Sehr guter Artikelfreund @ Jlcmux, ich habe wirklich mit ihm gelernt, da er einige Zweifel geklärt hat, die ich seit einiger Zeit hatte, übrigens würde es Ihnen nichts ausmachen, das Buch der Quelle des Artikels, das von Sébastien BOBILLIER, gut slau2s und jetzt zu teilen siehe den 2. Teil, salu2s.
Hallo, danke, dass du Israel kommentiert hast.
Es stellt sich heraus, dass ich das Buch in physischer Form habe. Aber ich habe diesen Link in Google Books gefunden. http://books.google.com.co/books?id=zxASM3ii4GYC&pg=PA356&lpg=PA356&dq=S%C3%A9bastien+BOBILLIER+Linux+%E2%80%93+Administraci%C3%B3n+del+sistema+y+explotaci%C3%B3n+de+los+servicios+de+red#v=onepage&q=
Ich denke es ist komplett.
Sehr guter Artikel, ich füge eine Abfrage hinzu: Was wäre der Vorteil der Verwendung von Linux als Router, falls vorhanden, in Bezug auf eine dafür vorgesehene Hardware? Oder ist es nur zum Sport? Ich weiß, dass es dedizierte Distributionen gibt, aber ich weiß nicht, ob sie alte PCs retten oder mehr Flexibilität bei der Konfiguration bieten sollen.
Ich denke, die Vor- und Nachteile hängen von dem Szenario ab, in dem Sie dies implementieren werden. Warum werden Sie sicher keine UTM oder ähnliches für Ihr Haus kaufen? Und vielleicht für ein kleines Unternehmen, das es sich auch nicht leisten kann. Es eignet sich auch gut als Übung, da es Ihnen hilft, die gesamte Logik zu verstehen und eine dedizierte FWall besser zu konfigurieren. Außerdem haben fast alle diese Geräte wirklich Embedded Linux.
Grüße.
Hallo, eine Frage, können Sie unter Linux eine "künstliche" Schnittstelle für ein ähnliches Routing zwischen Netzwerken generieren? (Packet Tracer Style) um mit virtuellen Maschinen zu arbeiten? Beispiel: Wenn ich eth0 habe (weil ich natürlich eine einzelne Karte habe), kann ich eth1 erstellen, um ein anderes Netzwerk zu erstellen? Sehr guter Tutor!
Unter Linux können Sie natürlich virtuelle Schnittstellen erstellen. Wenn Sie eth0 haben, können Sie eth0: 0, eth0: 1, eth0: 2 ... usw. Haben
Also gut, danke fürs Teilen