¿Cómo enrutar 3 computadoras en una red inalámbrica ad-hoc?

¿Cómo enrutar 3 computadoras en una red inalámbrica ad-hoc?

Tengo 3 computadoras: 192.168.2.1, 192.168.2.2, 192.168.2.4 conectadas a una red inalámbrica ad-hoc. Quiero que todo el tráfico de 192.168.2.1 pase por 192.168.2.2 cuando se comunique con 192.168.2.3. Básicamente

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

¿Cómo modifico las tablas de enrutamiento?

Lo intenté:

[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 

Habilité el reenvío en 192.168.2.2 y funciona. Pero cuando hago un traceroute desde 192.168.2.1, parece que va directamente a 192.168.2.3. Ahora, agregué algunos nodos más (consulte la tabla de rutas de 192.168.2.1 a continuación) y todavía obtengo un salto cuando hago traceroute. Pero si inicio sesión en 192.192.2.2 y rastreo la ruta 192.168.2.5, me da la cantidad correcta de saltos.

**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

¿Es posible que los nodos realicen algún almacenamiento en caché?

EDITAR;Ahora tengo 10 nodos en total y este es el resultado de mi 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

Respuesta1

Es posible que su enrutador les indique a los demás que envíen directamente, con un paquete de redireccionamiento ICMP. Como todos están en la misma red, sabe que esto debería ser posible.

Configuré rutas como la suya entre tres máquinas Linux (mach1 <-> mach3 <-> mach2) y las probé con un ping:

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 en mach3 y mach2 muestra que mach3 envía una redirección a mach1, y luego todo el tráfico va directamente entre mach1 y mach2.

Las redirecciones pueden considerarse un poco sospechosas, ya que se pueden usar de manera opuesta: enviar el tráfico a través de una tercera máquina, un intermediario. Ver por ejemplohttps://askubuntu.com/questions/118273/what-are-icmp-redirects-and-should-they-be-blocked

El envío y la recepción de redireccionamientos se pueden controlar con algunos sistemas:

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

Después de configurar net.ipv4.conf.eth0.send_redirects a cero en el enrutador y restablecer las rutas, logré que todo el tráfico pasara por mach3.

Ahora, probé esto en una red conmutada (y con máquinas virtuales), por lo que no estoy seguro de si estar en una WLAN cambia las cosas. No creo que deba hacerlo si las máquinas solo manejan tramas destinadas a su dirección Ethernet. Pero en teoría sería posible capturar cada fotograma del aire.

Respuesta2

En primer lugar, esto suena como unproblema xy. ¿Que estás tratando de hacer? Estoy bastante seguro de que es poco probable que enrutar el tráfico de la red de esta manera sea una buena solución para cualquiera que sea su problema.

Una vez dicho esto,

Sus tablas de enrutamiento todavía tienen una ruta para 192.168.2.0/24. Esto significa 192.168.2.1que tiene dos rutas para llegar 192.168.2.2, por lo que el subsistema de enrutamiento del kernel considera ambas, ve que una es una ruta directa y la otra no, y usa la ruta directa (porque se supone que es más barata).

Si no quieres eso, tienes dos opciones:

  • Elimine la entrada de la tabla de enrutamiento para 192.168.2.0/24. Esto significa que debe crear entradas en la tabla de enrutamiento paratodohosts en la red, incluidos aquellos a los que desea comunicarse directamente.
  • Cree dos rangos de red /24 y proporcione al host cuál es actualmente 192.168.2.2una dirección IP en ambos rangos (eso no requiere una interfaz de red separada). Luego puede hacer que todos los demás hosts enruten paquetes a través de ese host.

Sin embargo, una vez más, no estoy seguro de que éste sea el mejor camino a seguir. Por favor, explica qué es lo que estás tratando de lograr.

información relacionada