Bermut
@Bermut
Жертва домашней лаборатории

Почему такое странное поведение статической маршрутизации в linux?

Сейчас экспериментирую со смартфоном, ос на нем - Android 10 (project sakura), соотвественно телефон с разблокированным загрузчиком и правами root. Телефон подключен к wifi сети и имеет ip - 10.0.0.2, маршрутизатор - 10.0.0.1, пк на linux - 10.0.0.3 (все устройства находятся в одном L2 домене), на телефоне раздается wifi сеть с ip - 192.168.0.1/24 (адрес wlan1 интерфейса), соотвественно, я прописываю маршрут до этой подсети через 10.0.0.2 на маршрутизаторе, и при трассировки адреса 192.168.0.1 через пк, трафик идет сначала через маршрутизатор, потом на телефон, что нормально, но спустя ~5 пакетов трассировки, маршрут меняется, и теперь трафик идет напрямую к ip 192.168.0.1 (wlan1 интерфейсу телефона), если я отменяю трассировку, и начинаю заного, доступа к 192.168.0.1 теряется, почему так? Если принудительно прописать маршрут на пк на подсеть 192.168.0.1/24 через маршрутизатор, то не помогает, доступа все так же нет. wlan1 и wlan0(интерфейс с ip 10.0.0.2) не соединены мостом. Маршрутизатор pfsense 2.6.0.
Первый пакет, в случае пинга с пк на ip 192.168.0.1, идет с redirect hop
From 10.0.0.1 icmp_seq=1 Redirect Host(New nexthop: 10.0.0.2)

и пинг продолжается, но есть остановить и возобновить его - пинга нет
  • Вопрос задан
  • 658 просмотров
Решения вопроса 1
ValdikSS
@ValdikSS
Так как вы пытаетесь маршрутизировать подсеть через роутер 10.0.0.1, которая доступна через другой "роутер" (10.0.0.2) в вашем же L2-сегменте, роутер 10.0.0.1 отправляет вашему компьютеру ICMP Redirect в целях оптимизации маршрута.
Настраивается принятие ICMP-редиректов опцией net.ipv4.conf.all.accept_redirects и сопутствующими, а отправка — net.ipv4.conf.all.send_redirects и сопутствующими.

Почему маршрутизация перестаёт работать, когда трафик идёт напрямую? Сложно сказать без отладки, но пальцем в небо: Wi-Fi — не Ethernet, хоть и пытается быть похожим на него. В Wi-Fi не передаётся MAC-адрес отправителя, из-за чего, например, его нельзя добавить в Ethernet-бридж.
Компьютер подключён также по Wi-Fi? В таком случае, вероятно, смартфон получает ваши пинги с MAC-адреса роутера 10.0.0.1, соответственно и ответить пытается ему, а не компьютеру.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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