Як я можу додати статичний маршрут, лише якщо хост доступний через мережевий інтерфейс?


1

У Raspbian (Debian) на RaspberryPi у мене є два інтерфейси, eth0і wlan0я використовую eth0(стільниковий модем) в якості основного з'єднання, через який проходить лише деякий інтенсивний трафік wlan0. З цією метою я використовую ip routeкоманду.
Напр .: (Маркування матеріалів Google через wlan0)

ip route add 74.125.228.0/24 dev wlan0

Але, на жаль, потужність у нашій будівлі періодично згасає, роблячи wlan0марною.

Як я можу тримати цей статичний з’єднання маршрутизованим лише тоді, коли хост (наприклад, Google.com) доступний через wlan0(тобто бездротовий), але перемикається на eth0(тобто стільниковий), коли живлення вимикається (наприклад, ураган Сенді) та бездротовий маршрутизатор марний?


Напишіть сценарій, який записує IP-адресу першого переходу (AP). Якщо це недоступно, переконфігуруйте так, щоб бездротовий зв’язок був відключений. Зауважте, ви можете або написати сценарій, який намагається повторно підключити кожні 30 хвилин, увімкнувши порт і намагаючись пінговувати AP, або вам доведеться скинути його вручну.
Еверетт

Існують протоколи маршрутизації, які роблять це за вас. Вам просто потрібно включити OSPF або BGP (замість статичного маршруту).
Еверетт

@Everett Перша пропозиція звучить багатообіцяюче. Не могли б ви вказати мені якийсь матеріал, який я міг би використати як приклад для такого сценарію? Що стосується другої пропозиції, хоча це правда, що ці протоколи маршрутизації могли б впоратися з цим, я переживаю, що вони можуть відмовитися від використання стільникового зв'язку eth0всі разом (за визначенням, це те, що OSPF хотів би зробити, я вважаю).
tamsanh

@Everett, схоже, найкращим варіантом буде проходження маршруту сценарію. Ймовірно, я налаштую щось на роботу з cron, яке перевіряє, чи може він пінг певного домену через wlan0. Якщо він не в змозі пінг, він просто перепрограє все.
tamsanh

Відповіді:


2

Чи підтримує команда аргумент, який називається метрикою - якщо два маршрути рівні, крім метрики, використовується нижня метрика. Зазвичай введення в ip route додати 74.125.228.0/24 dev wlan0 додасть його до таблиці з метрикою = 1, тобто Вручну доданий маршрут завжди використовується перший, але ви повинні мати можливість додавати другий маршрут до своєї менш бажаної картки з метрикою = 2


Я думаю, що це, мабуть, відповідь, яку я шукаю, і дійсно вона доступна в routeкоманді. Однак, згідно з даними сторінки, вона говорить, що вона не використовується останніми ядрами. Як тільки я отримаю можливість, я її перевіряю і звітую.
tamsanh

Команда метрики все ще доступна в останніх ядрах. (Труднощі можуть виникнути у тому випадку, якщо при відключенні живлення WLAN-з'єднання не втрачає маршруту). BTW, якщо ви не можете використовувати метрику, можливо, вам вдасться зламати подібні рішення з двома маршрутами - 0.0.0.0 маска 127.0.0.0 і 128.0.0.0 маска 127.0.0.0 в інтерфейсі LAN. Оскільки це більш конкретні маршрути, вони будуть віддавати перевагу, якщо вони будуть доступні - звичайно, проблема стає недоступною, коли WIFI знижується, і автоматично додає їх, коли WIFI повернеться.
davidgo

@davidgo, ви абсолютно правильні з проблемою Wi-Fi. Методичне рішення Росса було наполовину правильним, але (як ви вже сказали) wlan0технічно все ще є маршрутом. З того, що показали мої тести, це не повне рішення.
tamsanh

Тож поки що запропонована відповідь не повністю відповідає на запитання, вона найкраща з наявних, і, безумовно, допомогла у вирішенні більшості проблем.
tamsanh
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.