Відкрийте сторінку налаштувань після підключення, і ви побачите три адреси DNS; питання аудиту — яка з них обробила ваш останній запит. Саме число нічого не вирішує, бо клієнтське розсилання, фізичний інтерфейс і політика для окремих доменів пишуть в одне й те саме подання. Ці записи мають різні області дії, і саме область, а не позиція, визначає, хто відповідає. Почніть із розділення джерел, потім перевірте той, якому належить важливе для вас ім'я.

Чому список довший за ваш профіль

VPN-клієнт розсилає адреси розпізнавача для тунельного з'єднання, а операційна система тримає їх поруч із тим, що вже мав фізичний інтерфейс. Маршрутизатор, корпоративна оренда DHCP, другий VPN і політика для окремих доменів додають кожен свій запис. Тому три адреси на сторінці можуть означати три області дії, а не три кандидати на одне завдання. Читати число як доказ витоку — перша помилка цього аудиту.

У межах одного інтерфейсу клієнт справді пробує свої сервери по порядку, тож упорядкований список не є безглуздим. Чергою не є об'єднане подання, де записи профілю, фізичного з'єднання й правил для окремих доменів стоять поруч без єдиного ранжування. Ця відмінність визначає, що ви перевіряєте: порядок пояснює поведінку в межах однієї області, а область пояснює все інше.

Зашифрований DNS ламає картину зсередини застосунку. Браузер або клієнт чату з власним розпізнавачем DNS-over-HTTPS надсилає запити повністю повз список операційної системи, тому адреси на сторінці налаштувань описують трафік, який застосунок ніколи не створював. Перевірте власне налаштування розпізнавача застосунку, перш ніж звинувачувати профіль у неправильно отриманому імені.

Що показує кожна з трьох перевірок

Кожне джерело залишає слід в іншому місці, і жодна команда не показує всі. Ось зіставлення, яке варто тримати поруч зі сторінкою налаштувань:

Entry sourceWhere it is visibleWhat it proves
Tunnel profileLink-scoped DNS on the tunnel deviceWhich servers the VPN asked you to use, not which one answered
Per-domain policySuffix list or routing domainsWhich names are steered to a particular resolver
Physical linkDNS on the LAN interfaceWhether a second scope still exists outside the tunnel
Application resolverApp settings, absent from the OS listWhether the system list was consulted at all

У системі з systemd-resolved авторитетною є resolvectl status, бо вона повідомляє про DNS для кожного з'єднання разом із доменами маршрутизації. macOS відповідає через scutil --dns, яка перелічує розпізнавачі з областю в порядку їх спроб. Windows ділить дві половини: Get-DnsClientServerAddress для серверів за інтерфейсами і Get-DnsClientNrptPolicy для правил суфіксів. Запустіть команду, що належить фактично використовуваному розпізнавачу, бо на машині з середовищем контейнерів і настільним розпізнавачем може бути встановлено більше одного.

Резервний розпізнавач, який не може відповісти за вашу зону

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

Split DNS існує, щоб цього не допустити: суфікси компанії йдуть до розпізнавача, який тримає зону, а публічні імена залишаються на стандартному шляху. Задум надійний, і він залежить від повноти списку суфіксів. Microsoft документує політику розпізнавача для кожного суфікса, яка керує цим у Windows, і та сама ідея проявляється як домени маршрутизації в systemd-resolved і як розпізнавачі з областю в macOS.

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

Запитуйте через політику, а не в обхід неї

Запитуйте через розпізнавач операційної системи, бо прямий запит до сервера обходить політику і повідомляє лише те, що сказав би цей сервер. Різниця між двома відповідями і є вся суть:

resolvectl query intranet.example.com
dig +short intranet.example.com @198.51.100.53

Якщо системний запит повертає приватну адресу, а прямий запит повертає NXDOMAIN, політика працює, і слабке місце — резерв. Якщо обидва повертають ту саму публічну відповідь, ім'я розв'язується поза задуманою областю, і список суфіксів — те місце, куди слід дивитися. Збережіть обидва виводи, бо суперечка про розпізнавач вирішується швидше двома рядками, ніж знімком екрана сторінки налаштувань.

Потім перевірте шлях збою, бо резерв, який ніхто не тестував, — це припущення. Зробіть бажаний розпізнавач чорною дірою для одного запиту і подивіться, яка адреса повернеться:

ip route add blackhole 198.51.100.53/32
resolvectl query intranet.example.com
ip route del blackhole 198.51.100.53/32

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

Вирішіть: залишити, обмежити чи видалити

Залиште другий розпізнавач, якщо він відповідає за потрібний вам простір імен і залишається доступним під профілем. Обмежте його областю, якщо він має бачити один суфікс і нічого більше, і видаліть його, якщо в нього немає ні області, ні задокументованої мети. Запис без роботи — майбутній витік без користі, а значення за замовчуванням від постачальника не є метою.

Запишіть результат у чотири стовпці: суфікс, розпізнавач, інтерфейс і власник. Цей рядок відповідає на наступне питання аудиту швидше за будь-який знімок екрана і переживає оновлення клієнта, яке тихо перевпорядковує список.

Схожі статті