Які порти VPN відкривати в міжмережевому екрані: протокол за протоколом
PPTP потребує TCP 1723 і GRE, L2TP/IPsec потребує UDP 500 і 4500 та ESP, а SSTP, OpenVPN і WireGuard потребують по одному порту. Ось що треба відкрити.
Два окремі правила вирішують, чи пройде VPN-тунель крізь міжмережевий екран: порт, на який телефонує клієнт, і протокол, який несе корисне навантаження. Відкрийте лише перше, і тунель пройде автентифікацію, але далі дані не підуть. Мінімум — один порт TCP і GRE для PPTP, два порти UDP і ESP для L2TP/IPsec та IKEv2, і один порт для SSTP, OpenVPN і WireGuard. Напрямок, відстеження стану та NAT вирішують решту.
Почніть із порту, на який телефонує клієнт
Кожна родина має точку входу, до якої клієнт звертається першою, і саме цю точку входу має назвати ваше правило дозволу. Клієнти PPTP підключаються до TCP 1723. L2TP/IPsec починає IKE на UDP 500 і переходить на UDP 4500, коли використовується обхід NAT, а сам кадр L2TP розташований на UDP 1701 усередині тунелю. SSTP загортає сеанс у TLS на TCP 443, IKEv2 узгоджує на UDP 500 і 4500, OpenVPN типово використовує UDP 1194, але часто переноситься на TCP 443, а WireGuard слухає на UDP 51820.
| Family | Rule to add on the gateway | Typical mistake |
|---|---|---|
| WireGuard | UDP port from ListenPort, for the peer address | Assuming 51820 when the config says otherwise |
| OpenVPN | The configured UDP or TCP port, often 443 | Opening 1194 after the server moved |
| SSTP | TCP 443 limited to the gateway IP | Allowing 443 to any destination |
| IKEv2 | UDP 500 and UDP 4500, plus ESP | Allowing only 500 and losing NAT-T |
| L2TP/IPsec | UDP 500, 4500, ESP, and 1701 inside the tunnel | Exposing 1701 to the internet |
| PPTP | TCP 1723 and IP protocol 47 | Writing a rule for TCP 47 |
Вважайте ці числа типовими значеннями, а не незмінними властивостями. Інтерфейс WireGuard використовує будь-який порт прослуховування, який оголошує його конфігурація, а сервер OpenVPN може стояти на будь-якому порту, який вибрав адміністратор. Прочитайте конфігурацію сервера, перш ніж писати правило, бо екран, відкритий для 1194, нічого не дає серверу, перенесеному на 443.
Третій стовпець — це місце, де більшість заявок на зміну йдуть не так. Правило існує, але вказує на неправильне призначення, неправильний напрямок або неправильний транспорт.
GRE і ESP — це номери протоколів, а не порти
У GRE і ESP взагалі немає портів, тому форма екрана, яка приймає лише номери портів, не може їх виразити. GRE — це протокол IP 47, а ESP — протокол IP 50, обидва зіставляються за полем протоколу в заголовку IP. Правило, записане як порт TCP 47, ні з чим не збігається, і саме так політика PPTP виглядає правильною і все одно відкидає кожен пакет після рукостискання.
Домашні маршрутизатори ховають це за прапорцем пропускання, який встановлює правило протоколу і, для GRE, помічник NAT, потрібний для зіставлення потоку. На справжньому екрані протокол додаєте ви самі: дозвольте протокол IP 47 до сервера PPTP, дозвольте протокол IP 50 до шлюзу IPsec. Там, де платформа не пропонує поля протоколу, вихід — інкапсуляція, тому IKEv2 може відкотитися на UDP 4500 і тому OpenVPN і WireGuard ніколи не стикаються з цією проблемою.
Перевірте, чому правило насправді відповідає, перш ніж звинувачувати клієнта. Лічильник пакетів, який на шлюзі залишається нульовим, каже, що правило жодного разу не спрацювало, і жодне перевстановлення на боці клієнта цього не змінить.
Напрямок, стан і NAT змінюють відповідь
Клієнт, що телефонує назовні, і шлюз, що слухає всередину, — це різні вимоги, і той самий список портів може бути правильним в одному напрямку й неправильним в іншому. Екран з відстеженням стану стежить за потоком UDP на 500 і 4500 і пропускає відповіді назад без другого правила. ESP і GRE не несуть портів, тому пристрою NAT нема за що зачепитися, і йому потрібен помічник або інкапсуляція, щоб стежити за сеансом.
Обхід NAT — це та частина, яку пропускають. IKEv2 починається на UDP 500, виявляє пристрій NAT і продовжується на UDP 4500, тому політика, що дозволяє лише 500, дає тунель, який встановлюється і потім замовкає. L2TP/IPsec робить той самий рух. Якщо ваш запис показує перший обмін, але не постійний трафік, шукайте правило, яке зупиняється на 500.
Записуйте напрямок із кожним правилом. «Дозволити UDP 4500» нічого не означає, доки ви не скажете звідки й куди, а правило, правильне для клієнта в русі, зазвичай неправильне для партнера «майданчик — майданчик».
Перевірте кожен шлях записом
Запускайте запис на шлюзі, а не на клієнті: клієнт фіксує лише те, що надійшло. Ці фільтри охоплюють перелічені родини й показують, якого етапу бракує:
sudo tcpdump -ni any tcp port 1723
sudo tcpdump -ni any udp port 500 or udp port 4500
sudo tcpdump -ni any proto gre
sudo tcpdump -ni any proto 50
Читайте вивід як послідовність. Коли узгодження з'являється, а протоколу корисного навантаження немає, відкидання відбувається десь між клієнтом і шлюзом. Коли з'являються обидва, а сторінка все одно не відкривається, екран уже не підозрюваний; дивіться на маршрутизацію, DNS або пул адрес, виданий клієнту.
На машині без tcpdump ті самі докази дають лічильники інтерфейсу та правил. Байти входять, але не виходять на інтерфейсі тунелю — це вказує на зворотний шлях, а не на початкове правило дозволу.
Залиште набір правил, який зможете захистити
SSTP на TCP 443 не відрізнити від звичайного HTTPS для будь-якого фільтра за портами, і в цьому сенс, коли мережа дозволяє лише веб-трафік. Тому правило для 443 має називати шлюз призначенням, а не весь інтернет. Видаляйте тимчасові правила «будь-що куди завгодно», щойно тунель запрацює. Запишіть, яке правило збіглося, номер протоколу там, де він є, і напрямок, щоб наступна людина почала з доказів.
Хмарні шлюзи «точка — майданчик» роблять вибір видимим: завантажений профіль використовує або SSTP на 443, або IKEv2 на 500 і 4500, і відкривати треба лише те, що профіль справді вибирає. PPTP не вартий винятку для GRE в сучасній мережі, бо мобільні оператори часто відкидають протокол 47 незалежно від вашого екрана. Перш ніж закрити заявку, підтвердьте, що правило збігається з портом у конфігурації сервера, що поле протоколу встановлене там, де воно потрібне родині, і що призначення — шлюз, а не будь-яка адреса.