Frage Benutze spezifische Schnittstelle für ausgehende Verbindungen (Ubuntu 9.04)


Ich habe zwei Ethernet-Schnittstellen in meinem Computer, auf dem Ubuntu 9.04 läuft. Beide Schnittstellen verfügen über statische IPs, verwenden jedoch separate Gateways. Meine /etc/network/interfaces Datei sieht ungefähr so ​​aus:

Automatisch eth0 eth1
iface eth0 inet statisch
  Adresse 10.0.0.5
  Netzmaske 255.255.255.0
  Gateway 10.0.0.1

iface eth1 inet statisch
  Adresse 192.168.2.5
  Netzmaske 255.255.255.0
  Gateway 192.168.2.1

Ich möchte, dass der gesamte Datenverkehr zum Internet läuft eth0, aber es scheint durchgehen zu wollen eth1. Gibt es eine Möglichkeit, meinen allgemeinen ausgehenden Datenverkehr zu kanalisieren? eth0 stattdessen und nur verwenden eth1 für den Verkehr zu seinem Subnetz?

Die Antwort sollte hartnäckig sein; das heißt, es sollte den Neustart überleben, ohne dass ein Superuser nach dem Neustart einen Befehl ausführen muss.

BEARBEITEN: Wie gewünscht, hier ist die Ausgabe von meinem route -n Befehl:

Kernel-IP-Routing-Tabelle
Destination Gateway Genmask Flags Metrisch Ref Verwenden Sie Iface
10.0.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
192.168.2.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 eth1
0.0.0.0 192.168.2.1 0.0.0.0 UG 100 0 0 eth1
0.0.0.0 10.0.0.1 0.0.0.0 UG 100 0 0 eth0

6
2017-07-15 14:40


Ursprung


Ich empfehle Ihnen, die Ausgabe des Befehls "Route" zu Ihrer Frage hinzuzufügen. - Anonymous


Antworten:


Sie sollten nur ein Standard-Gateway haben. Wenn Sie die Gateway-Leitung von eth1 entfernen, funktioniert alles (nachdem das Netzwerk neu gestartet wurde).


12
2017-07-15 14:50



Manuelles Routing ist hier nicht erforderlich. - theotherreceive
Hängt davon ab. Der OP hat nicht angegeben, ob sein eth1 andere als die mit ihm verbundene Netzwerke hat. Die Tatsache, dass er sich die Mühe macht, ein Gateway zu spezifizieren, lässt mich annehmen, dass er es getan hat. - Cian
Frage besagt eindeutig, dass eth1 sollte nur für den Verkehr innerhalb des eigenen Subnetzes verwendet werden. - theotherreceive
Du hast recht. Bearbeitet, um das zu reflektieren. - Cian


Wenn Sie die Routingtabelle mit der Route wie vorgeschlagen ändern, wird dies vorübergehend behoben, aber beim nächsten Start wird sie in den aktuellen Status zurückgesetzt.

Es wäre möglich, Routenregeln in /etc/rc.local oder einem anderen Init-Skript zu setzen, aber in diesem Fall ist es am einfachsten, das Gateway von eth1 in der Interface-Datei zu entfernen.

Durch das Entfernen dieses Gateways wird dieses System weiterhin automatisch eth1 als Route 192.168.2 / 24 verwenden, aber den gesamten anderen Verkehr durch eth0 weiterleiten.


2
2017-07-15 14:59



Wenn Sie manuelle Routen angeben müssen, würde ich es lieber über Post- / Up-Schnittstellenoptionen machen und die IP-Route entweder direkt oder über ein Skript ausführen und möglicherweise eine Pre- / Down-Schnittstellenoption haben, um diese Routen wieder zu entfernen. Dies passt besser zu ifup / ifdown. - Kjetil Joergensen
@Kjetil stimmte zu, das ist eine bessere Lösung. - theotherreceive


Entferne das Gateway von eth1 in / etc / network / interfaces und füge es als statische Route hinzu:

route add -net 192.168.2.0 netmask 255.255.255.0 gw 192.168.2.1

Damit ist 10.0.0.1 Ihr Standard-Gateway und eth1 wird nur zur Verbindung mit dem Netzwerk 192.168.2.0 verwendet


2
2017-07-15 14:52



Dieser Routenbefehl erscheint überflüssig. - Dan Carley
Du hast Recht, ist nicht notwendig. Mein Fehler. - hdanniel
Es ist überflüssig. Schnittstellen werden automatisch zu direkt verbundenen Netzwerken weitergeleitet. - Cian
Und natürlich - wenn Sie darüber nachdenken, was es tun würde - wollen Sie nicht alle direkt verbundenen Subnetze statisch an einen Host im selben Subnetz weiterleiten. - Dan Carley


Sehen Sie sich Ihre aktuelle Routing-Tabelle an, indem Sie route eingeben. Ihr Computer wird den ersten Standard-GW verwenden, der in der Routingtabelle angezeigt wird. Dies wird standardmäßig oder 0.0.0.0 als Ziel angegeben. Wenn Sie nur eth1 für das lokale Netzwerk 192.168.2.0/24 verwenden möchten, entfernen Sie den Gateway-Befehl. Dies sollte Eth1s Standard-GW zu Ihrem Standard-Standard machen.


1
2017-07-15 14:54





Ich habe diese Lösung seit über 4 Jahren benutzt veröffentlichte es auf dem Linode Wikiund es funktioniert einwandfrei. Bearbeiten /etc/network/interfaces und mach es so:

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet static
    address <the outbound IP>
    netmask <the netmask for the outbound IP, usually 255.255.255.0>
    gateway <the gateway for the outbound IP>
    up /sbin/ip addr add <the primary IP>/24 dev eth0

1
2018-03-08 23:07