Какой компонент в linux решает, через какой интерфейс соединиться с IP адресом?
Добрый день!
Помогите разобраться или найти концы, про что читать.
Есть linux компьютер (raspberry pi 4 c raspbian если это имеет значение).
Он подсоединен к интернету через LAN, Wi-Fi и внешний 4G модем (ну так, больше теоретически). Эти устройства, могут отваливаться в случайном порядке - нет связи по 4G, перегружена wi-fi среда или просто не вставили кабель или модем.
Какой компонент в linux решает, через какое устройство связаться с ip адресом?
Что будет в случае, если соединение с роутером через LAN есть, но доступа к интернет нет? А через модем 4g есть. Как этот компонент выберет через какой интерфейс связываться? Или надо в рукопашном режиме как-то опрашивать (контролировать) устройства связи и устанавливать связь через определенное устройство?
Нет готового инструмента. Народ обычно колхозит под свои условия. Например, скрипт проверяет доступность специально выбранных ресурсов через каждый из каналов и на основе этого меняет default.
Вся маршрутизация зашита в логику работы стека TCP/IP. Управляется таблицей маршрутизации. За доступ в интернет отвечает в таблице маршрутизации запись о маршруте по умолчанию. Таких маршрутов может быть несколько с разными метриками (приоритетами). Используется тот маршрут у кого приоритет выше.
Так же и таблиц маршрутизации может быть несколько - это вариант как раз для ситуации, когда есть несколько каналов в интернет и нужно сделать балансировку нагрузки или отказоустойчивость (или гибридную схему). С помощью грамотной настройки фаервола и дополнительных скриптов можно все это организовать. Это уже придется делать самому, или использовать сторонний софт/железо. Но инструменты для подобных вещей есть.
Если интернет не доступен по заданному маршруту, то пакеты все равно будут отправляться и будут где-то пропадать. Так что ответов не будет или будет ответ с ошибкой. Соединения будут отваливаться либо по тайм-ауту, либо по ошибке.