6

У меня есть дополнительный вопрос к вопросу, на который я нашел ответ на unix.stackexchange.com (см. Ссылку ниже).


В чем разница между следующими двумя записями таблицы маршрутизации:

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

(Где EFGH - это некоторый 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

Но я этого не понимаю sad

Любые намеки очень ценятся!

1 ответ1

2

С помощью опции -ifscope команды route связывает маршрут с конкретным интерфейсом, который отображается в выводе netstat с флагом I.

Решение о том, когда использовать ваш второй маршрут, будет приниматься по его IP-адресу и метрикам или по запросу напрямую. В случае дублирования IP-адресов выбирается лучший маршрут, который может быть не связан интерфейсом. Синтаксис существует для принудительного использования данного интерфейса, но я не знаю точно, какие операционные системы или утилиты поддерживают этот синтаксис. Это обычно относится больше к iPv6.

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

  • Когда информация о области действия является именем интерфейса:

    ping fe80::1%eth0

  • Когда информация о области действия является индексом интерфейса:

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

Десятичное значение 65541 интерпретируется операционной системой в соответствии с ее алгоритмами (не очень хорошая идея для использования).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .