Skip to content

Latest commit

 

History

History
449 lines (313 loc) · 34.2 KB

File metadata and controls

449 lines (313 loc) · 34.2 KB

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

Скрипты автоматической настройки сервера IPsec VPN

Статус сборки Звезды GitHub Звезды Docker Загрузки Docker

Разверните собственный сервер 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 и сертификатами

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

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

Сначала подготовьте ваш Linux-сервер* с установленной поддерживаемой ОС.

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

wget https://get.vpnsetup.net -O vpn.sh && sudo sh vpn.sh

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

Tip

При желании вы можете установить WireGuard, OpenVPN и/или Headscale на тот же сервер.

Посмотреть работу скрипта (запись терминала).

Примечание: Эта запись предназначена только для демонстрационных целей. Учетные данные 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. Пользователи публичных облаков также могут выполнить развёртывание с помощью пользовательскими данными.

Быстрое развёртывание в:

Deploy to Linode  Deploy to AWS  Deploy to 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.sh

Note

Безопасный 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.sh

Tip

При желании вы можете установить 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, затем запустить скрипт.

Настройка параметров VPN

Использование альтернативных DNS-серверов

По умолчанию клиенты настроены использовать 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.

Настройка параметров IKEv2

При установке 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

Используйте эту однострочную команду для обновления 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 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.

Обратная связь и вопросы

Лицензия

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

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