Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
Инструменты/GitLabGitLab/hwdsl2/docker-ipsec-vpn-server
Инструменты шифрования/дешифрованияСетевая безопасность
GitLabhwdsl2/docker-ipsec-vpn-server

Docker IPsec VPN Server

VPN-сервер IPsec на основе Docker, поддерживающий IPsec/L2TP, Cisco IPsec и IKEv2, с автоматической генерацией учётных данных и настройкой клиентов для нескольких платформ.

Репозиторий

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться
5 дней назадЕщё не проверено

English | 简体中文 | 繁體中文 | Русский

IPsec VPN сервер на Docker

Build Status GitHub Stars Docker Stars Docker Pulls

Docker-образ для запуска сервера IPsec VPN с поддержкой IPsec/L2TP, Cisco IPsec и IKEv2.

Основан на Alpine 3.23 или Debian 12 с использованием Libreswan (программное обеспечение IPsec VPN) и xl2tpd (демон L2TP).

IPsec VPN шифрует сетевой трафик, поэтому никто между вами и VPN-сервером не сможет перехватывать ваши данные во время их передачи через Интернет. Это особенно полезно при использовании незащищённых сетей, например в кофейнях, аэропортах или гостиничных номерах.

Возможности:

  • Автоматическая генерация учётных данных VPN и конфигурации IKEv2 при первом запуске
  • Поддержка IKEv2 с мощными и быстрыми шифрами (например, AES-GCM)
  • Генерация VPN-профилей для автоматической настройки устройств iOS, macOS и Android
  • Поддержка Windows, macOS, iOS, Android, Chrome OS и Linux в качестве VPN-клиентов
  • Включает вспомогательный скрипт для управления пользователями и сертификатами IKEv2
  • Автоматически собирается и публикуется через GitHub Actions
  • Постоянное хранение данных через Docker volume
  • Поддержка нескольких архитектур: linux/amd64, linux/arm64, linux/arm/v7

Также доступно:

  • VPN: IPsec без Docker, WireGuard, OpenVPN, Headscale
  • AI: Стек ИИ на своём сервере для локальных LLM, чата, RAG, голосовых функций и инструментов ИИ
  • Книги: Privacy Tools in the Age of AI, Build Your Own VPN Server

Быстрый старт

Используйте эту команду для настройки сервера IPsec VPN в Docker:

root@kitploit:~
docker run \
    --name ipsec-vpn-server \
    --restart=always \
    -v ikev2-vpn-data:/etc/ipsec.d \
    -v /lib/modules:/lib/modules:ro \
    -p 500:500/udp \
    -p 4500:4500/udp \
    -d --privileged \
    hwdsl2/ipsec-vpn-server

Данные для входа в VPN будут сгенерированы случайным образом. См. раздел Получение данных для входа в VPN.

В качестве альтернативы вы можете настроить IPsec VPN без Docker. Чтобы узнать больше о том, как использовать этот образ, прочитайте разделы ниже.

Сообщество

  • 📬 Подписаться на обновления проектов (1–2 письма в месяц) — получить бесплатные руководства по развёртыванию VPN и AI (PDF, на английском)
  • 💬 Присоединяйтесь к сообществу r/selfhostedstack для обсуждений и демонстрации проектов
  • ⭐ Поставьте звезду репозиторию, если он оказался вам полезен — это поможет другим пользователям его найти.

Требования

  • Linux-сервер с публичным IP-адресом или DNS-именем
  • Установленный Docker
  • Открытые VPN-порты в брандмауэре (UDP 500 и 4500)
  • Вы также можете использовать Podman для запуска этого образа после создания псевдонима для docker

Примечание: Продвинутые пользователи могут использовать этот образ на macOS с помощью Docker for Mac. Перед использованием режима IPsec/L2TP может потребоваться один раз перезапустить контейнер с помощью docker restart ipsec-vpn-server. Этот образ не поддерживает Docker for Windows.

Загрузка

Получите доверенную сборку из реестра Docker Hub:

