Какая часть linux отвечает за "пересылка«трафик между интерфейсами?
Я знаю о "/ proc / sys / net / ipv4 / ip_forward"но какая часть ОС, ядра или модуля на самом деле проверяет этот параметр и решает, выполнять пересылку или нет?
Ядро сидит там и бездумно пересылает любой полученный пакет, который не адресован этому компьютеру, на другой интерфейс на основе таблицы маршрутизации?
Это очень фундаментальный вопрос, который я всегда хотел глубоко понять.
Какая часть Linux отвечает за «пересылку» трафика между интерфейсами?
Сетевой стек IP. Все IP-протоколы - UDP, TCP и т. Д. - используют одни и те же основные инструменты маршрутизации и поведение. Это также верно и для IPv6, который имеет несколько иную реализацию, но в основном ту же архитектуру.
Сидит ли там ядро и бездумно пересылает любой полученный пакет, который не адресован этой машине, на другой интерфейс на основе таблицы маршрутизации?
Да. За исключением части «бездумно», где вы хотели сказать «как задумано».
Процесс прост: когда машина, которая подтверждает соответствие спецификации IP, получает пакет, она принимает очень простые решения; основной процесс:
В ip_forward(...)
Метод вызывается как часть общего алгоритма и настолько прост, насколько вы могли подумать. IP - это, по сути, очень простой протокол.