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

Що роутер насправді робить

Роутер стоїть між клієнтом і партнером IPsec і пересилає пакети, які ніколи не був розрахований розуміти. Виробники реалізують функцію щонайменше трьома способами: помічник протоколу, який відстежує або переписує стан; виняток у фільтрі, який перестає відкидати ESP; або режим сумісності для старіших клієнтів. Напис у веб-інтерфейсі рідко каже, який із трьох у вас. Про це скажуть лише нотатки до прошивки або запис пакетів.

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

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

NAT і NAT-T вирішують шлях

IPsec не створювався, щоб пережити трансляцію адрес, тому стандарти додали обгортку. NAT traversal інкапсулює ESP усередині UDP, дозволяючи звичайній таблиці NAT нести потік, і переговори домовляються про це перемикання під час IKE (RFC 3948). Сам IKE використовує UDP 500, а інкапсульований шлях зазвичай використовує UDP 4500.

Тому правила брандмауера, яке дозволяє лише протокол 50, на трансльованому шляху недостатньо. Блокування 4500 ламає випадок, заради якого існує обгортка, а блокування 500 зупиняє переговори до того, як утвориться будь-який тунель. Обидва напрямки важливі, бо роутер із відстеженням стану зазвичай дозволяє відповідь лише після того, як побачив запит. Досягти порту — не те саме, що завершити автентифікацію, і не те саме, що переслати захищений трафік.

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

Знайдіть етап, що зривається

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

sudo tcpdump -ni any 'udp port 500 or udp port 4500'
ip xfrm state list
ip xfrm policy list

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

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

Вимкніть те, що вам не потрібно

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

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

Схожі статті