Wie routet man 3 Computer in einem drahtlosen Ad-hoc-Netzwerk?

Wie routet man 3 Computer in einem drahtlosen Ad-hoc-Netzwerk?

Ich habe 3 Computer: 192.168.2.1, 192.168.2.2, 192.168.2.4, die an ein drahtloses Ad-hoc-Netzwerk angeschlossen sind. Ich möchte, dass der gesamte Datenverkehr von 192.168.2.1 über 192.168.2.2 läuft, wenn er mit 192.168.2.3 kommuniziert. Im Grunde

192.168.2.1 <---> 192.168.2.2 <---> 192.168.2.3

Wie ändere ich die Routingtabellen?

Ich habe es versucht:

[email protected]:   sudo ip route add 192.168.2.3 via 192.168.2.2 dev wlan0

[email protected]:   sudo ip route add 192.168.2.1 via 192.168.2.2 dev wlan0 

Ich habe die Weiterleitung auf 192.168.2.2 aktiviert und es funktioniert. Aber wenn ich Traceroute von 192.168.2.1 aus ausführe, sieht es so aus, als ob es direkt zu 192.168.2.3 geht. Jetzt habe ich ein paar weitere Knoten hinzugefügt (siehe die Routentabelle von 192.168.2.1 unten) und ich bekomme immer noch einen Hop, wenn ich Traceroute ausführe. Aber wenn ich mich bei 192.192.2.2 anmelde und Traceroute 192.168.2.5 ausführe, wird mir die richtige Anzahl an Hops angezeigt.

**ROUTE TABLE OF 192.168.2.1**

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG    202    0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     303    0        0 wlan0
192.168.1.0     0.0.0.0         255.255.255.0   U     202    0        0 eth0
192.168.2.0     0.0.0.0         255.255.255.0   U     0      0        0 wlan0
192.168.2.3     192.168.2.2     255.255.255.255 UGH   0      0        0 wlan0
192.168.2.4     192.168.2.2     255.255.255.255 UGH   0      0        0 wlan0
192.168.2.5     192.168.2.2     255.255.255.255 UGH   0      0        0 wlan0


**ROUTE TABLE OF 192.168.2.2**

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
169.254.0.0     0.0.0.0         255.255.0.0     U     303    0        0 wlan0
192.168.2.0     0.0.0.0         255.255.255.0   U     0      0        0 wlan0
192.168.2.4     192.168.2.3     255.255.255.255 UGH   0      0        0 wlan0
192.168.2.5     192.168.2.3     255.255.255.255 UGH   0      0        0 wlan0

Ist es möglich, dass die Knoten eine Art Zwischenspeicherung durchführen?

BEARBEITEN;Ich habe jetzt insgesamt 10 Knoten, und dies ist die Ausgabe von meinem Traceroute

traceroute -4 192.168.2.10

traceroute to 192.168.2.10 (192.168.2.10), 30 hops max, 60 byte packets
1  192.168.2.2 (192.168.2.2)  10.140 ms  10.324 ms  10.398 ms
2  192.168.2.3 (192.168.2.3)  17.292 ms  17.483 ms  17.564 ms
3  192.168.2.4 (192.168.2.4)  25.646 ms  25.708 ms  26.110 ms
4  192.168.2.5 (192.168.2.5)  34.156 ms  34.416 ms  34.501 ms
5  192.168.2.6 (192.168.2.6)  44.131 ms  44.479 ms  44.560 ms
6  192.168.2.7 (192.168.2.7)  51.382 ms  43.074 ms  46.144 ms
7  192.168.2.8 (192.168.2.8)  46.129 ms  43.374 ms  53.956 ms
8  192.168.2.9 (192.168.2.9)  58.156 ms  83.625 ms  83.642 ms
9  192.168.2.10 (192.168.2.10)  83.565 ms  84.008 ms  89.355 ms

Antwort1

Es ist möglich, dass Ihr Router den anderen mit einem ICMP-Umleitungspaket mitteilt, dass sie direkt senden sollen. Da sie sich alle im selben Netzwerk befinden, weiß er, dass dies möglich sein sollte.

Ich habe Routen wie Ihre zwischen drei Linux-Maschinen (mach1 <-> mach3 <-> mach2) eingerichtet und mit einem Ping getestet:

mach1# ping mach2 
PING mach2 (x.x.x.237) 56(84) bytes of data.
From mach3 (x.x.x.238): icmp_seq=1 Redirect Host(New nexthop: mach2 (x.x.x.237))
64 bytes from mach2 (x.x.x.237): icmp_seq=1 ttl=63 time=0.537 ms

Tcpdump auf Mach3 und Mach2 zeigt, dass Mach3 eine Umleitung an Mach1 sendet und danach der gesamte Datenverkehr direkt zwischen Mach1 und Mach2 verläuft.

Weiterleitungen können als etwas verdächtig angesehen werden, da sie auch umgekehrt verwendet werden können: um den Verkehr über eine dritte Maschine, einen Man-in-the-Middle, zu leiten. Siehe z. B.https://askubuntu.com/questions/118273/was-sind-icmp-redirects-und-sollten-sie-blockiert-werden

Das Senden und Empfangen von Weiterleitungen kann mit einigen Sysctls gesteuert werden:

net.ipv4.conf.*.accept_redirects
net.ipv4.conf.*.send_redirects

Nachdem ich net.ipv4.conf.eth0.send_redirects auf dem Router auf Null gesetzt und die Routen zurückgesetzt hatte, konnte ich den gesamten Datenverkehr über Mach3 leiten.

Ich habe dies nun in einem Switched-Netzwerk (und mit virtuellen Maschinen) getestet, daher bin ich mir nicht sicher, ob sich die Dinge ändern, wenn man sich in einem WLAN befindet. Ich denke nicht, dass dies der Fall sein sollte, wenn die Maschinen nur Frames verarbeiten, die an ihre Ethernet-Adresse gerichtet sind. Theoretisch könnte es jedoch möglich sein, jedes einzelne Frame aus der Luft abzufangen.

Antwort2

Das klingt zunächst einmal wie eineXY-Problem. Was versuchen Sie zu tun? Ich bin ziemlich sicher, dass die Weiterleitung des Netzwerkverkehrs auf diese Weise wahrscheinlich keine gute Lösung für Ihr Problem ist, was auch immer es ist.

Allerdings

Ihre Routing-Tabellen enthalten noch eine Route für 192.168.2.0/24. Das bedeutet, 192.168.2.1dass es zwei Routen gibt, um zu erreichen . 192.168.2.2Das Kernel-Routing-Subsystem berücksichtigt also beide, erkennt, dass eine eine direkte Route ist und die andere nicht, und verwendet die direkte Route (weil diese billiger sein soll).

Wenn Sie das nicht möchten, haben Sie zwei Möglichkeiten:

  • Entfernen Sie den Routing-Tabelleneintrag für 192.168.2.0/24. Dies bedeutet, dass Sie Routing-Tabelleneinträge für erstellen müssenalleHosts im Netzwerk – einschließlich derjenigen, die Sie direkt erreichen möchten.
  • Erstellen Sie zwei /24-Netzwerkbereiche und geben Sie dem Host, der sich derzeit 192.168.2.2in beiden Bereichen befindet, eine IP-Adresse (dafür ist keine separate Netzwerkschnittstelle erforderlich). Sie können dann alle anderen Hosts veranlassen, Pakete über diesen Host zu leiten.

Allerdings bin ich mir auch nicht sicher, ob das der beste Weg ist. Bitte erklären Sie, was Sie damit erreichen möchten.

verwandte Informationen