Тунель VPN ніколи не підключається: де насправді зупиняються пакети
Тунель, який так і не формується, залишає порожній журнал з обох боків. Перевірте, чи не відкидаються GRE, ESP або UDP 4500, і визначте NAT оператора, перш ніж редагувати сервер.
Клієнт продовжує повторювати спроби, журнал обривається до завершення рукостискання, а сервер не фіксує взагалі нічого. Ця картина відводить від облікових даних до шляху: щось між двома кінцями відмовляється передавати протокол, потрібний тунелю. Визначте, де зупиняються пакети, перш ніж торкатися будь-якої з двох конфігурацій, бо відфільтрований протокол і неправильний пароль дають у більшості клієнтів ту саму привітну помилку. Тести впорядковані за витратами, найдешевший першим.
Доведіть, де зупиняється трафік
Записуйте одночасно на вихідному інтерфейсі клієнта і на сервері. Порівняйте, що пішло, з тим, що надійшло, і зазначте, у якому напрямку з'являється різниця.
Нічого на сервері означає, що шлях або перший NAT відкидає трафік, а надходження без відповідей вказують на міжмережевий екран на сервері або на неіснуючий зворотний маршрут. Маршрутизатор, що часто завершує тунелі, зазвичай не веде корисного журналу, тому знімок стає записом. Запишіть порт призначення і номер протоколу, бо обидві несправності виглядають у вікні клієнта однаково.
PPTP помирає без протоколу 47
PPTP передає керування через TCP 1723, а дані всередині GRE, який є IP-протоколом 47, а не номером порту. Переадресація лише 1723 дає класичний результат: з'єднання проходить автентифікацію і потім замовкає, бо правила для протоколу, що несе корисне навантаження, немає. Клієнт не може відрізнити це від відхиленого пароля, тому знімок має бути зроблений до змін конфігурації.
Проброс працює в протилежному напрямку від вхідної переадресації, і прошивка достатньо часто використовує одну мітку для обох, щоб усіх заплутати. На клієнті Linux локальний міжмережевий екран може відкинути GRE задовго до того, як маршрутизатор узагалі буде задіяний, тому протоколу 47 потрібне власне правило, а помічник conntrack має бути завантажений. ufw в Ubuntu тримає ці правила у файлі before, бо звичайні правила allow не можуть виразити номер протоколу. Потім перезавантажте міжмережевий екран замість перезапуску машини.
# /etc/ufw/before.rules, inside *filter
-A ufw-before-input -p gre -j ACCEPT
sudo ufw allow 1723/tcp
sudo modprobe nf_conntrack_pptp
sudo conntrack -L | grep greL2TP і IPsec за двома NAT
L2TP всередині IPsec потребує UDP 500 для обміну ключами, UDP 4500 після виявлення NAT і ESP як протокол 50. Кожен із них фільтрується незалежно, тому правило, що дозволяє один, нічого не доводить про два інші. Два маршрутизатори послідовно перекладають кожен пакет двічі, і кінці більше не сходяться в тому, що було узгоджено.
Переведіть зовнішній модем у режим мосту або вимкніть NAT на внутрішньому маршрутизаторі, щоб публічна адреса доходила до пристрою, який завершує тунель. Там, де неможливе ні те, ні інше, тунель треба ініціювати зсередини межі подвійного NAT, а не завершувати там.
Мережі операторів і спільне використання адрес
WAN-адреса в межах 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16 або 100.64.0.0/10 означає, що маршрутизатор не має публічної адреси і жодна вхідна переадресація з інтернету до нього не дійде. NAT операторського рівня додатково фільтрує протоколи, яких не очікує, а GRE часто страждає на мобільних каналах. Порівнюйте WAN-адресу на самому маршрутизаторі, а не ту, яку сайт перевірки повідомляє для клієнта за ним.
Запуск того самого маршрутизатора на дротовій лінії одним тестом відділяє висновок про оператора від помилки конфігурації. Там, де оператор відмовляє протоколу, залишаються варіанти іншого транспорту на 443 або тунелю, ініційованого зсередини.
Прочитайте список слухачів, перш ніж закривати порти
Тривожне сканування портів часто є лише набором функцій, що постачається увімкненим. Проведіть інвентаризацію слухачів, зіставте кожен сокет із функцією, а потім вимкніть функцію замість блокування порту, щоб два подання не розійшлися.
ss -lntup
systemctl list-units --type=service --state=running | grep -i vpn
nc -vz 203.0.113.10 1723
nc -vzu 203.0.113.10 4500Типові значення SoftEther — добрий приклад: TCP 443, 992 і 5555, причому функції L2TP/IPsec і DNS-тунелю додають власні сокети. Вимкнення цих функцій прибирає слухачів, а не ховає їх, і перевірка із зовнішнього хоста каже, чи пропускає оператор порт узагалі. Слухач, що відповідає локально, все одно може бути закритий вище за потоком, тому порівнюйте власну WAN-адресу маршрутизатора з тим, що повідомляє зовнішня служба.