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


22

Чи має значення порядок маршрутизації:

> route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
123.x.x.151     0.0.0.0         255.255.255.255 UH    0      0        0 vmbr0
123.x.x.154     0.0.0.0         255.255.255.255 UH    0      0        0 vmbr0
123.x.x.128     0.0.0.0         255.255.255.224 U     0      0        0 vmbr0
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 vmbr1
0.0.0.0         123.x.x.129     0.0.0.0         UG    0      0        0 vmbr0

це те саме, що:

> route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
123.x.x.128     0.0.0.0         255.255.255.224 U     0      0        0 vmbr0
123.x.x.151     0.0.0.0         255.255.255.255 UH    0      0        0 vmbr0
123.x.x.154     0.0.0.0         255.255.255.255 UH    0      0        0 vmbr0
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 vmbr1
0.0.0.0         123.x.x.129     0.0.0.0         UG    0      0        0 vmbr0

?

де різниця, те

123.x.x.128     123.x.x.129         255.255.255.224 U     0      0        0 vmbr0

вищий порядок, ніж

123.x.x.151     0.0.0.0         255.255.255.255 UH    0      0        0 vmbr0

тож якщо я надішлю, 123.x.x.151куди піде:

- the routed way over `123.x.x.129`, because it matches the `123.x.x.128` rule, or
- the direct way using the arp table, because it matches the `123.x.x.151` rule

?

Відповіді:


27

Порядок у таблиці не має значення; маршрути з більш тривалим префіксом завжди мають пріоритет. Якщо ви перестанете чіплятися до мережних масок і замість цього розглянете довжини префікса (що ip routeпоказує), у вас є 123.x.x.128/27і 123.x.x.151/32, а останній - більш конкретний - маршрут буде мати пріоритет над першим (більш загальним).


2
Що станеться, якщо існують маски розміру еквалу? Напр. 10.0.0.0/24 та 192.168.0.0/24.
ManuelSchneid3r

3
@ ManuelSchneid3r: Нічого не відбувається. Маршрути розглядаються тільки , якщо вони на насправді збігаються призначення, а також IP - адреса , очевидно , не може починатися з 10.і 192.в той же час, так що це буде відповідати тільки один з цих масок в першу чергу.
grawity

1
що робити, якщо у вас є два інтерфейси в одному IP-просторі?
MikeSchem

@MikeSchem: Тоді використовується параметр 'метрика' обох маршрутів. (ОС зазвичай відмовляється додавати два маршрути з однаковим префіксом, однаковим префіксом та однаковою метрикою, або, можливо, об'єднати їх у маршрут, збалансований навантаженням ECMP.)
grawity

5

Замовляйте лише питання, якщо у вас є дублікати маршрутів. Не робіть цього.

Наприклад, якщо два інтерфейси мають однакове призначення, мережну маску та шлюз 0,0.0,0, перший захопить увесь трафік для цієї мережі.

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


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