root@kitploit:~
docker pull hwdsl2/ipsec-vpn-server

В качестве альтернативы можно скачать из Quay.io:

root@kitploit:~
docker pull quay.io/hwdsl2/ipsec-vpn-server
docker image tag quay.io/hwdsl2/ipsec-vpn-server hwdsl2/ipsec-vpn-server

Поддерживаемые платформы: linux/amd64, linux/arm64 и linux/arm/v7.

Продвинутые пользователи могут собрать образ из исходного кода на GitHub.

Сравнение образов

Доступны два предварительно собранных образа. Образ на базе Alpine используется по умолчанию и имеет размер всего около ~19 MB.

Примечание: Чтобы использовать образ на базе Debian, замените каждое hwdsl2/ipsec-vpn-server на hwdsl2/ipsec-vpn-server:debian в этом README. В настоящее время эти образы несовместимы с системами Synology NAS.

Я хочу использовать более старую версию Libreswan 4.

Обычно рекомендуется использовать последнюю версию Libreswan 5, которая является версией по умолчанию в этом проекте. Однако если вы хотите использовать более старую версию Libreswan 4, вы можете собрать Docker-образ из исходного кода:

root@kitploit:~
git clone https://github.com/hwdsl2/docker-ipsec-vpn-server
cd docker-ipsec-vpn-server
# Указать версию Libreswan 4
sed -i 's/SWAN_VER=5\..*/SWAN_VER=4.15/' Dockerfile Dockerfile.debian
# Сборка образа на базе Alpine
docker build -t hwdsl2/ipsec-vpn-server .
# Сборка образа на базе Debian
docker build -f Dockerfile.debian -t hwdsl2/ipsec-vpn-server:debian .

Как использовать этот образ

Переменные окружения

Примечание: Все переменные для этого образа являются необязательными, что означает, что вам не нужно указывать ни одну переменную — и вы сможете получить работающий сервер IPsec VPN «из коробки»! Для этого создайте пустой файл env с помощью touch vpn.env, а затем перейдите к следующему разделу.

Этот Docker-образ использует следующие переменные, которые можно объявить в файле env (см. пример):

root@kitploit:~
VPN_IPSEC_PSK=your_ipsec_pre_shared_key
VPN_USER=your_vpn_username
VPN_PASSWORD=your_vpn_password

Это создаст учетную запись пользователя для входа в VPN, которую можно использовать на нескольких ваших устройствах*. IPsec PSK (предварительно общий ключ) задаётся переменной окружения VPN_IPSEC_PSK. Имя пользователя VPN задаётся в VPN_USER, а пароль VPN указывается в VPN_PASSWORD.

Поддерживаются дополнительные пользователи VPN, и их можно при желании объявить в вашем файле env следующим образом. Имена пользователей и пароли должны быть разделены пробелами, а имена пользователей не могут повторяться. Все пользователи VPN будут использовать один и тот же IPsec PSK.

root@kitploit:~
VPN_ADDL_USERS=additional_username_1 additional_username_2
VPN_ADDL_PASSWORDS=additional_password_1 additional_password_2

Переменные выше используются только для режимов IPsec/L2TP и IPsec/XAuth («Cisco IPsec»). Для IKEv2 см. Настройка и использование IKEv2 VPN.

Примечание: В файле env НЕ помещайте "" или '' вокруг значений и не добавляйте пробелы вокруг =. НЕ используйте внутри значений следующие специальные символы: \ " '. Надёжный IPsec PSK должен состоять как минимум из 20 случайных символов.

Примечание: Если вы измените файл env после того, как Docker-контейнер уже создан, необходимо удалить и создать контейнер заново, чтобы изменения вступили в силу. См. раздел Обновление Docker-образа.

Дополнительные переменные окружения

Продвинутые пользователи могут при желании указать DNS-имя, имя клиента и/или собственные DNS-серверы.

Узнайте, как указать DNS-имя, имя клиента и/или собственные DNS-серверы.

