Как Mac OSX отдает приоритет сетевым интерфейсам при маршрутизации?

20

Чтобы привести конкретный пример, как OSX выбирает, к какой из этих записей по умолчанию направить netstat -nr?

Destination        Gateway            Flags        Refs      Use   Netif Expire
0/1                10.10.99.100       UGSc            0        0    ppp0
default            192.168.1.1        UGSc            5        0     en0
default            192.168.1.1        UGScI           1        0     en1
default            192.0.2.1          UGScI         157        2    ppp0 

Из того, что я смог сказать, OSX использует метрики на своих интерфейсах, а не на записях таблицы маршрутизации. Но по умолчанию все эти метрики интерфейса равны 0, так как это выбрать? Последний созданный интерфейс?

Я видел, как некоторые люди предлагают этот порядок в настройках сети, но в моем случае интерфейс ppp0 (от SonicWall NetExtender) там не указан.

В этой теме есть некоторые обсуждения , но я не вижу ответа.

studgeek
источник
Вы узнали, как установить метрику маршрута?
endryha

Ответы:

8

Большинство систем следует этим правилам при выборе маршрута:

  • Найдите наиболее конкретные из них (т.е. те, которые имеют самый длинный совпадающий префикс).
  • Выберите тот, который имеет самый высокий приоритет .

В Linux (и, как мне кажется, в Windows) приоритет определяется метрикой , но это не относится к macOS, как вы правильно указали. Вместо того, чтобы назначать метрики отдельным маршрутам, macOS назначает приоритеты интерфейсам . Вы можете использовать, networksetup -listnetworkserviceorderчтобы просмотреть этот заказ и networksetup -ordernetworkservicesизменить его.

Теперь этот маршрут из вашего вывода заставляет меня думать, что в вашем случае специфичность также играет свою роль:

Destination        Gateway            Flags        Refs      Use   Netif Expire
0/1                10.10.99.100       UGSc            0        0    ppp0

Этот маршрут охватывает нижнюю половину адресного пространства, и поэтому я ожидаю также найти:

128.0/1            10.10.99.100       UGSc            0        0    ppp0

в вашей таблице маршрутизации. Это стандартная хитрость, которую программное обеспечение VPN использует для определения приоритетов своих маршрутов default: оно добавляет два маршрута, которые вместе охватывают все IP-адреса, но каждый из них является более конкретным, чем по умолчанию, поэтому они выигрывают.

kirelagin
источник
В Linux приоритет определяется только по метрике для отдельных таблиц маршрутизации, однако правила с более высоким приоритетом могут переопределять метрику маршрутов из других таблиц с более низким значением правила prio в случае нескольких таблиц маршрутизации. Также при динамической маршрутизации необходимо учитывать минимальное административное расстояние.
Мореаки
Большое вам спасибо за: «Это стандартная хитрость, которую программное обеспечение VPN использует для определения приоритетов своих маршрутов по умолчанию». Это, наконец, помогло мне понять, что WTF происходит в моем случае.
ipmcc
15

Любая таблица маршрутизации, которая имеет несколько маршрутов по умолчанию с одинаковыми показателями, выполняет балансировку нагрузки. В случае с Mac, тем не менее, он выберет первый интерфейс, который находится в списке интерфейсов. Если вы хотите просмотреть и изменить список, перейдите в «Открыть настройки сети», здесь вы увидите список сетевых интерфейсов, таких как ethernet, airport, ppp через mobile или 3G и т. Д. Ниже списка вы увидите звездочку в форме вариант со стрелкой вниз. Нажмите на это и установите «установить сервисный заказ». Здесь вы можете изменить настройки вашего конкретного интерфейса.

http://www.sustworks.com/site/prod_ipnrx_help/html/AlternateRouteHelp.html

Самир Согай
источник
3
Есть ли источник, на который вы можете ссылаться, который подтверждает это? Если вы можете сослаться на сайт, который сделает ваш ответ более значимым, и люди проголосуют за него.
SLM
1
«Установить порядок обслуживания» можно подтвердить здесь: OS X Mountain Lion: измените приоритет ваших сетевых подключений
Дэвид Моулз