в каком порядке анализируется таблица маршрутов?

На моем компьютере я должен выполнить следующую таблицу маршрутизации:

Destination Gateway Genmask Flags MSS Window irtt Iface 0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 wlan0 192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 wlan0 

Я не понимаю, как это анализируется, я имею в виду сверху вниз или снизу вверх?

Если он анализируется сверху вниз, все будет всегда отправляться на маршрутизатор в моем доме, даже если IP-адрес был 192.168.1.15; но то, что я знал (ошибочно?), было то, что если компьютер находится внутри моей локальной сети, то, как только я восстановил назначение MAC через широковещательное сообщение, мой компьютер мог отправить сообщение непосредственно получателю.

Таблица маршрутизации используется в порядке наиболее специфичного для наименее специфичного.

Однако на linux это немного сложнее, чем вы могли ожидать. Во-первых, существует более одной таблицы маршрутизации, и когда какая таблица маршрутизации используется, зависит от ряда правил.

Чтобы получить полную картину:

 $ ip rule show 0: from all lookup local 32766: from all lookup main 32767: from all lookup default $ ip route show table local broadcast 127.0.0.0 dev lo proto kernel scope link src 127.0.0.1 local 127.0.0.0/8 dev lo proto kernel scope host src 127.0.0.1 local 127.0.0.1 dev lo proto kernel scope host src 127.0.0.1 broadcast 127.255.255.255 dev lo proto kernel scope link src 127.0.0.1 broadcast 192.168.0.0 dev eth0 proto kernel scope link src 192.168.1.27 local 192.168.1.27 dev eth0 proto kernel scope host src 192.168.1.27 broadcast 192.168.1.255 dev eth0 proto kernel scope link src 192.168.1.27 $ ip route show table main default via 192.168.1.254 dev eth0 192.168.0.0/23 dev eth0 proto kernel scope link src 192.168.1.27 $ ip route show table default $ 

local таблица – это специальная таблица маршрутизации, содержащая маршруты приоритетного управления для локальных и широковещательных адресов.

main таблицей является обычная таблица маршрутизации, содержащая все маршруты без политики. Это также таблица, которую вы видите, если вы просто выполняете ip route show (или ip ro для краткости). Я рекомендую больше не использовать старую команду route , так как она отображает только main таблицу, а ее выходной формат несколько архаичен.

Таблица по default пуста и зарезервирована для последующей обработки, если предыдущие правила по умолчанию не выбрали пакет.

Вы можете добавить свои собственные таблицы и добавить правила, чтобы использовать их в определенных случаях. Например, если у вас есть два интернет-соединения, но один хост или подсеть должны всегда маршрутизироваться через определенное интернет-соединение.

В книге Policy Routing with Linux подробно описывается все это.

Таблица маршрутизации обычно применяется в порядке от «наиболее специфического» к «наименее конкретному». Назначение 0.0.0.0 с маской сети 0.0.0.0 , т. 0.0.0.0 Ваш маршрут по умолчанию , является наименее конкретным и поэтому всегда будет применяться последним.

Если у вас есть MAC-адрес для другого ПК в вашей локальной сети, но это было в другой подсети, вы могли бы добавить определенный хост-маршрут для этого ПК, и вы, вероятно, получите сообщение.