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

dpkg-query -W --showformat='${Status}\n' unzip 2>/dev/null
0
30.05.2016, 06:50
2 ответа

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

Я установил маршруты, подобные вашему, между тремя машинами Linux (mach1 <-> mach3 <-> mach2) и протестировал с помощью команды 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 на 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. Но теоретически можно было снимать каждый кадр с эфира.

2
28.01.2020, 02:27

Во-первых, это похоже на проблему 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-адрес в обоих диапазонах (для этого не требуется отдельный сетевой интерфейс). Затем вы можете настроить маршрутизацию пакетов всех остальных хостов через этот хост.

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

1
28.01.2020, 02:27

Теги

Похожие вопросы