Продвинутые пользователи могут при желании указать DNS-имя для адреса сервера IKEv2. DNS-имя должно быть полным доменным именем (FQDN). Пример:

root@kitploit:~
VPN_DNS_NAME=vpn.example.com

Вы можете указать имя для первого клиента IKEv2. Используйте только одно слово, без специальных символов, кроме - и _. По умолчанию используется vpnclient, если имя не указано.

root@kitploit:~
VPN_CLIENT_NAME=your_client_name

По умолчанию клиенты используют Google Public DNS при активном VPN. Вы можете указать собственные DNS-серверы для всех режимов VPN. Пример:

root@kitploit:~
VPN_DNS_SRV1=1.1.1.1
VPN_DNS_SRV2=1.0.0.1

Для получения дополнительных сведений и списка популярных публичных DNS-провайдеров см. Использование альтернативных DNS-серверов.

По умолчанию пароль не требуется при импорте конфигурации клиента IKEv2. Вы можете защитить файлы конфигурации клиента случайным паролем.

root@kitploit:~
VPN_PROTECT_CONFIG=yes

Примечание: Переменные выше не влияют на режим IKEv2, если IKEv2 уже настроен в Docker-контейнере. В этом случае вы можете удалить IKEv2 и настроить его снова с пользовательскими параметрами. См. Настройка и использование IKEv2 VPN.

Запуск сервера IPsec VPN

Создайте новый Docker-контейнер из этого образа (замените ./vpn.env на ваш собственный файл env):

root@kitploit:~
docker run \
    --name ipsec-vpn-server \
    --env-file ./vpn.env \
    --restart=always \
    -v ikev2-vpn-data:/etc/ipsec.d \
    -v /lib/modules:/lib/modules:ro \
    -p 500:500/udp \
    -p 4500:4500/udp \
    -d --privileged \
    hwdsl2/ipsec-vpn-server

В этой команде используется параметр -v команды docker run, чтобы создать новый Docker volume с именем ikev2-vpn-data и смонтировать его в /etc/ipsec.d внутри контейнера. Данные, связанные с IKEv2 (такие как сертификаты и ключи), будут сохраняться в этом томе. Позже, если вам потребуется заново создать Docker-контейнер, просто укажите тот же том снова.

Рекомендуется включить IKEv2 при использовании этого образа. Однако если вы предпочитаете не использовать IKEv2 и подключаться к VPN только через режимы IPsec/L2TP и IPsec/XAuth («Cisco IPsec»), удалите первый параметр -v из команды docker run, приведённой выше.

Примечание: Продвинутые пользователи также могут запускать контейнер без привилегированного режима.

Получение данных для входа в VPN

Если вы не указали файл env в команде docker run выше, значение VPN_USER по умолчанию будет vpnuser, а VPN_IPSEC_PSK и VPN_PASSWORD будут сгенерированы случайным образом. Чтобы получить их, просмотрите журналы контейнера:

root@kitploit:~
docker logs ipsec-vpn-server

Найдите в выводе следующие строки:

root@kitploit:~
Connect to your new VPN with these details:

Server IP: your_vpn_server_ip
IPsec PSK: your_ipsec_pre_shared_key
Username: your_vpn_username
Password: your_vpn_password

Вывод также будет содержать сведения для режима IKEv2, если он включён.

(Необязательно) Сохраните сгенерированные данные для входа в VPN (если они есть) в текущий каталог:

root@kitploit:~
docker cp ipsec-vpn-server:/etc/ipsec.d/vpn-gen.env ./

Использование docker-compose

root@kitploit:~
cp vpn.env.example vpn.env
# При необходимости отредактируйте vpn.env, затем:
docker compose up -d
docker logs ipsec-vpn-server

Пример docker-compose.yml (уже включён):

root@kitploit:~
volumes:
  ikev2-vpn-data:

services:
  vpn:
    image: hwdsl2/ipsec-vpn-server
    restart: always
    env_file:
      - ./vpn.env
    ports:
      - "500:500/udp"
      - "4500:4500/udp"
    privileged: true
    hostname: ipsec-vpn-server
    container_name: ipsec-vpn-server
    volumes:
      - ikev2-vpn-data:/etc/ipsec.d
      - /lib/modules:/lib/modules:ro

