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


19

На моєму ПК я маю наступну таблицю маршрутизації:

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 призначення через широкомовне повідомлення, тоді мій ПК міг направити повідомлення безпосередньо до пункту призначення.

Відповіді:


19

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

Однак на 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порожня і зарезервована для післяобробки, якщо попередні правила за замовчуванням не обрали пакет.

Ви можете додати свої власні таблиці та додати правила, щоб використовувати їх у конкретних випадках. Один із прикладів, якщо у вас є два підключення до Інтернету, але один хост або підмережа завжди повинні бути маршрутизовані через одне конкретне з'єднання з Інтернетом.

Routing Policy з Linux книги пояснює все це в найдрібніших деталях.


чи є спосіб змінити цей пріоритет?
Mheni

4

Таблиця маршрутів зазвичай застосовується в порядку від "найбільш конкретного" до "найменш конкретного". Місце призначення 0.0.0.0з мережевою маскою 0.0.0.0, тобто ваш маршрут за замовчуванням , є найменш конкретним можливим і тому завжди застосовуватиметься останнім.

Якщо у вас була локальна MAC-адреса для іншого ПК у вашій локальній мережі, але це було в іншій підмережі, ви можете додати певний хост-маршрут для цього ПК, і ви, ймовірно, отримаєте зв’язок.


s / зазвичай / завжди /. Це досить важливо для способу роботи таблиць маршрутизації.
Селада

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