Иногда хочется надёжного VPN-сервера «здесь и сейчас»: без покупки лишнего железа, без плясок с пакетным менеджером, — прямо на привычной Windows-машине. OpenVPN остаётся золотым стандартом — открытый исходный код, сотни аудитов , поддержка почти любой ОС и, что особенно приятно, абсолютно бесплатная лицензия.
К тому же последняя стабильная ветка 2.6.x для Windows распространяется в виде обычного MSI-установщика и уже включает драйвер DCO, ускоряющий работу туннеля на уровне ядра.
Минимальные требования и подготовка
Нам понадобится:
- ПК или сервер под управлением Windows 10/11 Pro или Windows Server 2019/2022/2025;
- Локальная учётка с правами администратора;
- Доступ к порту
1194/UDP
на внешнем фаерволе (можно поменять, но именно этот порт «знают» многие клиенты); - Свободные 200 МБ на диске (реально меньше, но оставим запас под логи);
- Кружка кофе на случай «а где же опять галочка — я только что её здесь видел?».
Шаг 1. Загружаем и ставим OpenVPN 2.6
Идём на официальную страницу Community Downloads и скачиваем актуальный MSI (amd64 для 64-битной системы, arm64 для Surface Pro X и т. д.). Помимо самого сервера в пакет входят:
- OpenSSL 3, собранный специально под Windows;
- OpenVPN GUI (можно скрыть, если сервер будет работать как служба);
- Служба OpenVPNService, готовая стартовать с системным драйвером.
Запускаем установщик, жмём Next → I Agree → Install и ждём, пока появится заветная надпись Completed. Всё, серверный бинарник openvpn.exe
уже лежит в C:Program FilesOpenVPNbin
.
Шаг 2. Скачиваем EasyRSA 3.1 и разворачиваем собственный центр сертификации
Чтобы клиенты доверяли нашему серверу, нужен PKI: корневой сертификат CA, сертификат сервера и каждого клиента. Самый популярный способ — маленькая утилита EasyRSA 3, а с версии 3.1 она наконец поставляется в виде готового архива для Windows: берём EasyRSA-3.1.x-win64.zip
на GitHub, распаковываем, например, в C:EasyRSA
.
Инициализация PKI
Открываем PowerShell от имени администратора:
cd C:EasyRSA .easyrsa init-pki
Команда создаст папку pki
и пару полезных скриптов.
Создаём корневой сертификат (CA)
.easyrsa build-ca
Система предложит дважды ввести защищённый пароль и задать Common Name. Совет: используйте что-нибудь говорящeе, например Company-VPN-CA
. Если потеряете пароль, придётся пересоздавать всю инфраструктуру PKI — к вопросу о резервных копиях!
Генерируем ключи и сертификат сервера
.easyrsa build-server-full server01 nopass
Параметр nopass
убирает парольную защиту приватного ключа сервера, чтобы OpenVPN мог стартовать автоматически. Для особо параноидальных можно оставить пароль и использовать утилиту NSSM , но сегодня делаем быстро и сердито.
Генерируем сертификаты клиентов
.easyrsa build-client-full alice .easyrsa build-client-full bobКаждому клиенту — свой сертификат. Потом будет удобно отозвать «забывчивый» ноутбук, не трогая остальных.
Файл ta.key (HMAC)
Для дополнительной защиты от DoS запускаем:
openvpn --genkey --secret ta.keyФайл кладём в ту же папку
pki
.
Шаг 3. Создаём конфигурацию сервера
В C:Program FilesOpenVPNconfig
создаём файл server.ovpn
со следующим содержимым:
port 1194 proto udp dev tun server 10.8.0.0 255.255.255.0 push "redirect-gateway def1 bypass-dhcp" push "dhcp-option DNS 1.1.1.1" push "dhcp-option DNS 8.8.8.8" ca "C:EasyRSApkica.crt" cert "C:EasyRSApkiissuedserver01.crt" key "C:EasyRSApkiprivateserver01.key" dh "C:EasyRSApkidh.pem" tls-crypt "C:EasyRSAta.key" keepalive 10 120 cipher AES-256-GCM user nobody group nogroup persist-key persist-tun verb 3
Несколько моментов:
server 10.8.0.0 255.255.255.0
— виртуальная подсеть, где будут жить все VPN-клиенты;push "redirect-gateway ..."
— форсируем весь трафик через туннель; если нужно только «доступ к офису», уберите;tls-crypt
вместоtls-auth
— вшиваем HMAC прямо в TLS-рукопожатие, меньше утечек метаданных.
Шаг 4. Запускаем OpenVPN как службу
После установки у вас уже есть сервис OpenVPNServiceInteractive
. Он запускает отдельный процесс для каждой .ovpn
, что лежит в config-auto
. Поэтому:
mkdir "C:Program FilesOpenVPNconfig-auto" copy "C:Program FilesOpenVPNconfigserver.ovpn" ^ "C:Program FilesOpenVPNconfig-auto"
Теперь идём в Services → OpenVPN Service, ставим Startup type — Automatic и жмём Start. Сервер готов принимать подключения даже до входа пользователя.
Шаг 5. Открываем порт в брандмауэре Windows
PowerShell-однострочник спасёт от кликов:
New-NetFirewallRule -DisplayName "OpenVPN-UDP-1194" ` -Direction Inbound -Protocol UDP -LocalPort 1194 -Action Allow
Не забудьте проделать аналогичное на внешнем маршрутизаторе или облаке — иначе клиенты снаружи просто не увидят сервер.
Шаг 6. Создаём клиентские профили (.ovpn)
Самый удобный способ — файл «всё-в-одном». Достаточно упаковать сертификаты прямо внутрь:
client dev tun proto udp remote vpn.example.com 1194 resolv-retry infinite nobind persist-key persist-tun remote-cert-tls server cipher AES-256-GCM verb 3 # вставьте содержимое ca.crt # вставьте содержимое alice.crt # вставьте содержимое alice.key # вставьте содержимое ta.key
Эти .ovpn
-файлы без проблем открываются в OpenVPN Connect v3 для Windows, macOS, iOS, Android
и даже в systemd
-friendly NetworkManager на Linux. Для Windows-клиентов начиная с версии 3.2 доступен режим Service Daemon, запускающий туннель ещё до логина пользователя (актуально для киосков и серверных скриптов).
Шаг 7. Проверяем соединение
- С клиента запускаем «
ping 10.8.0.1
» (IP сервера внутри туннеля); - Если ответов нет — смотрим
C:Program FilesOpenVPNlogserver.log
; - Проверяем MTU: иногда помогает
mssfix 1400
в конфиге сервера; - Убедитесь, что forwarding включён:
Set-NetIPInterface -InterfaceAlias "Ethernet" -Forwarding Enabled
.
Частые ошибки и их быстрое решение
AUTH FAILED на клиенте? Убедитесь, что в server.ovpn
стоит remote-cert-tls client
(не server!).
TLS Error: TLS key negotiation failed? Сервер и клиент используют разные ta.key
или порт/протокол.
Ничего не грузится, но пинг работает? Проверьте правила NAT на интернет-шлюзе или активируйте на сервере netsh interface ip set interface "Ethernet" forwarding=enabled
.
Бонус: LDAP-авторизация и двухфакторка
Если сертификаты — это «слишком 2005 год», используйте OpenVPN Access Server . Он ставится поверх Community Edition, умеет связываться с Active Directory, RADIUS и даже раздавать TOTP-коды. Плата берётся только за клиентские подключения сверх 2, так что для домашнего офиса часто хватает и «бесплатного» тарифа.
Итоги
Всего за пару десятков команд и один MSI-установщик вы получили полноценный VPN-шлюз: шифрование AES-256-GCM, собственный CA, автостарт как служба и кроссплатформенных клиентов. Для продакшена осталось «довести до блеска»: настроить резервное копирование PKI, запретить слабые шифры, включить CRL и прописать политику least-privilege
для администраторов. А если что-то сломается — логи честно расскажут, кто проспал пароль.
Надеюсь, ваши пользователи будут счастливо кататься по туннелю, а вы — спокойно пить кофе, убеждённые, что весь трафик надёжно упакован и доставлен туда, куда нужно. Удачного деплоя!