Фільтри маяка Nebula проти міжмережевого екрана: що блокує кожен
Списки дозволів маяка вирішують, які кінцеві точки базової мережі партнер оголошує або пробує. Правила міжмережевого екрана керують трафіком у накладеній мережі після рукостискання.
Подивіться на рукостискання Nebula з неправильного боку, і два механізми здадуться взаємозамінними. Один вирішує, які адреси вузол повідомляє маяку і які віддалені адреси він спробує; інший вирішує, що може пройти після того, як тунель існує. Фільтр може зупинити з’єднання до того, як буде оцінено хоч одне правило екрана, а правило екрана не може оживити кінцеву точку, яку видалило виявлення. Два шари відповідають на різні питання, і порядок їхньої дії — ключ.
Простежте одне з’єднання через чотири етапи: оголошена локальна адреса, розглянута віддалена кінцева точка, рукостискання і трафік у накладеній мережі. Кожен етап має власну конфігурацію та власний підпис відмови.
Почніть з локальної адреси, яку оголошує вузол
local_allow_list фільтрує локальні адреси цього хоста, перш ніж їх буде передано маякам. Записи можуть бути діапазонами адрес, а конфігурація підтримує й шаблони назв інтерфейсів. Це корисно, коли хост має контейнерні мости або додаткові тунельні інтерфейси, які не повинні ставати кінцевими точками партнерів.
Пройдіть інтерфейси хоста і запитайте, до яких віддалений партнер справді може дістатися. Адреса мосту Docker є локальною для цього хоста і марною для партнера в іншій мережі. Її оголошення марнує виявлення і може надіслати партнера до адреси, яка ніколи не відповідає. Усе, куди партнер не може маршрутизувати, — шум у відповіді маяка.
Вузький список дозволів тут безпечніший за широкий список заборон. Якщо є лише записи дозволів, невизначений залишок виключається; додавання запису заборони пізніше змінює логіку за замовчуванням і потребує окремого перегляду. Ця зміна варта другого погляду на значення за замовчуванням.
Далі спостерігайте за вибором віддаленої кінцевої точки
remote_allow_list фільтрує адреси, які цей хост розгляне для віддаленого партнера під час рукостискання. Це стосується адреси базової мережі, а не адреси накладеної мережі, яку партнер використає після підняття тунелю.
Приватний діапазон може бути цілком придатним у спільній офісній мережі й безглуздим, коли два хости перебувають у незв’язаних мережах, які обидві використовують 10.0.0.0/8. Фільтр дозволяє віддати перевагу маршрутизованому шляху й знехтувати збігом.
Коли партнер не може підключитися, порівняйте адресу, яку пробують, із правилом, що їй відповідає. Увімкніть журнали рукостискання і прочитайте вибрану віддалену адресу; рядок журналу називає кінцеву точку, що пережила фільтрування, і це корисніше за список адрес, якими володіє партнер.
Фільтр назв інтерфейсів на боці оголошення може прибрати кінцеву точку раніше, ніж приймальна сторона її побачить. Перевіряйте обидва вузли, коли не працює лише один напрямок.
Після рукостискання діють правила доступу накладеної мережі
Правила міжмережевого екрана Nebula працюють усередині накладеної мережі, після встановлення тунелю. Вони зіставляють хости, групи, порти й протоколи та вирішують, чи може пакет увійти в локальний хост або залишити його. Вони не вибирають кінцеву точку в базовій мережі.
Цей поділ пояснює часту помилкову діагностику. Оператор додає правило екрана для порту і все одно не може підключитися, бо фільтр маяка прибрав єдину досяжну кінцеву точку. Інший оператор відкриває фільтр адрес і все одно не дістається служби, бо екран накладеної мережі відхиляє порт.
Читайте відмову на правильному шарі. Рукостискання, яке ніколи не завершується, вказує на виявлення, фільтрування кінцевих точок або мережевий шлях. Завершене рукостискання, за яким іде відхилене або скинуте з’єднання зі службою, вказує на екран накладеної мережі або на застосунок.
Читайте значення за замовчуванням, коли змішуєте дозвіл і заборону
Конфігурація маяка підтримує списки лише з дозволами, лише із заборонами і змішані, і значення за замовчуванням для невизначеного залишку різниться між цими формами. Змішаному списку потрібен явний стандарт для родини адрес; припущення, що залишок поводиться як попередня конфігурація, — це шлях, яким робоча кінцева точка тихо зникає.
lighthouse:
local_allow_list:
interfaces:
docker0: false
remote_allow_list:
192.168.0.0/16: true
default: false
Ставтеся до значення за замовчуванням як до частини правила, а не як до шаблонного тексту. Якщо значення за замовчуванням для родини — заборона, кожну не вказану в списку адресу виключено, зокрема новий офісний діапазон, доданий після написання конфігурації.
Запишіть, які адреси мали бути досяжними, і перевіряйте з обох боків. Фільтр, який працює для однієї пари партнерів, може не працювати для іншої пари, чий єдиний спільний шлях використовує адресу, виключену списком.
Використовуйте relay, коли жодна пряма кінцева точка недосяжна
Якщо кожну кінцеву точку-кандидата відфільтровано або вона недосяжна, відповідь — не ширший список дозволів, який знову приймає адреси, яким ви не довіряєте. Конфігурація relay у Nebula дає альтернативний шлях для партнера, коли пряме з’єднання неможливе.
Relay розв’язує завдання транспорту й виявлення, а не авторизації, і він не розширює екран. Екран накладеної мережі далі вирішує, які служби можна використовувати, а relay не перетворює фільтрування маяка на механізм контролю доступу.
Перевірте шлях через relay з вимкненими прямими кінцевими точками і підтвердьте, що потрібна служба далі працює, а непотрібна — ні. Цей єдиний тест відокремлює виправлення транспорту від зміни політики й тримає обидва шари чесними.