Який трафік використовує інтерфейс зв'язаний маршрут (прапор RTF_IFSCOPE)?


6

У мене є наступне питання до питання, яке я знайшов відповів на unix.stackexchange.com (див. Посилання нижче).


Яка різниця між двома записами таблиці маршрутизації:

default            E.F.G.H     UGSc            0        0     en1
default            E.F.G.H     UGScI          25        0     en1

(Де E.F.G.H - це IP-адреса шлюзу). Який ефект має прапор RTF_IFSCOPE на запис таблиці маршрутизації?

Джерело: Таблиці маршрутизації: Який ефект має прапор RTF_IFSCOPE?


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

Добре, але що це означає? Припустимо, у мене є такі (як я дійсно робив, тільки змінили IP-адреси):

default            192.168.1.1        UGSc           14        0     en2
default            192.168.0.1        UGScI           1        0     en0

За яких обставин буде використаний другий маршрут? Або взагалі, коли буде " I "Маршрут буде використаний?" Реальний "маршрут за умовчанням, здається, без нього I ". Оскільки:

$ route get 8.8.8.8
    route to: google-public-dns-a.google.com
destination: default
       mask: default
    gateway: 192.168.1.1
  interface: en2
      flags: <UP,GATEWAY,DONE,STATIC,PRCLONING>
 recvpipe  sendpipe  ssthresh  rtt,msec    rttvar  hopcount      mtu     expire
       0         0         0         0         0         0      1500         0 

До речі: я знаю про наступне з man netstat:

I       RTF_IFSCOPE      Route is associated with an interface scope

Але я не розумію :(

Будь-які натяки дуже цінуються!

Відповіді:


2

Використання команд маршруту -ifscope опція пов'язує маршрут до певного інтерфейсу, який показує у виході netstat з прапором I.

Рішення про те, коли використовувати ваш другий маршрут, буде за його IP-адресою та показниками, або за запитом безпосередньо. У разі повторюваних IP-адрес вибирається найкращий маршрут, який може не бути через пов'язаний інтерфейс. Існує синтаксис для примусового використання даного інтерфейсу, але я не знаю точно, які операційні системи або утиліти підтримують цей синтаксис. Це звичайно більше стосується iPv6.

Приклад того, як вказати інформацію про сферу:

  • Коли інформація про область дії є ім'ям інтерфейсу:

    ping fe80::1%eth0

  • Коли інформація про область дії є індексом інтерфейсу:

    ping fe80::9:47:100:112%65541

Десяткове значення 65541 інтерпретується операційною системою відповідно до її алгоритмів (не дуже гарна ідея для використання).


The decision on when to use your second route will be by its IP address and metrics, or if requested directly.
scherand

Я думаю, що магія в цьому реченні: The decision on when to use your second route will be by its IP address and metrics, or if requested directly. У моєму маленькому прикладі є два маршрути за замовчуванням. Ви маєте на увазі, що другий буде використовуватися для чогось подібного ping -I <IP of en0> 8.8.8.8 (безпосередньо запитаний інтерфейс)? Яке значення має "його IP-адреса і метрика"?
scherand

1
Metric = "вартість". Для IP-адреси маршрут використовується, якщо: (1) запитано по імені, або якщо ім'я не вказано, (2) Це єдиний для ІР, або у випадку дублікатів (3) метрики є найнижчим, або якщо метрики рівні, (4) будь-якими алгоритмами операційної системи. Звичайним методом є встановлення метрики маршруту, який ви не віддаєте перевагу вище. Див., Наприклад це і це .
harrymc

Добре, я розумію (2), (3) і (4). Але не дійсно (1). Якщо дотримуватися прикладу ping -I <IP of en0> 8.8.8.8 б -I кинути мене на випадок (1)? Є -I "запит по імені"? Також з того, що я бачу, немає різних метрик (або я їх просто не бачу?) Для двох маршрутів за замовчуванням; так (3) не застосовується? Прямо до (4)? Або що команда дозволить мені побачити показники на OS X (я перевірив netstat -rn і route )?
scherand

Я не на Linux, а на керівництво Я сумніваюся в цьому ping -I називає інтерфейс у сенсі вашого питання, оскільки -I може бути "числовий IP-адреса або ім'я пристрою", таким чином ігноруючи питання про дублювання IP-адрес. Єдиний документований синтаксис, який я знайшов, міститься в моїй відповіді, і, як я сказав, я не знаю, в якій мірі вона реалізована. Ім'я інтерфейсу здається сірою зоною, лише частково обробленою. Системні виклики Linux, безумовно, можуть приймати імена інтерфейсів, але здається, що не всі програми повністю реалізують синтаксис для них.
harrymc
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.