Следующие шаги

Прочитать на других языках: 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, сначала обновите файл env, затем удалите и заново создайте Docker-контейнер, следуя инструкциям из следующего раздела. Продвинутые пользователи могут использовать bind mount для файла env.

Для серверов с внешним файрволом (например, EC2/GCE) откройте UDP-порты 500 и 4500 для VPN. Пользователям Aliyun см. #433.

Клиенты настроены использовать Google Public DNS при активном VPN. Если вы предпочитаете другого DNS-провайдера, прочитайте этот раздел.

Обновление Docker-образа

Чтобы обновить Docker-образ и контейнер, сначала загрузите последнюю версию:

root@kitploit:~
docker pull hwdsl2/ipsec-vpn-server

Если Docker-образ уже обновлён, вы увидите:

root@kitploit:~
Status: Image is up to date for hwdsl2/ipsec-vpn-server:latest

В противном случае будет загружена последняя версия. Чтобы обновить Docker-контейнер, сначала запишите все ваши данные для входа в VPN. Затем удалите контейнер Docker с помощью docker rm -f ipsec-vpn-server. После этого создайте его заново, следуя инструкциям из раздела Как использовать этот образ.

Настройка и использование IKEv2 VPN

Режим IKEv2 имеет преимущества по сравнению с IPsec/L2TP и IPsec/XAuth («Cisco IPsec») и не требует IPsec PSK, имени пользователя или пароля. Подробнее можно прочитать здесь.

Сначала проверьте журналы контейнера, чтобы увидеть сведения о IKEv2:

root@kitploit:~
docker logs ipsec-vpn-server

Примечание: Если вы не можете найти сведения о IKEv2, возможно, IKEv2 не включён в контейнере. Попробуйте обновить Docker-образ и контейнер, следуя инструкциям из раздела Обновление Docker-образа.

Во время настройки IKEv2 создаётся клиент IKEv2 (с именем по умолчанию vpnclient), а его конфигурация экспортируется в /etc/ipsec.d внутри контейнера. Чтобы скопировать файл(ы) конфигурации на Docker-хост:

root@kitploit:~
# Проверить содержимое /etc/ipsec.d в контейнере
docker exec -it ipsec-vpn-server ls -l /etc/ipsec.d
# Пример: копирование файла конфигурации клиента из контейнера
# в текущий каталог на Docker-хосте
docker cp ipsec-vpn-server:/etc/ipsec.d/vpnclient.p12 ./

Следующие шаги: Настройте ваши устройства для использования IKEv2 VPN.

Узнайте, как управлять клиентами IKEv2.

Вы можете управлять клиентами IKEv2 с помощью вспомогательного скрипта. Ниже приведены примеры. Чтобы настроить параметры клиента, запустите скрипт без аргументов.

root@kitploit:~
# Добавить нового клиента (с параметрами по умолчанию)
docker exec -it ipsec-vpn-server ikev2.sh --addclient [имя клиента]
# Экспортировать конфигурацию для существующего клиента
docker exec -it ipsec-vpn-server ikev2.sh --exportclient [имя клиента]
# Показать список существующих клиентов
docker exec -it ipsec-vpn-server ikev2.sh --listclients
# Показать справку
docker exec -it ipsec-vpn-server ikev2.sh -h

Примечание: Если возникает ошибка «executable file not found», замените ikev2.sh выше на /opt/src/ikev2.sh.

Узнайте, как изменить адрес сервера IKEv2.

В некоторых случаях может потребоваться изменить адрес сервера IKEv2. Например, чтобы перейти на использование DNS-имени или после изменения IP-адреса сервера. Чтобы изменить адрес сервера IKEv2, сначала откройте bash-оболочку внутри контейнера, затем следуйте этим инструкциям. Обратите внимание, что журналы контейнера не будут показывать новый адрес сервера IKEv2, пока вы не перезапустите Docker-контейнер.

