Ich habe Ubuntu 11.10 auf einer generalüberholten Maschine installiert. Ich habe auch eine defekte NIC-Karte durch eine neue NIC-Karte ersetzt. Bei der Installation werden zwei NIC-Karten erkannt. Ich habe auch Squid als Proxyserver installiert. Squid funktioniert gut, wenn alle Arbeitsstationen mit dem Router verbunden sind. Allerdings ... .
Wenn ich eine Netzwerkkarte an meinen Router anschließe (aktive Internetverbindung verfügbar) und die andere Netzwerkkarte an meinen Switch (ohne verfügbares Internet), kann ich zwei separate Netzwerke erstellen, aber ich kann nicht herausfinden, wie ich die beiden Netzwerkkarten dazu bringe, Daten untereinander und zwischen den beiden Netzwerken zu übertragen.
- Ich habe versucht, beide Ethernet-Karten zu überbrücken … ohne Erfolg!
- Ich habe versucht, iptables zu aktualisieren … kein Glück!
- Ich habe beide NIC-Karten auf statische Adressen eingestellt ... kein Glück!
- Ich habe eine Netzwerkkarte so konfiguriert, dass die andere als Gateway verwendet wird ... kein Glück! Alle führen zu einem Fehler, dass sich die angepingte Adresse (Netzwerk bezogen auf Switch) an einem nicht erreichbaren Ziel befindet.
Was vermisse ich?
Antwort1
Das von @laurent beschriebene Skript ist unnötig, da es einen kanonischen Weg gibt. Sie müssen lediglich diese Zeile bearbeiten /etc/sysctl.conf
und auskommentieren ( #
am Anfang löschen):
net.ipv4.ip_forward = 1
Dann wird es bereits beim Booten angewendet.
Antwort2
Bei Ubuntu ist die IP-Weiterleitung standardmäßig deaktiviert und Sie müssen sie aktivieren, um Pakete mit Ihrem Computer weiterzuleiten:
zum Aktivieren geben Sie im Terminal als Root ( sudo su
) ein:
echo 1 > /proc/sys/net/ipv4/ip_forward
Obs: funktioniert nicht mit sudo
Und wenn Sie das Internet von diesem Computer aus weiterleiten möchten, müssen Sie möglicherweise auch NAT konfigurieren.
BEARBEITEN:
der 1. Befehl echo 1 ...
funktioniert nicht mit sudo. Sie müssen sudo su
vorher mit zu root wechseln (weil sudo echo 1 als root ausführt, aber versucht, als Ihr Benutzer auf die Datei umzuleiten, und das funktioniert nicht). Sie können jedoch immer mit prüfen, ob eine 1 vorhanden ist cat /proc/sys/net/ipv4/ip_forward
.
Anmerkungen:Dies muss bei jedem Start durchgeführt werden, sodass Sie ein Skript schreiben und update-rc.d darauf verwenden können.
Die POSTROUTING-Regel scheint in Ordnung zu sein, wenn eth0 die Netzwerkkarte Ihrer Internetverbindung ist.
FORWARD-Regeln, die ich für hergestellte und verwandte Verbindungen verwende:
-A FORWARD -p tcp -m state -d your_network_ip.0/255.255.255.0 --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -p udp -m state -d your_network_ip.0/255.255.255.0 --state RELATED,ESTABLISHED -j ACCEPT
2. UPDATE - Automatisches Skript:
#!/bin/sh
# turn ip_forward on/off
case "$1" in
'start')
echo 1 > /proc/sys/net/ipv4/ip_forward
;;
'stop')
echo 0 > /proc/sys/net/ipv4/ip_forward
;;
*)
echo "Usage: $0 { start | stop }"
;;
esac
exit 0
Dieses Skript speichern Sie unter /etc/init.d
dem gewünschten Namen ( router
zum Beispiel) und machen es ausführbar ( sudo chmod +x /etc/init.d/router
).
Damit es bei jedem Neustart ausgeführt wird, müssen Sie Startlinks mit update-rc.d erstellen:
sudo update-rc.d router defaults
Weitere Dinge, die Sie überprüfen müssen:
- DHCP arbeitet im 2. Netzwerk und sendet die IP-Adresse Ihres Computers als Standard-Gateway an das Subnetz
- Standard-Gateway (Ihre Maschinen-IP im neuen Subnetz) ist besser mit fester IP
- Sie haben angemerkt, dass Sie die zweite Netzwerkkarte nicht anpingen können, aber von wo? Aus dem Subnetz, Ihrem Computer oder Ihren Computern, die direkt mit dem Router verbunden sind?
- Squid ist auf Ihrem Computer installiert? Haben Sie die Konfiguration geändert, um das neue Subnetz einzuschließen? Benötigen Sie Squid? Die Konfiguration ist nicht sehr einfach und Sie können Internet und Netzwerk auch ohne Squid problemlos gemeinsam nutzen, wenn Sie die zusätzlichen Funktionen nicht benötigen.
Anmerkung: Die update-rc.d-Meldung ist OK, kein Problem damit. Sie sollten jetzt immer eine 1 in der ip_forward-Datei haben.
Antwort3
Ich habe diesen Rat befolgt und bin auf ein Problem gestoßen, das hier nicht behandelt wird: Der nächste Computer muss wissen, wie er zum letzten Computer zurückkommt.
In meinem Fall habe ich 2 Netzwerke: Ein WiFi-Netzwerk, 192.168.1.0/24, und ein Ethernet-Netzwerk, 192.168.40.0/24. Mein „Router“ ist ein Laptop mit einem WiFi-Transceiver im 192.168.1.0/24-Netzwerk und einer Ethernet-Schnittstelle im 192.168.40.0/24-Netzwerk. Der Haushaltsrouter hat auch einen WiFi-Transceiver und eine Ethernet-Schnittstelle, aber dieser Ethernet-Transceiver stellt eine Verbindung zum Internet her. Der Haushaltsrouter hat auch einen Network Address Translator (NAT). Der Haushaltsrouter hat eine Routing-Tabelle, und diese Routing-Tabelle hat einen Standard-Routeneintrag, der normalerweise auf den Router des Internetdienstanbieters (ISP) verweist.
Wenn ein Computer im Netzwerk 192.168.40.0/24 ein Paket an einen Computer im Internet senden wollte, konsultierte er seine eigene Routing-Tabelle und wusste, dass das Standard-Gateway der Laptop 192.168.40.1 war. Als das Paket beim Laptop ankam, konsultierte er seine eigene Routing-Tabelle und leitete das Paket an den Haushaltsrouter weiter. Der Haushaltsrouter konsultierte seine Routing-Tabelle, durchlief die Netzwerkadressübersetzung (ein Detail, das wir für diese Diskussion ignorieren können) und ging dann zum Router des ISPs. Irgendwann möchte die Zielmaschine ein Paket an meinen Computer senden. Das Paket kommt beim Haushaltsrouter an, durchläuft Reverse NAT und muss dann geroutet werden. Wenn das Paket aus NAT herauskommt, hat es eine Ziel-IPv4-Adresse im Netzwerk 192.168.40.0/24. An diesem Punkt stieß ich auf ein Problem: Der Haushaltsrouter kannte das Ethernet-Netzwerk 192.168.40.0/24 nicht. Es hat also das getan, was es tun sollte – das Paket an seinen Standardrouter, also den Router des Internetdienstanbieters, weiterleiten.
Um das Problem zu lösen, musste ich einen Eintrag in der Routing-Tabelle des Haushaltsrouters vornehmen, der besagt, dass das Paket an die WLAN-Adresse des Laptops gesendet werden muss, die sich in 192.168.1.0/24 befindet, um einen beliebigen Computer im Netzwerk 192.168.40.0/24 zu erreichen. Wenn das Paket nun beim Laptop ankommt, kennt der Laptop das Netzwerk 192.168.40.0/24 und leitet das Paket dorthin weiter.