Как проложить 3 компьютера в беспроводной сети ad-hoc?

У меня есть 3 компьютера: 192.168.2.1, 192.168.2.2, 192.168.2.4, подключенные к беспроводной сети ad-hoc. Я хочу, чтобы весь трафик с 192.168.2.1 проходил через 192.168.2.2, когда он разговаривает с 192.168.2.3. В основном

192.168.2.1 <—> 192.168.2.2 <—> 192.168.2.3

Как изменить таблицы маршрутизации?

Я пытался:

pi@192.168.2.1: sudo ip route add 192.168.2.3 via 192.168.2.2 dev wlan0 pi@192.168.2.3: sudo ip route add 192.168.2.1 via 192.168.2.2 dev wlan0 

Я включил forwading на 192.168.2.2, и он работает. Но когда я делаю traceroute из 192.168.2.1, похоже, что он идет непосредственно на 192.168.2.3. Теперь я добавил несколько узлов (см. Таблицу маршрутов 192.168.2.1 ниже), и я все еще получаю один прыжок, когда я делаю traceroute. Но если я войду в 192.192.2.2 и I traceroute 192.168.2.5, он дает мне правильное количество прыжков.

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

Возможно ли, что узлы выполняют кэширование?

РЕДАКТИРОВАТЬ; Сейчас у меня всего 10 узлов, и это результат моего 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 

2 Solutions collect form web for “Как проложить 3 компьютера в беспроводной сети ad-hoc?”

Возможно, ваш маршрутизатор сообщает другим отправлять напрямую, с пакетом переадресации ICMP. Поскольку все они находятся в одной сети, он знает, что это должно быть возможно.

Я настраивал маршруты, подобные вашим, между тремя машинами Linux (mach1 <-> mach3 <-> mach2) и тестировался с помощью ping:

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

Tcpdump на mach3 и mach2 показывает mach3, отправляющий перенаправление на mach1, и после этого весь трафик идет непосредственно между mach1 и mach2.

Переадресации можно считать немного подозрительными, так как их можно использовать в обратном порядке: чтобы трафик был отправлен через третью машину, человек в середине. См. Например https://askubuntu.com/questions/118273/what-are-icmp-redirects-and-should-they-be-blocked

Отправка и получение перенаправления можно контролировать с помощью некоторых sysctl:

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

После установки net.ipv4.conf.eth0.send_redirects на ноль на маршрутизаторе и сброса маршрутов, я получил весь трафик, проходящий через mach3.

Теперь я тестировал это в коммутируемой сети (и с виртуальными машинами), поэтому я не уверен, что если на WLAN меняются вещи. Я не думаю, что это должно быть, если машины обрабатывают только фреймы, предназначенные для их адреса Ethernet. Но теоретически можно было бы выбрать каждый кадр с воздуха.

Прежде всего, это звучит как проблема XY . Что ты пытаешься сделать? Я уверен, что маршрутизация сетевого трафика таким образом вряд ли станет хорошим решением любой проблемы.

Было сказано, что,

В ваших таблицах маршрутизации по-прежнему есть маршрут для 192.168.2.0/24 . Это означает, что 192.168.2.1 имеет два маршрута для достижения 192.168.2.2 , поэтому подсистема маршрутизации ядра рассматривает оба варианта, считает, что один из них является прямым, а другой нет, и использует прямой маршрут (потому что это должно быть дешевле).

Если вы этого не хотите, у вас есть два варианта:

  • Удалите запись таблицы маршрутизации для 192.168.2.0/24 . Это означает, что вам необходимо создать записи таблицы маршрутизации для всех хостов в сети, включая те, которые вы хотите получить напрямую.
  • Создайте два / 24 сетевых диапазона и дайте хосту, который в настоящее время 192.168.2.2 IP-адрес в обоих диапазонах (для которого не требуется отдельный сетевой интерфейс). Затем вы можете передать всем другим хостам пакеты маршрутов через этот хост.

Опять же, я не уверен, что это лучший путь вперед. Пожалуйста, объясните, что именно вы пытаетесь достичь.

  • Ли Linux пересылает пакеты из WiFi в Intel AMT Management Engine?
  • Невозможно подключить USB Wi-Fi к гостевому серверу Kali с помощью Virtual Box
  • Pinging между узлами сети Mesh OpenWrt
  • Не удается получить доступ к доступному порталу во FreeBSD 12-CURRENT
  • Невозможно выполнить ping-роутер, но широковещательный ping возвращает ответ от него
  • Приобретение DHCP, но не ping, даже не для шлюза по умолчанию
  • Доступ к нескольким Wi-Fi-сетям одновременно с debian wheezy
  • Linux найдет протокол WiFi Networks (a / b / g / n) всех доступных точек доступа
  • Как узнать, какая прошивка загружена ядром?
  • Wifi не работает на Linux Mint
  • Arch Linux Ethernet для Wi-Fi-моста
  • Linux и Unix - лучшая ОС в мире.