English | 简体中文 | 繁體中文 | 日本語 | Русский
Разверните собственный сервер IPsec VPN всего за несколько минут с поддержкой IPsec/L2TP, Cisco IPsec и IKEv2.
IPsec VPN шифрует сетевой трафик, поэтому никто между вами и VPN-сервером не сможет перехватывать ваши данные во время их передачи через Интернет. Это особенно полезно при использовании незащищённых сетей, например в кофейнях, аэропортах или гостиничных номерах.
Мы будем использовать Libreswan в качестве сервера IPsec и xl2tpd в качестве поставщика L2TP.
Возможности:
- Полностью автоматическая настройка сервера IPsec VPN, ввод пользователя не требуется
- Поддержка IKEv2 с мощными и быстрыми шифрами (например, AES-GCM)
- Генерация профилей VPN для автоматической настройки устройств iOS, macOS и Android
- Поддержка Windows, macOS, iOS, Android, Chrome OS и Linux в качестве VPN-клиентов
- Включает вспомогательные скрипты для управления пользователями VPN и сертификатами
Также доступно:
- Docker VPN: WireGuard, OpenVPN, IPsec VPN, Headscale
- Docker ИИ/Аудио: Whisper (STT), Kokoro (TTS), Embeddings, LiteLLM, Ollama (LLM)
- 📖 Книга: Privacy Tools in the Age of AI, Build Your Own VPN Server
Сначала подготовьте ваш Linux-сервер* с установленной поддерживаемой ОС.
Используйте эту однострочную команду для настройки сервера IPsec VPN:
wget https://get.vpnsetup.net -O vpn.sh && sudo sh vpn.shДанные для входа в VPN будут сгенерированы случайным образом и показаны после завершения установки.
Посмотреть работу скрипта (запись терминала).
Примечание: Эта запись предназначена только для демонстрационных целей. Учетные данные VPN в этой записи НЕ являются действительными.
Нажмите здесь, если не удаётся скачать.
Вы также можете использовать curl для загрузки:
curl -fsSL https://get.vpnsetup.net -o vpn.sh && sudo sh vpn.shАльтернативные URL для установки:
https://github.com/hwdsl2/setup-ipsec-vpn/raw/master/vpnsetup.sh
https://gitlab.com/hwdsl2/setup-ipsec-vpn/-/raw/master/vpnsetup.shЕсли вы не можете скачать файл, откройте vpnsetup.sh, затем нажмите кнопку Raw справа. Нажмите Ctrl/Cmd+A, чтобы выделить всё, Ctrl/Cmd+C, чтобы скопировать, затем вставьте в ваш любимый редактор.
Также доступен готовый образ Docker для IPsec VPN. Для других вариантов и настройки клиентов прочитайте разделы ниже.
* Облачный сервер, виртуальный частный сервер (VPS) или выделенный сервер.
Облачный сервер, виртуальный частный сервер (VPS) или выделенный сервер с установленной системой:
- Ubuntu 26.04, 24.04 или 22.04
- Debian 13, 12 или 11
- CentOS Stream 10 или 9
- Rocky Linux или AlmaLinux
- Oracle Linux
- Amazon Linux 2
Другие поддерживаемые дистрибутивы Linux.
- Raspberry Pi OS (Raspbian)
- Kali Linux
- Alpine Linux
- Red Hat Enterprise Linux (RHEL)
Это также включает виртуальные машины Linux в публичных облаках, таких как DigitalOcean, Vultr, Linode, OVH и Microsoft Azure. Пользователи публичных облаков также могут выполнить развёртывание с помощью пользовательскими данными.
Быстрое развёртывание в:
» Я хочу запустить собственный VPN, но у меня нет сервера для этого
Для серверов с внешним файрволом (например, EC2/GCE) откройте UDP-порты 500 и 4500 для VPN.
Также доступен готовый образ Docker для IPsec VPN. Продвинутые пользователи могут установить его на Raspberry Pi. [1] [2]
Warning
НЕ запускайте эти скрипты на вашем ПК или Mac! Их следует использовать только на сервере!
Сначала обновите ваш сервер с помощью sudo apt-get update && sudo apt-get dist-upgrade (Ubuntu/Debian) или sudo yum update, затем перезагрузите систему. Это необязательно, но рекомендуется.
Чтобы установить VPN, выберите один из следующих вариантов:
Вариант 1: Позвольте скрипту сгенерировать случайные учетные данные VPN (они будут показаны после завершения).
wget https://get.vpnsetup.net -O vpn.sh && sudo sh vpn.shВариант 2: Отредактируйте скрипт и укажите собственные учетные данные VPN.
wget https://get.vpnsetup.net -O vpn.sh
nano -w vpn.sh
[Замените на собственные значения: YOUR_IPSEC_PSK, YOUR_USERNAME и YOUR_PASSWORD]
sudo sh vpn.shNote
Безопасный IPsec PSK должен состоять как минимум из 20 случайных символов.
Вариант 3: Определите учетные данные VPN как переменные окружения.
# Все значения ДОЛЖНЫ быть заключены в 'одинарные кавычки'
# НЕ используйте внутри значений следующие специальные символы: \ " '
wget https://get.vpnsetup.net -O vpn.sh
sudo VPN_IPSEC_PSK='your_ipsec_pre_shared_key' \
VPN_USER='your_vpn_username' \
VPN_PASSWORD='your_vpn_password' \
sh vpn.shTip
При желании вы можете установить WireGuard, OpenVPN и/или Headscale на том же сервере. Если ваш сервер работает на CentOS Stream, Rocky Linux или AlmaLinux, сначала установите OpenVPN/WireGuard, а затем установите IPsec VPN.
Нажмите здесь, если не удаётся скачать.
Вы также можете использовать curl для загрузки. Например:
curl -fL https://get.vpnsetup.net -o vpn.sh
sudo sh vpn.shАльтернативные URL для установки:
https://github.com/hwdsl2/setup-ipsec-vpn/raw/master/vpnsetup.sh
https://gitlab.com/hwdsl2/setup-ipsec-vpn/-/raw/master/vpnsetup.shЕсли вы не можете скачать файл, откройте vpnsetup.sh, затем нажмите кнопку Raw справа. Нажмите Ctrl/Cmd+A, чтобы выделить всё, Ctrl/Cmd+C, чтобы скопировать, затем вставьте в ваш любимый редактор.
Я хочу установить более старую версию Libreswan 4.
Обычно рекомендуется использовать последнюю версию Libreswan 5, которая является версией по умолчанию в этом проекте. Однако если вы хотите установить более старую версию Libreswan 4:
wget https://get.vpnsetup.net -O vpn.sh
sudo VPN_SWAN_VER=4.15 sh vpn.shПримечание: Если версия Libreswan 5 уже установлена, возможно, вам сначала потребуется удалить VPN, прежде чем устанавливать Libreswan версии 4. В качестве альтернативы можно скачать скрипт обновления, отредактировать его, указав SWAN_VER=4.15, затем запустить скрипт.
По умолчанию клиенты настроены использовать Google Public DNS при активном VPN. При установке VPN вы можете при желании указать собственные DNS-серверы для всех режимов VPN. Пример:
sudo VPN_DNS_SRV1=1.1.1.1 VPN_DNS_SRV2=1.0.0.1 sh vpn.shИспользуйте VPN_DNS_SRV1 для указания основного DNS-сервера и VPN_DNS_SRV2 для указания резервного DNS-сервера (необязательно).
Ниже приведён список некоторых популярных публичных DNS-провайдеров для справки.
| Провайдер | Основной DNS | Резервный DNS | Примечания |
|---|---|---|---|
| Google Public DNS | 8.8.8.8 | 8.8.4.4 | Используется по умолчанию в этом проекте |
| Cloudflare | 1.1.1.1 | 1.0.0.1 | См. также: Cloudflare for families |
| Quad9 | 9.9.9.9 | 149.112.112.112 | Блокирует вредоносные домены |
| OpenDNS | 208.67.222.222 | 208.67.220.220 | Блокирует фишинговые домены, настраиваемый |
| CleanBrowsing | 185.228.168.9 | 185.228.169.9 | Доступны фильтры доменов |
| NextDNS | Различается | Различается | Блокировка рекламы, доступен бесплатный тариф. Подробнее. |
| Control D | Различается | Различается | Блокировка рекламы, настраиваемый. Подробнее. |
Если вам нужно изменить DNS-серверы после настройки VPN, см. раздел Расширенное использование.
Note
Если IKEv2 уже настроен на сервере, переменные выше не влияют на режим IKEv2. В этом случае для настройки параметров IKEv2, таких как DNS-серверы, вы можете сначала удалить IKEv2, а затем снова настроить его с помощью sudo ikev2.sh.
При установке VPN продвинутые пользователи могут при желании настроить параметры IKEv2.
Вариант 1: Пропустить IKEv2 во время настройки VPN, затем настроить IKEv2 с пользовательскими параметрами.
При установке VPN вы можете пропустить IKEv2 и установить только режимы IPsec/L2TP и IPsec/XAuth («Cisco IPsec»):
sudo VPN_SKIP_IKEV2=yes sh vpn.sh(Необязательно) Если вы хотите указать пользовательские DNS-серверы для клиентов VPN, определите VPN_DNS_SRV1 и при необходимости VPN_DNS_SRV2. Подробности смотрите в разделе Использование альтернативных DNS-серверов.
После этого запустите вспомогательный скрипт IKEv2, чтобы настроить IKEv2 в интерактивном режиме с пользовательскими параметрами:
sudo ikev2.shВы можете настроить следующие параметры: DNS-имя VPN-сервера, имя и срок действия первого клиента, DNS-сервер для VPN-клиентов и необходимость защиты файлов конфигурации клиента паролем.
Примечание: Переменная VPN_SKIP_IKEV2 не действует, если IKEv2 уже настроен на сервере. В этом случае для настройки параметров IKEv2 вы можете сначала удалить IKEv2, а затем снова настроить его с помощью sudo ikev2.sh.
Вариант 2: Настройка параметров IKEv2 с помощью переменных окружения.
При установке VPN вы можете при желании указать DNS-имя для адреса сервера IKEv2. DNS-имя должно быть полным доменным именем (FQDN). Пример:
sudo VPN_DNS_NAME='vpn.example.com' sh vpn.shАналогично вы можете указать имя для первого клиента IKEv2. По умолчанию используется vpnclient, если имя не указано.
sudo VPN_CLIENT_NAME='your_client_name' sh vpn.shПо умолчанию клиенты используют Google Public DNS при активном VPN. Вы можете указать собственные DNS-серверы для всех режимов VPN. Пример:
sudo VPN_DNS_SRV1=1.1.1.1 VPN_DNS_SRV2=1.0.0.1 sh vpn.shПо умолчанию пароль не требуется при импорте конфигурации клиента IKEv2. Вы можете защитить файлы конфигурации клиента случайным паролем.
sudo VPN_PROTECT_CONFIG=yes sh vpn.shДля справки: список параметров IKEv1 и IKEv2.
| Параметр IKEv1* | Значение по умолчанию | Настройка (переменная окружения)** |
|---|---|---|
| Адрес сервера (DNS-имя) | - | Нет, но можно подключаться по DNS-имени |
| Адрес сервера (публичный IP) | Автоопределение | VPN_PUBLIC_IP |
| Предварительно общий ключ IPsec | Автоматическая генерация | VPN_IPSEC_PSK |
| Имя пользователя VPN | vpnuser | VPN_USER |
| Пароль VPN | Автоматическая генерация | VPN_PASSWORD |
| DNS-серверы для клиентов | Google Public DNS | VPN_DNS_SRV1, VPN_DNS_SRV2 |
| Пропустить настройку IKEv2 | no | VPN_SKIP_IKEV2=yes |
* Эти параметры IKEv1 используются для режимов IPsec/L2TP и IPsec/XAuth («Cisco IPsec»).
** Определяются как переменные окружения при запуске vpn(setup).sh.
| Параметр IKEv2* | Значение по умолчанию | Настройка (переменная окружения)** | Настройка (интерактивно)*** |
|---|---|---|---|
| Адрес сервера (DNS-имя) | - | VPN_DNS_NAME | ✅ |
| Адрес сервера (публичный IP) | Автоопределение | VPN_PUBLIC_IP | ✅ |
| Имя первого клиента | vpnclient | VPN_CLIENT_NAME | ✅ |
| DNS-серверы для клиентов | Google Public DNS | VPN_DNS_SRV1, VPN_DNS_SRV2 | ✅ |
| Защита файлов конфигурации клиента | no | VPN_PROTECT_CONFIG=yes | ✅ |
| Включить/отключить MOBIKE | Включено, если поддерживается | ❌ | ✅ |
| Срок действия сертификата клиента | 10 лет (120 месяцев) | VPN_CLIENT_VALIDITY**** | ✅ |
| Срок действия сертификатов CA и сервера | 10 лет (120 месяцев) | ❌ | ❌ |
| Имя сертификата CA | IKEv2 VPN CA | ❌ | ❌ |
| Размер ключа сертификата | 3072 бита | ❌ | ❌ |
* Эти параметры IKEv2 используются для режима IKEv2.
** Определяются как переменные окружения при запуске vpn(setup).sh или при автоматической настройке IKEv2 (sudo ikev2.sh --auto).
*** Можно настроить во время интерактивной настройки IKEv2 (sudo ikev2.sh). См. вариант 1 выше.
**** Используйте VPN_CLIENT_VALIDITY, чтобы указать срок действия сертификата клиента в месяцах. Значение должно быть целым числом от 1 до 120.
Помимо этих параметров, продвинутые пользователи также могут настроить подсети VPN во время настройки VPN.
Прочитать на других языках: English, 简体中文, 繁體中文, 日本語, Русский.
Настройте ваш компьютер или устройство для использования VPN. Пожалуйста, обратитесь к следующим инструкциям (на английском языке):
Настройка клиентов IKEv2 VPN (рекомендуется)
Настройка клиентов IPsec/L2TP VPN
Настройка клиентов IPsec/XAuth («Cisco IPsec»)
Прочитайте 📖 книгу о VPN, чтобы получить доступ к дополнительному контенту.
Наслаждайтесь собственным VPN! ✨🎉🚀✨
Пользователи Windows: для режима IPsec/L2TP требуется одноразовое изменение реестра, если VPN-сервер или клиент находится за NAT (например, домашним роутером).
Одна и та же учетная запись VPN может использоваться на нескольких ваших устройствах. Однако из-за ограничения IPsec/L2TP, если вы хотите подключить несколько устройств из-за одного NAT (например, домашнего роутера), необходимо использовать режим IKEv2 или IPsec/XAuth. Чтобы просмотреть или изменить учетные записи пользователей VPN, см. Управление пользователями VPN.
Для серверов с внешним файрволом (например, EC2/GCE) откройте UDP-порты 500 и 4500 для VPN. Пользователям Aliyun см. #433.
Клиенты настроены использовать Google Public DNS при активном VPN. Если вы предпочитаете другого DNS-провайдера, см. Расширенное использование.
Использование поддержки ядра может повысить производительность IPsec/L2TP. Она доступна на всех поддерживаемых ОС. Пользователям Ubuntu следует установить пакет linux-modules-extra-$(uname -r) и выполнить service xl2tpd restart.
Скрипты создадут резервные копии существующих файлов конфигурации перед внесением изменений, с суффиксом .old-date-time.
Используйте эту однострочную команду для обновления Libreswan (список изменений | объявления) на вашем VPN-сервере.
wget https://get.vpnsetup.net/upg -O vpnup.sh && sudo sh vpnup.shНажмите здесь, если не удаётся скачать.
Вы также можете использовать curl для загрузки:
curl -fsSL https://get.vpnsetup.net/upg -o vpnup.sh && sudo sh vpnup.shАльтернативные URL для обновления:
https://github.com/hwdsl2/setup-ipsec-vpn/raw/master/extras/vpnupgrade.sh
https://gitlab.com/hwdsl2/setup-ipsec-vpn/-/raw/master/extras/vpnupgrade.shЕсли вы не можете скачать файл, откройте vpnupgrade.sh, затем нажмите кнопку Raw справа. Нажмите Ctrl/Cmd+A, чтобы выделить всё, Ctrl/Cmd+C, чтобы скопировать, затем вставьте в ваш любимый редактор.
Последняя поддерживаемая версия Libreswan — 5.3. Проверить установленную версию: ipsec --version.
Примечание: xl2tpd можно обновить с помощью менеджера пакетов вашей системы, например apt-get в Ubuntu/Debian.
См. Управление пользователями VPN (на английском языке).
- Управление пользователями VPN с помощью вспомогательных скриптов
- Просмотр пользователей VPN
- Просмотр или обновление IPsec PSK
- Ручное управление пользователями VPN
См. Расширенное использование (на английском языке).
- Использование альтернативных DNS-серверов
- Изменения DNS-имени и IP-адреса сервера
- VPN только с IKEv2
- Включить совершенную прямую секретность IKEv2
- Внутренние IP-адреса VPN и трафик
- Указание публичного IP-адреса VPN-сервера
- Настройка подсетей VPN
- Поддержка IPv6
- Переадресация портов клиентам VPN
- Раздельная маршрутизация (Split tunneling)
- Доступ к подсети VPN-сервера
- Доступ к клиентам VPN из подсети сервера
- Изменение правил IPTables
- Развёртывание алгоритма управления перегрузкой Google BBR
Чтобы удалить IPsec VPN, запустите вспомогательный скрипт:
Caution
Этот вспомогательный скрипт удалит IPsec VPN с вашего сервера. Вся конфигурация VPN будет безвозвратно удалена, а Libreswan и xl2tpd будут удалены. Это нельзя отменить!
wget https://get.vpnsetup.net/unst -O unst.sh && sudo bash unst.shНажмите здесь, если не удаётся скачать.
Вы также можете использовать curl для загрузки:
curl -fsSL https://get.vpnsetup.net/unst -o unst.sh && sudo bash unst.shАльтернативные URL скрипта:
https://github.com/hwdsl2/setup-ipsec-vpn/raw/master/extras/vpnuninstall.sh
https://gitlab.com/hwdsl2/setup-ipsec-vpn/-/raw/master/extras/vpnuninstall.shДля получения дополнительной информации см. Удаление VPN.
- Есть предложение по улучшению этого проекта? Создайте Предложить улучшение. Pull request также приветствуются.
- Если вы нашли воспроизводимую ошибку, создайте отчёт об ошибке для IPsec VPN или для скрипты VPN.
- Есть вопрос? Пожалуйста, сначала выполните поиск по существующим issues и комментариям в этом Gist и в моём блоге.
- Задавайте вопросы, связанные с VPN, в списках рассылки Libreswan или strongSwan, либо прочитайте эти вики: [1] [2] [3] [4] [5].
Copyright (C) 2014-2026 Lin Song
Основано на работе Thomas Sarlandie (Copyright 2012)
Эта работа распространяется по лицензии Creative Commons Attribution-ShareAlike 3.0 Unported License
Требуется указание авторства: пожалуйста, указывайте моё имя в любых производных работах и сообщайте мне, как вы её улучшили!




