Linux als Router zwischen drei Netzwerken (eines davon ist das Internet)

Linux als Router zwischen drei Netzwerken (eines davon ist das Internet)

Ich habe eine Linux-Box, die zwischen zwei Netzwerken XX3.0 und XX4.0 routet und ich möchte, dass sie diese Netzwerke mit dem Internet verbinden kann.

ich habe gelesenHierzur tollen Antwort von @Kevin, dass ich hierfür NAT und damit iptables verwenden muss. Mein Server verwendet derzeit keine iptables, daher muss ich den richtigen Befehl finden, um dies zu aktivieren.

mein Netzwerk kann wie folgt beschrieben werden: Internet <-(eth0) Linux Router <-[1](eth1) 192.168.3.0 <--[2](eth2) 192.168.4.0 Der eth2 ist direkt mit dem Router verbunden.

Die beiden lokalen Netzwerke können miteinander kommunizieren, aber niemand kann auch nur einen Ping an eine öffentliche IP-Adresse senden. Ich habe versucht, die Pakete im Router abzufangen, wenn ich den Ping-Befehl an eine öffentliche IP-Adresse auf einem Computer im .3.x-Netzwerk aussende, aber soweit ich das beurteilen kann, gibt es ein Problem, und es scheint an endlosen ARP-Anfragen des eth0-Ints zu liegen, wer die 3.x-IP-Adresse hat. Es scheint, dass ich den Router aktivieren muss, damit er sich auch wie ein NAT verhält. Ich habe gesucht und konnte den richtigen Befehl, den ich mit den iptables ausführen muss, nicht finden, obwohl ich die Befehle ausprobiert habe, die erwähnt wurdenHierUndHier. Ich hatte die Möglichkeit, zwischen den beiden lokalen Netzwerken zu routen, ohne überhaupt iptables zu verwenden, und da ich es nicht brauche, ziehe ich es vor, es nicht zu verwenden, es sei denn, NAT ist ohne es unmöglich (in diesem Fall bevorzuge ich iptable gegenüber jedem anderen Programm).

Um die Frage zusammenzufassen: 1. Ich muss dafür sorgen, dass alle drei Netzwerke miteinander kommunizieren können. 2. Ich möchte (falls möglich) weder iptables noch andere Zusatzprogramme verwenden. 3. Das ist alles.

Danke.

Antwort1

Die beiden lokalen Netzwerke können miteinander kommunizieren, wenn Sie ip_forward aktiviert haben. Wenn die lokalen Netzwerke die öffentliche IP-Adresse nicht anpingen können, müssen Sie Masquerading durchführen.

Können Sie von dieser Linux-Box aus eine öffentliche IP-Adresse anpingen? Wenn nicht, muss ein anderes Problem vorliegen. Vielleicht müssen Sie Ihren Router im Bridge-Modus einrichten (das ist nur eine Vermutung).

Ich gehe davon aus, dass Ihr Linux-Rechner eine öffentliche IP-Adresse anpingen kann und dass auf eth0 eine öffentliche IP-Adresse konfiguriert ist. Ihre internen Netzwerk-Rechner können also nicht mit der privaten IP-Adresse ins Internet gehen, Sie müssen also NAT verwenden. Versuchen Sie es mit iptables, da dies ziemlich unkompliziert ist.

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Wenn Sie iptables nicht auf Ihrem System installiert haben, muss standardmäßig eine Firewall installiert sein. Welche Distribution verwenden Sie?

Antwort2

Private IP-Adressen sind für die Internetnutzung nicht gültig und können nicht geroutet werden. Sie können nur lokal verwendet werden.

Um den Internetzugang zu ermöglichen, müssen Sie die IP-Weiterleitung aktivieren, was Ihrer Beschreibung zufolge bereits erfolgt ist. Zweitens müssen Sie NATing verwenden. In den meisten Fällen übernimmt Ihr ISP das NATing für Sie. Dies kann sich je nach Verbindungstyp und zugewiesenen IPs ändern.

Was das Tool betrifft, glaube ich nicht, dass es dafür unter Linux ein besseres Tool als iptables gibt.

Antwort3

Nach einigen Recherchen und Empfehlungen von Ihnen bin ich zu dem Schluss gekommen, dass iptable die beste Möglichkeit zum NATing (Maskieren) ist. Daher habe ich es folgendermaßen gemacht:

#Leeren Sie alle aktuellen iptables-Einstellungen mit:

$>iptables -FUnd $>iptables -t nat -F

Versuchen Sie dann, zwischen den lokalen Netzwerken einen Ping auszuführen. Mit den Vorgabewerten von iptables sollte das klappen. Falls das nicht klappt, geben Sie Folgendes ein:

$>iptables -P INPUT ACCEPT

$>iptables -P FORWARD ACCEPT

$>iptables -P OUTPUT ACCEPT

Geben Sie dann den obigen Befehl von @Sachin Divekar ein (ersetzen Sie ethX durch Ihre Schnittstelle der Internetverbindung):

$>iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Testen Sie es, es sollte funktionieren. Dann sollten Sie diese Einstellungen speichern mit:

$>iptables-save > /etc/sysconfig/iptables

Erledigt.

verwandte Informationen