Як 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) там не вказаний.

У цій темі є деяка дискусія , але жодної відповіді я не бачу.


Ви дізналися, як встановити метрику маршруту?
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-адреси, але кожен з них є більш конкретним, ніж за замовчуванням, тому вони виграють.


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

Дякую вам за: "Це стандартний трюк, який програмне забезпечення VPN використовує для визначення пріоритетності своїх маршрутів над типовими". Це нарешті допомогло мені зрозуміти, що WTF відбувається в моєму випадку.
ipmcc

15

Будь-яка таблиця маршрутизації, яка має декілька маршрутів за замовчуванням з рівними показниками, робить балансування навантаження. Однак справа з mac полягає в тому, що він вибере перший інтерфейс, який знаходиться в списку інтерфейсів. Якщо ви хочете переглянути та змінити список, перейдіть до "Налаштування відкритої мережі", тут ви побачите список мережевих інтерфейсів, таких як ethernet, аеропорт, ppp через мобільний або 3g тощо. Нижче списку ви побачите форму зірочки варіант зі стрілкою вниз. Клацніть це і встановіть "встановити порядок обслуговування". Тут ви можете змінити налаштування вашого конкретного інтерфейсу.

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


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

1
"Встановити сервісне замовлення" можна підтвердити тут: OS X Mountain Lion: змініть пріоритет мережевих з'єднань
David Moles
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.