Удаление IKEv2 и повторная настройка с пользовательскими параметрами.

В некоторых случаях может потребоваться удалить IKEv2 и настроить его заново с пользовательскими параметрами.

Предупреждение: Вся конфигурация IKEv2, включая сертификаты и ключи, будет безвозвратно удалена. Это нельзя отменить!

Вариант 1: Удалить IKEv2 и настроить его снова с помощью вспомогательного скрипта.

Обратите внимание, что это переопределит переменные, указанные в файле env, такие как VPN_DNS_NAME и VPN_CLIENT_NAME, а журналы контейнера больше не будут показывать актуальную информацию для IKEv2.

root@kitploit:~
# Удалить IKEv2 и удалить всю конфигурацию IKEv2
docker exec -it ipsec-vpn-server ikev2.sh --removeikev2
# Настроить IKEv2 снова с пользовательскими параметрами
docker exec -it ipsec-vpn-server ikev2.sh

Вариант 2: Удалить ikev2-vpn-data и создать контейнер заново.

  1. Запишите все ваши данные для входа в VPN.
  2. Удалите Docker-контейнер: docker rm -f ipsec-vpn-server.
  3. Удалите том ikev2-vpn-data: docker volume rm ikev2-vpn-data.

Расширенное использование

См. Расширенное использование (на английском).

  • Использование альтернативных DNS-серверов
  • Запуск без привилегированного режима
  • Выбор режимов VPN
  • Включить совершенную прямую секретность IKEv2
  • Доступ к другим контейнерам на Docker-хосте
  • Указание публичного IP-адреса VPN-сервера
  • Назначение статических IP-адресов клиентам VPN
  • Настройка подсетей VPN
  • Поддержка IPv6
  • Раздельная маршрутизация (Split tunneling)
  • О режиме сетевого хоста
  • Включение журналов Libreswan
  • Проверка состояния сервера
  • Сборка из исходного кода
  • Bash-оболочка внутри контейнера
  • Bind mount файла env
  • Развёртывание алгоритма управления перегрузкой Google BBR

Технические детали

Запущены два сервиса: Libreswan (pluto) для IPsec VPN и xl2tpd для поддержки L2TP.

Конфигурация IPsec по умолчанию поддерживает:

  • IPsec/L2TP с PSK
  • IKEv1 с PSK и XAuth («Cisco IPsec»)
  • IKEv2

Необходимые порты: 500/udp и 4500/udp (IPsec)

Лицензия

Примечание: Компоненты программного обеспечения внутри предварительно собранного образа (например, Libreswan и xl2tpd) распространяются по лицензиям, выбранным их правообладателями. Как и в случае использования любого готового образа, пользователь образа несёт ответственность за то, чтобы использование этого образа соответствовало всем применимым лицензиям для программного обеспечения, содержащегося внутри.

Copyright (C) 2016-2026 Lin Song View my profile on LinkedIn
Основано на работе Thomas Sarlandie (Copyright 2012)

Creative Commons License
Эта работа распространяется по лицензии Creative Commons Attribution-ShareAlike 3.0 Unported License
Требуется указание авторства: пожалуйста, указывайте моё имя в любых производных работах и сообщайте мне, как вы её улучшили!

Скачать инструмент
На базе AlpineНа базе Debian
Имя образаhwdsl2/ipsec-vpn-serverhwdsl2/ipsec-vpn-server:debian
Сжатый размер~ 19 MB~ 62 MB
Базовый образAlpine Linux 3.23Debian Linux 12
Платформыamd64, arm64, arm/v7amd64, arm64, arm/v7
Версия Libreswan5.3.15.3.1
IPsec/L2TP✅✅
Cisco IPsec✅✅
IKEv2✅✅
  • Обновите файл env и добавьте пользовательские параметры IKEv2, такие как VPN_DNS_NAME и VPN_CLIENT_NAME, затем создайте контейнер заново. См. раздел Как использовать этот образ.