← Назад

ikev2-install

🔐 Войти для редактирования

📱 IPSec/IKEv2 — настройка VPN

IKEv2/IPSec — протокол VPN, встроенный в iOS, macOS, Windows и Android. Не требует сторонних клиентов. Хорош для мобильных — автоматически переподключается при смене сети.


Особенности


Шаг 1. Установка StrongSwan

sudo apt update
sudo apt install -y strongswan strongswan-pki libcharon-extra-plugins libcharon-extauth-plugins libstrongswan-extra-plugins

Шаг 2. Генерация сертификатов

Корневой CA

cd /etc/ipsec.d
ipsec pki --gen --type rsa --size 4096 --outform pem > cacert.key
chmod 600 cacert.key

ipsec pki --self --ca --lifetime 3650 \
  --in cacert.key --type rsa \
  --dn "CN=VPN CA" \
  --outform pem > cacert.pem

Сертификат сервера

ipsec pki --gen --type rsa --size 2048 --outform pem > server.key
chmod 600 server.key

ipsec pki --pub --in server.key --type rsa \
  | ipsec pki --issue --lifetime 825 \
    --cacert cacert.pem --cakey cacert.key \
    --dn "CN=your-domain.com" \
    --san your-domain.com \
    --flag serverAuth --flag ikeIntermediate \
    --outform pem > server.pem

Сертификат клиента

ipsec pki --gen --type rsa --size 2048 --outform pem > client.key
chmod 600 client.key

ipsec pki --pub --in client.key --type rsa \
  | ipsec pki --issue --lifetime 825 \
    --cacert cacert.pem --cakey cacert.key \
    --dn "CN=vpn-client" \
    --flag clientAuth \
    --outform pem > client.pem

Экспорт для клиента (PKCS12)

openssl pkcs12 -export -inkey client.key -in client.pem \
  -certfile cacert.pem -name "VPN Client" \
  -out client.p12 -password pass:ВАШ_ПАРОЛЬ

Шаг 3. Настройка StrongSwan

sudo nano /etc/ipsec.conf
config setup
    charondebug="ike 1, knl 1, cfg 0"
    uniqueids=no

conn ikev2-vpn
    auto=add
    keyexchange=ikev2
    left=%any
    leftid=@your-domain.com
    leftcert=server.pem
    leftsendcert=always
    leftsubnet=0.0.0.0/0
    right=%any
    rightid=%any
    rightauth=eap-mschapv2
    rightsourceip=10.10.10.0/24
    rightdns=1.1.1.1,8.8.8.8
    rightsendcert=never
    eap_identity=%any
    fragment=yes
    dpdaction=clear
    dpddelay=300s
    dpdtimeout=1h

rightauth=eap-mschapv2 — авторизация по логину/паролю (не по сертификату). Удобнее для клиентов.


Шаг 4. Настройка пользователей

sudo nano /etc/ipsec.secrets
: RSA "server.key"
vpn-user : EAP "ВAШ_ПАРОЛЬ"

Шаг 5. Включение IP-форвардинга

echo "net.ipv4.ip_forward=1" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p

Шаг 6. NAT

sudo nano /etc/ufw/before.rules

Добавить в начало:

*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 10.10.10.0/24 -o eth0 -j MASQUERADE
COMMIT

Шаг 7. Запуск

sudo systemctl enable strongswan
sudo systemctl restart strongswan
sudo systemctl status strongswan

Шаг 8. Файрвол

sudo ufw allow 500/udp
sudo ufw allow 4500/udp
sudo ufw allow 1701/udp

Шаг 9. Настройка клиентов

iOS / macOS (встроенный клиент)

  1. Отправьте cacert.pem и client.p12 на устройство
  2. Установите сертификаты (Настройки → Профили)
  3. Настройки → VPN → Добавить конфигурацию
    - Тип: IKEv2
    - Сервер: your-domain.com
    - Удалённый ID: your-domain.com
    - Локальный ID: vpn-client
    - Аутентификация пользователя: Имя пользователя
    - Имя: vpn-user
    - Пароль: ВAШ_ПАРОЛЬ

Android (встроенный клиент)

  1. Установите cacert.pem (Настройки → Безопасность → Установить сертификат)
  2. Настройки → VPN → Добавить
    - Тип: IKEv2 IPSec
    - Сервер: your-domain.com
    - Имя: vpn-user
    - Пароль: ВAШ_ПАРОЛЬ
    - CA сертификат: VPN CA

Windows (встроенный клиент)

  1. Установите cacert.pem (Локальный компьютер → Доверенные корневые)
  2. Параметры → VPN → Добавить
    - Тип: IKEv2
    - Адрес: your-domain.com
    - Имя пользователя: vpn-user
    - Пароль: ВAШ_ПАРОЛЬ

Проверка

# Статус
sudo ipsec statusall

# Логи
sudo journalctl -u strongswan -f

# Проверка портов
sudo ss -ulnp | grep -E '500|4500'

Чеклист ✅


Последнее обновление: 2026-07-18