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

Дві ролі незалежні, як і дві родини адрес.

Відповідь на власну адресу нічого не доводить

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

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

Те саме речення стосується міжмережевого екрана перед рішенням про пересилку, який має власну політику щодо того, що можна пересилати.

Перевіряйте кожну родину адрес окремо

Пересилка IPv4 — один перемикач, а пересилка IPv6 — інший, зі своєю поведінкою на кожному інтерфейсі. Увімкнення першого нічого не говорить про другий, і клієнт із подвійним стеком може досягти половини мережі, поки решта залишається темною. Тому два клієнти різних родин можуть не погоджуватися щодо одного й того самого шлюзу. Запитайте, яку родину використав клієнт, що не працює, перш ніж змінювати будь-яке налаштування. Підтвердьте обидві, перш ніж робити висновок, що схема маршрутизації неправильна.

sysctl net.ipv4.ip_forward
sysctl -a --pattern 'net.ipv6.conf.(all|default).forwarding'
nft list ruleset | head -n 40

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

Пересилка — одна з чотирьох вимог

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

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

Перевіряйте з боку клієнта, а не шлюзу

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

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

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

Схожі статті