Warum funktioniert ip route add nicht, aber ip route add mit weniger Details und dann funktioniert change?

7

Ich habe ein Problem mit IP Route hinzufügen. Überraschenderweise kann ich die Route hinzufügen und dann ändern, aber ich kann sie nicht direkt hinzufügen:

# ip route add 192.168.0.0/16 via 192.168.255.254 src 192.168.1.101
RTNETLINK answers: No such process

aber:

# ip route add 192.168.0.0/16 dev eth0
# ip route change 192.168.0.0/16 via 192.168.255.254 src 192.168.1.101

Meine Schnittstellendatei lautet:

iface lo inet loopback
auto eth0
iface eth0 inet static
    address 178.xxx.xxx.xxx
    netmask 255.255.255.192
    network 178.xxx.xxx.xxx
    broadcast 178.xxx.xxx.xxx
    gateway 178.xxx.xxx.xxx
auto eth0:1
iface eth0:1 inet static
    address 192.168.1.101
    netmask 255.255.0.0

Ich bin ein bisschen verloren, muss ich sagen. Ich kann gut hinzufügen und dann ändern, aber es ist nicht befriedigend, nicht zu verstehen, warum es in zwei Schritten und nicht direkt funktioniert. Ich habe Manpages nach Manpages ohne Verständnis gelesen.

Mit Hilfe der Antworten aktualisiert:

Ich habe jetzt ein Gateway aktiviert eth0und eth0:0, aber da ich möchte, dass mein gesamter Datenverkehr mit Ausnahme des 192.168.0.0/16als von meiner 178.xxx.xxx.xxxAdresse stammend markiert wird , habe ich eine Routing-Regel hinzugefügt. Vielleicht würde es eth0mit der 192.168.1.101IP und dann mit der 178.xxx.xxx.xxxIP eth0:0ohne Routing-Regel funktionieren, aber hier geht es:

auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet static
    address 178.xxx.xxx.131
    netmask 255.255.255.192
    network 178.xxx.xxx.128
    broadcast 178.xxx.xxx.191
    gateway 178.xxx.xxx.190
    up /sbin/ip route add default via 178.xxx.xxx.190 dev eth0 table 125
    up /sbin/ip rule add from 178.xxx.xxx.128/26 table 125
    post-down /sbin/ip route del default via 178.xxx.xxx.190 dev eth0 table 125
    post-down /sbin/ip rule del from 178.xxx.xxx.128/26 table 125

auto eth0:0
iface eth0:0 inet static
    address 192.168.1.101
    netmask 255.255.0.0
    gateway 192.168.255.254

Ich habe auch deaktiviert rp_filter:

echo 0 > /proc/sys/net/ipv4/conf/eth0/rp_filter

Danke für Ihre Hilfe!

Loïc d'Anterroches
quelle

Antworten:

2

Entsprechend Ihrer Schnittstellendatei befinden Sie sich bereits im Netzwerk 192.168.0.0/16, sodass Sie kein Gateway zu diesem Netzwerk benötigen sollten.

Mathias Weidner
quelle
Ja, es sieht so aus, als müsste ich das Gateway installieren und einige Routing-Elemente hinzufügen, um meine Quell-IP richtig zu machen.
Loïc d'Anterroches
ip route add 192.168.0.0/16 dev eth0: 0 via 192.168.1.254 src 192.168.1.101
rjt
1

Wenn ich meine Ergebnisse für Ihr IP-Setup anpasse (ich bin auf einem 192.168.x.0 / 24):

$ sudo ip route 192.168.0.0/16 über 192.168.255.254 src 192.168.1.101 hinzufügen

Ich bekomme

RTNETLINK antwortet: Kein solcher Prozess

Aber

$ sudo ip route 192.168.0.0/16 über 192.168.1.254 src 192.168.1.101 hinzufügen

funktioniert. Ich vermute, es liegt daran, dass sich 192.168.255.254 nicht in Ihrem lokalen Subnetz oder einer bekannten Route befindet. Sie benötigen also zuerst eine Route dazu.

Andrew
quelle
192.168.255.254 befindet sich im lokalen Subnetz 192.168.0.0/16.
HostBits
0

Wie andere angegeben haben, bedeutet Ihre IP auf eth0: 1 von 192.168.1.101/16, dass Sie bereits eine statische Route für dieses Subnetz haben. Es sieht so aus, als müssten Sie ein Gateway für diese Schnittstelle hinzufügen, das auf 192.168.255.254 verweist.

HostBits
quelle
0

Ich weiß, dass es etwas spät ist, aber ich möchte auch klarstellen, wofür "Route" gemacht ist. Du sagtest :

Ich möchte, dass mein gesamter Datenverkehr mit Ausnahme des 192.168.0.0/16 von meiner 178.xxx.xxx.xxx-Adresse stammt

Mit dem Befehl route können Sie eine Route basierend auf einem Ziel und nicht auf einer Quelle bestimmen. Sie müssen Ihre Dienste so konfigurieren, dass sie eine IP-Adresse entsprechend dem Gateway verwenden, das Sie verwenden möchten. Wie Mathias Weidner sagte, benötigen Sie kein Gateway, da Sie direkt verbunden sind (gleiches Subnetz = kein Routing)

Dijkman
quelle