Wie kann man das Senden von Daten an den Router (auf L3) erzwingen, anstatt direkt zu senden? (auf L2)

571
static

Ich habe eine öffentliche IP-Adresse auf einem Rechner:

a.b.c.156/32 

Das GW ist abc133 (das sich im / 27-Netzwerk mit seinem Gateway abc129 befindet)

Ich habe eine Arp-Route statisch hinzugefügt:

sudo arp -an a.b.c.133 at ab:cd:ef:12:34:56 [ether] PERM on eth0 

Wenn ich von pinge a.b.c.156/32:

From a.b.c.133: icmp_seq=2 Redirect Host (New nexthop: a.b.c.129) 

dann:

sudo arp -an a.b.c.129 at aa:bb:cc:dd:ee:ff [ether] on eth0 # !<------ why? (it is even not from the same network) a.b.c.133 at ab:cd:ef:12:34:56 [ether] PERM on eth0 

Wie kann ich verhindern, dass arp hinter meinem Router gesendet wird (abc133)? Damit wäre abc129 nur über IP-Level 3 erreichbar, nicht wie ein Subnetz?

Aktualisieren:

Die Netzwerkstruktur:

provider's GW (a.b.c.129/27) <--- my host (a.b.c.133/27) <--- my second host (a.b.c.156/32) <--- my third host (a.b.c.151/32) ... (a.b.c.x - public IP) 

Wie kann man verhindern, dass die Hosts dahinter "my host (a.b.c.133)"arp an den senden "provider's GW (a.b.c.129/27)", sondern stattdessen das Routing verwenden? Damit wäre abc129 nur über IP-Level 3 erreichbar, nicht direkt? Wie kann man also den zweiten, dritten ... Hosts vom Senden von ARP an den isolieren "provider's GW (a.b.c.129/27)"?

Update 2:

Ich habe folgendes in der "route -n":

Dest. GW. Mask Flags Metrics Ref Interface 0.0.0.0 a.b.c.133 0.0.0.0 UG 0 0 eth0 a.b.c.133 0.0.0.0 255.255.255.255 UH 0 0 eth0 

Update 3:

=============== my host (a.b.c.133/27): > ip r a.b.c.151 dev vmbr0 scope link # third host a.b.c.156 dev vmbr0 scope link # second host 192.168.1.0/24 dev vmbr1 proto kernel scope link src 192.168.1.1 # local network default via a.b.c.129 dev vmbr0 # provider's gw  > ip n a.b.c.129 dev vmbr0 lladdr AA:BB:CC:DD:EE:FF REACHABLE a.b.c.156 dev vmbr0 lladdr AB:CD:EF:12:34:56 PERMANENT a.b.c.151 dev vmbr0 lladdr A1:B2:C3:D4:E5:F6 PERMANENT =============== my second host (a.b.c.156/32): > ip r default via a.b.c.133 dev eth0 a.b.c.133 dev eth0 scope link  > ip n # before "ping a.b.c.129" or "ping 8.8.8.8" a.b.c.133 dev eth0 lladdr F1:E2:D3:C4:B5:A6 PERMANENT  > ip n # after "ping a.b.c.129" or "ping 8.8.8.8" a.b.c.129 dev eth0 lladdr AA:BB:CC:DD:EE:FF REACHABLE # after some minutes idle => STALE a.b.c.133 dev eth0 lladdr F1:E2:D3:C4:B5:A6 PERMANENT =============== other hosts the similar to "my second host" 
0
Es ist schwer herauszufinden, wovon Sie sprechen. Auf welcher Maschine haben Sie statisch einen ARP-Eintrag hinzugefügt und warum? Was ist das "es", von dem Sie im letzten Absatz sprechen? David Schwartz vor 10 Jahren 0
Aha. hat die Frage aktualisiert. static vor 10 Jahren 0
Etwas macht immer noch keinen Sinn. ARP ist eine Ethernet-Sache. Ihr Bild zeigt den zweiten und dritten Host in einem separaten Ethernet-Netzwerk von der GW des Providers. Sie können also * keine * ARP-Anfragen an sie senden. Was bedeutet hier genau "hinter"? Ist "mein Host" ein Router? Wenn ja, ist es das Standard-Gateway für den zweiten und dritten Host? David Schwartz vor 10 Jahren 0
Ich möchte, dass der "mein Host (abc133)" ein Router ist. Es ist ein gewöhnlicher Computer. static vor 10 Jahren 0
Dann müssen Sie * Routen * hinzufügen, keine ARP-Einträge. Und abc133 muss das Standardgateway für den zweiten und dritten Host sein. ("Mein Host" muss sich zusammen mit dem zweiten und dritten Host in einem Subnetz befinden, damit er Daten austauschen kann.) David Schwartz vor 10 Jahren 0
Wenn ich "mein zweiter Host" usw. auf das / 27-Subnetz eingestellt habe, kennt es immer noch die GW des Providers und umgekehrt. (Aktualisierte die Frage) static vor 10 Jahren 0
Richtig, aber wenn Sie "Mein Host" als Router verwenden möchten, müssen Sie dem zweiten und dritten Host Routen hinzufügen, in denen er "Mein Host" als Router verwendet. David Schwartz vor 10 Jahren 0
yep, ich habe es geschafft: ip route add default via abc133 dev eth0. Und das ist das Merkwürdige: Zweiter Host weiß wer der Router ist, warum greift er über arp auf den Router des Providers zu? Ich möchte, dass alles, was sich hinter "meinem Host" befindet, gezwungen wird, zu routen, nicht direkt mit anderen Hosts vor "meinem Host" (dh dem Router des Providers) verbunden zu werden, aber trotzdem auf andere "dritte Host" zugreifen kann. usw.". static vor 10 Jahren 0
Das funktioniert, solange die Hosts innerhalb desselben Subnetzes wie abc133 konfiguriert sind oder anderweitig über eine Route verfügen. David Schwartz vor 10 Jahren 0
funktioniert immer noch nicht. Der zweite / dritte Anbieter usw. des Anbieters fügt die MAC-Adresse hinzu, solange er etwas an ihn oder irgendwo nach draußen sendet. static vor 10 Jahren 0
Können Sie Ihre aktuelle Konfiguration einfügen? Kann jeder Rechner sein Standard-Gateway erreichen? David Schwartz vor 10 Jahren 0
Ich habe die Konfiguration dynamisch gemacht (nicht über / etc / network / interfaces), da ich die Einstellungen ständig ändern muss. Was meinst du mit config: "ip r", "ip n"? Ja, jeder Rechner kann seinen Standardwert erreichen und weiter (ich kann das Internet erreichen). static vor 10 Jahren 0
aktualisiert: Konfiguration von "ip n", "ip r" hinzugefügt static vor 10 Jahren 0
abc129 ist das Standardgateway, es gibt jedoch keine Route zu abc129 und beide Hosts befinden sich nicht in einem gemeinsamen Netzwerk. David Schwartz vor 10 Jahren 0
Standardmäßig gw auf "Mein Host" und es hat standardmäßig "Abc129" (siehe "Mein Host" "> IP R"). Warum sollte der "zweite Host" "abc129" als Standardwert für gw haben?, Hat er "mein Host" als Standardwert für gw static vor 10 Jahren 0

