Какие порты нужно открыть для работы VPN?

«Какие порты нужно открыть для работы VPN?» — вопрос из категории Сети, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Набор портов, которые необходимо открыть на фаерволе, зависит от используемого VPN-протокола. Вот основные из них:

Протокол Порт(ы) и Протокол Назначение
OpenVPN UDP 1194 (по умолчанию) Основной порт для данных. Можно использовать любой другой UDP/TCP порт.
WireGuard UDP 51820 (по умолчанию) Единственный порт для всего трафика. Порт настраиваемый.
IPsec/IKEv2 UDP 500 (IKE), UDP 4500 (NAT-Traversal), Протокол 50 (ESP) / 51 (AH) Фаза 1 (IKE), обход NAT, инкапсулированный трафик.
L2TP/IPsec UDP 500, UDP 4500, UDP 1701 Комбинация IPsec (для шифрования) и L2TP (для туннелирования).
SSTP TCP 443 Использует HTTPS, поэтому часто обходит ограничения.

Практический пример настройки правил iptables для OpenVPN:

# Разрешить входящие соединения на порт OpenVPN
sudo iptables -A INPUT -p udp --dport 1194 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
sudo iptables -A OUTPUT -p udp --sport 1194 -m conntrack --ctstate ESTABLISHED -j ACCEPT

# Включить форвардинг (IP forwarding) и маскарадинг для клиентов VPN
sudo sysctl -w net.ipv4.ip_forward=1
sudo iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

Важно: Необходимо также проверить и открыть эти порты на маршрутизаторе (если VPN-сервер находится за NAT) и в облачном провайдере (Security Groups в AWS, правила фаервола в GCP и т.д.).