Порядок служб macOS не керує вашими маршрутами VPN
Порядок служб вибирає між звичайними інтерфейсами. VPN уже стоїть вище них, а його включені маршрути беруться з профілю, а не з цього списку.
Щось на вебсайті не працює, колега згадує, що існує порядок служб, і Wi-Fi перетягують вище Ethernet. Нічого не змінюється, бо цей список ніколи не вирішував, куди йде призначення VPN. Apple дає VPN-з'єднанням пріоритет перед звичайними й тримає їх поза цим перевпорядкуванням, тож перемикач відповідає на вужче питання, ніж поставлене. Збою потрібен вибраний маршрут і resolver, а не новий рейтинг.
Що змінює порядок служб і чого він ніколи не торкається
«Налаштувати порядок служб» розташований у Системних налаштуваннях, Мережа, в меню Дія, і ранжує звичайні з'єднання, коли активні два або більше. Це ранжування вибирає основну службу, яка надає маршрут за замовчуванням і частину поведінки resolver. Це рішення між рівними, а не перемикач для приватних призначень за тунелем. Ноутбук із Wi-Fi і USB-Ethernet-адаптером використовує його, щоб відповісти на розумне питання, і це питання не про тунель.
Профіль VPN несе включені маршрути, виключені призначення й іноді правила для застосунків, і саме вони вирішують, що потрапляє в тунель; меню порядку їх не редагує. Тому профіль із розділеним тунелем може залишити публічний трафік зовні, поки VPN і далі стоїть вище кожного фізичного інтерфейсу. Перетягування Wi-Fi нагору не робить приватний діапазон доступним і не зупиняє призначення, яке профіль уже включає. Список рухає інтерфейси; профіль рухає префікси. Apple документує пріоритет на своїй сторінці порядку мережевих служб, яку варто прочитати один раз, перш ніж щось перевпорядковувати.
Прочитайте маршрут, який машина справді вибрала
Запитайте машину, куди йде конкретна адреса, командою route get 10.20.4.10, потім повторіть для IPv6 командою route -n get -inet6 2001:db8::10. Дві родини — це окремі рішення, тож робочий маршрут IPv4 нічого не каже про v6, а безпосередньо під'єднана підмережа або конкретніший префікс у будь-якому разі перемагає загальну мітку з'єднання, і саме тому мітка далі вводить людей в оману.
Якщо вивід називає інтерфейс тунелю, профіль перехопив призначення, і порядок не має значення. Якщо він називає фізичний інтерфейс, профіль цього не зробив, і жодне перетягування не змінить таблицю префіксів. Обидва виводи також називають адресу джерела, яку використала б машина, і це те поле, яке треба цитувати, порівнюючи два запуски. Збережіть вивід до того, як щось змінити, бо це єдиний доказ, який у вас залишиться.
DNS розв'язує за іменем, а не за інтерфейсом
Resolver'и з областю дії та прив'язані до домену означають, що відповідь може різнитися за іменем, а не за інтерфейсом. scutil --dns друкує конфігурацію resolver, яку система справді використовує, включно із записами з областю дії. Порядок служб впливає на те, яка служба надає resolver за замовчуванням, але область, прив'язана до імені, все одно може перемогти.
Тому ping за адресою може працювати, поки ім'я хоста не розв'язується, або навпаки. Прочитайте обидва виводи, перш ніж обирати винуватця.
Змініть профіль, потім знову прочитайте обидва виводи
Коли політику призначень треба змінити, власником є профіль VPN: включені маршрути, виключені маршрути й будь-які правила розділеного тунелю, які підтримує постачальник. Зміна інтерфейсів лише переносить суперечку. На Mac з віддаленим керуванням спершу збережіть поточний стан мережі, бо втрата тунелю на машині, до якої ви не дістанетеся, — це подорож, а не відкат.
Відтворіть збій, прочитайте маршрут, прочитайте resolver, змініть одну річ, потім знову прочитайте ті самі два виводи. Перемішування кількох служб і профілів одразу залишає машину, яку ніхто не може пояснити, включно з тим, хто її полагодив. Тест завершено, коли обидва виводи узгоджуються із задуманою зміною. Якщо вони досі розходяться, профіль і машина описують дві різні політики, і змінювати треба профіль.