1 Antwort auf die Frage

0
Ярослав Рахматуллин
a.b.c.129 at aa:bb:cc:dd:ee:ff [ether] on eth0 # !<------ why?  (it is even not from the same network) 

Es ist im selben Netzwerk. Andernfalls wird die Hardwareadresse des Knotens nicht angezeigt. Wenn Sie sich in anderen Netzwerken befanden, sehen Sie nur die MAC-Adresse Ihres Routers *. Logisch getrennte Subnetze können sich in demselben physischen Netzwerk befinden. Nichts hindert sie daran, den kürzesten physischen Weg zu benutzen. Das Gateway des Providers und Ihr Gateway teilen sich im Beispiel ein Subnetz.

Wenn Sie den gesamten Datenverkehr über Ihr Gateway erzwingen möchten, müssen Sie auf den Hosts Firewall-Regeln erstellen.

* Sie würden die MAC-Adresse von + 'sehen . (Ein Kreuz steht für eine NIC)

 [local subnet]---------+' local gw +" | | [ remote subnet]----+. remote gw +, 
Welche Firewall-Regeln meinen Sie? Es sollte keine REJECT / DROP-Regeln sein, andernfalls wird der Datenverkehr nur abgelehnt und es ist keine Kommunikation möglich. Ich brauche eine Regel, die den zweiten usw. Hosts dazu zwingt, Datenverkehr über den Router zu senden, nicht direkt. static vor 10 Jahren 0
[Diese Antwort] (http://serverfault.com/questions/345111/iptables-target-to-route-packet-to-specific-interface) beschreibt einen Weg, um etwas Verkehr durch eine bestimmte Schnittstelle zu erzwingen. Ähnliche Konfigurationen können für Adressen vorgenommen werden. Machen Sie Ihre Nachforschungen, probieren Sie mindestens eine Methode aus und stellen Sie bei Bedarf eine neue Frage zu iptables. Vergessen Sie nicht, Ihre tatsächlichen Ziele anzugeben (* Ich vermute *, z. B. Ihre Hosts vom GW des Providers isolieren). Viel Glück. Ярослав Рахматуллин vor 10 Jahren 1