Настройка IKEv2 VPN сервера на Ubuntu 24.04: StrongSwan без лишних клиентов

Настройка IKEv2 VPN Ubuntu 24.04: StrongSwan за 30 минут
Быстрый ответ
IKEv2/IPsec через StrongSwan — единственный протокол с нативной поддержкой на Windows 10/11, iOS, Android и macOS одновременно. Никаких сторонних приложений.

Что нужно для запуска:

  • Ubuntu 24.04 с белым IP
  • Открытые порты 500/udp и 4500/udp
  • Домен или статический IP для CN сертификата
  • Около 30 минут времени

Порядок: установка пакетов → генерация PKI → конфиг strongswan → UFW + NAT → проверка → подключение клиентов.

Диагноз: почему именно IKEv2

Тебе нужен корпоративный VPN. Пользователи — люди с айфонами, андроидами, рабочими ноутами на Windows. Ты поднял OpenVPN. Теперь пишешь инструкции «как установить клиент», отвечаешь на вопросы в чате и объясняешь бухгалтерии что такое tun-адаптер. Знакомо?

Настройка IKEv2 VPN сервера на Ubuntu решает эту проблему. IKEv2 встроен во все мажорные ОС — Windows 10+, iOS 9.1+, Android 11+, macOS 10.11+. Пользователь заходит в системные настройки, добавляет VPN, вводит логин и пароль. Всё.

Что получишь в итоге:

  • VPN сервер с EAP-аутентификацией по логину/паролю
  • Нативное подключение с любой платформы без сторонних приложений
  • AES-256-GCM + ChaCha20 — современные алгоритмы шифрования
  • Автовосстановление соединения через MOBIKE при смене сети

Уйдёт 25-35 минут. Нужен root или sudo на сервере.

Матрица совместимости: что работает без клиента

Перед тем как разворачивать — смотри реальность:

Протокол Windows 10/11 iOS 17+ Android 11+ macOS 12+
IKEv2/IPsec Нативно Нативно Нативно Нативно
L2TP/IPsec Нативно Нативно Нативно Нативно
PPTP Устарел Удалён в iOS 10 Устарел Удалён
SSTP Нативно Нет Нет Нет
OpenVPN Нужен клиент Нужен клиент Нужен клиент Нужен клиент
WireGuard Нужен клиент Нужен клиент Нужен клиент Нужен клиент

L2TP тоже везде есть, но медленнее и содержит известные уязвимости в реализациях PSK. IKEv2 — единственный правильный выбор для 2025 года, если нужен нативный клиент без вопросов от пользователей.

Системные требования

Параметр Минимум Рекомендуется
ОС Ubuntu 22.04 LTS Ubuntu 24.04 LTS
StrongSwan 5.9.x 5.9.13+ (из репо Ubuntu 24.04)
RAM 512 MB 1 GB+
IP Статический публичный IP IP + домен (для Let’s Encrypt)
Порты 500/udp, 4500/udp 500/udp, 4500/udp, 22/tcp

На момент публикации актуальна StrongSwan 5.9.13. Перед установкой проверь актуальную версию в репозитории: apt-cache policy strongswan.

Таблица портов

Порт Протокол Назначение Снаружи
500 UDP IKE/ISAKMP — обмен ключами IKEv2 Да
4500 UDP IPsec NAT-T — туннель за NAT Да
22 TCP SSH — управление сервером Да (ограничь по IP)

Архитектура решения

%%{init: {
  'theme': 'base',
  'themeVariables': {
    'primaryColor': '#ffffff',
    'primaryTextColor': '#1e293b',
    'primaryBorderColor': '#94a3b8',
    'lineColor': '#64748b',
    'fontSize': '15px',
    'fontFamily': 'ui-sans-serif, system-ui, sans-serif'
  },
  'flowchart': {'curve': 'linear', 'nodeSpacing': 50, 'rankSpacing': 50}
}}%%
flowchart TD
    A["Клиент Windows/iOS/Android/macOS"] -->|"IKE_SA_INIT UDP:500"| B["StrongSwan charon"]
    B -->|"IKE_AUTH EAP-MSCHAPv2"| C["ipsec.secrets - проверка credentials"]
    C -->|"OK"| D["IPsec SA - туннель ESP"]
    D -->|"10.10.10.x/24"| E["IP-пул клиентов"]
    E -->|"NAT MASQUERADE"| F["Интернет / корпоративная сеть"]
    style A fill:#f8fafc,stroke:#3b82f6,stroke-width:2px,color:#1e40af
    style B fill:#f8fafc,stroke:#94a3b8,stroke-width:2px,color:#1e293b
    style C fill:#f8fafc,stroke:#94a3b8,stroke-width:2px,color:#1e293b
    style D fill:#f8fafc,stroke:#94a3b8,stroke-width:2px,color:#1e293b
    style E fill:#f8fafc,stroke:#22c55e,stroke-width:2px,color:#15803d
    style F fill:#f8fafc,stroke:#22c55e,stroke-width:2px,color:#15803d

Причины почему IKEv2 может не работать после установки

Перед тем как делать — пойми что ломается чаще всего. Сэкономишь час дебага.

  • Неверный CN/SAN в сертификате. Указал IP, клиент подключается по домену — не совпадает, отказ. Или наоборот. SAN обязателен — современные клиенты без него сертификат не примут.
  • DEFAULT_FORWARD_POLICY=»DROP» в UFW. Классика. Клиент подключается, пинги до сервера идут, интернета нет. NAT работает, форвардинг заблокирован на уровне политики.
  • Не включён IP forwarding в ядре. Без net.ipv4.ip_forward=1 трафик между туннелем и внешней сетью не пойдёт даже при правильном UFW.
  • Слабые или несовместимые алгоритмы шифрования. Конфиг с только aes256-sha256-modp2048 отвалится на iOS или свежем macOS — они требуют современные DH-группы.
  • Неверный сетевой интерфейс в правилах NAT. Хардкодишь eth0, а у тебя ens3 или enp3s0. NAT не работает, трафик не идёт.
  • CA-сертификат не импортирован на клиенте. Windows и macOS требуют его в системном хранилище доверенных сертификатов.

Установка пакетов

Обновляем систему и ставим всё что нужно:


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

Зачем каждый пакет:

  • strongswan-pki — утилита pki для генерации CA и сертификатов
  • libcharon-extauth-plugins — поддержка EAP-аутентификации (логин/пароль для клиентов)
  • libcharon-extra-plugins — дополнительные протоколы, включая EAP-MSCHAPv2
  • libstrongswan-extra-plugins — поддержка эллиптических кривых (Curve25519), нужна для современных cipher suites

Проверяем установку:


ipsec version

Должно вернуть что-то вроде Linux strongSwan 5.9.13.

Генерация PKI: сертификаты без которых никуда

Создаём рабочую директорию и генерируем всю цепочку: CA → серверный сертификат.


mkdir -p ~/pki/{cacerts,certs,private}
chmod 700 ~/pki
cd ~/pki

Генерируем ключ и самоподписанный CA-сертификат:


# Приватный ключ CA
pki --gen --type rsa --size 4096 --outform pem > private/ca-key.pem

# CA-сертификат, действует 10 лет
pki --self --ca --lifetime 3650 \
    --in private/ca-key.pem \
    --type rsa \
    --dn "CN=VPN Root CA" \
    --outform pem > cacerts/ca-cert.pem

Теперь серверный ключ и сертификат. Замени vpn.example.com на свой домен или IP:


# Ключ сервера
pki --gen --type rsa --size 4096 --outform pem > private/server-key.pem

# Серверный сертификат - подписываем нашим CA
pki --pub --in private/server-key.pem --type rsa \
  | pki --issue \
      --lifetime 1825 \
      --cacert cacerts/ca-cert.pem \
      --cakey private/ca-key.pem \
      --dn "CN=vpn.example.com" \
      --san vpn.example.com \
      --flag serverAuth \
      --flag ikeIntermediate \
      --outform pem > certs/server-cert.pem
Важно: SAN обязателен
Параметр —san (Subject Alternative Name) — это не опция. Современные клиенты на iOS, macOS и Windows 11 проверяют SAN, а не только CN. Без него увидишь «Certificate validation failed» и потратишь время на поиск причины. Если подключаешься по IP, а не домену — добавь и IP: —san @1.2.3.4 —san 1.2.3.4 (@ перед IP означает IP-адрес в формате SAN).

Копируем сертификаты в системные директории StrongSwan:


sudo cp cacerts/ca-cert.pem /etc/ipsec.d/cacerts/
sudo cp certs/server-cert.pem /etc/ipsec.d/certs/
sudo cp private/server-key.pem /etc/ipsec.d/private/
sudo chmod 600 /etc/ipsec.d/private/server-key.pem

Настройка StrongSwan: конфиг ipsec.conf

Бэкапим оригинал и пишем свой:


sudo cp /etc/ipsec.conf /etc/ipsec.conf.bak
sudo tee /etc/ipsec.conf > /dev/null << 'EOF'
config setup
    charondebug="ike 1, knl 1, cfg 0"
    uniqueids=no

conn ikev2-vpn
    auto=add
    compress=no
    type=tunnel
    keyexchange=ikev2
    fragmentation=yes
    forceencaps=yes
    mobike=yes

    # Алгоритмы шифрования - современные + совместимые со старыми клиентами
    ike=chacha20poly1305-sha512-curve25519-prfsha512,aes256gcm16-sha384-prfsha384-ecp384,aes256-sha256-modp2048,aes256-sha1-modp2048,aes128-sha1-modp2048!
    esp=chacha20poly1305-sha512,aes256gcm16-ecp384,aes256-sha256,aes256-sha1,aes128-sha1!

    # Dead peer detection
    dpdaction=clear
    dpddelay=300s
    rekey=no

    # Сервер (левая сторона)
    left=%any
    leftid=@vpn.example.com
    leftauth=pubkey
    leftcert=server-cert.pem
    leftsendcert=always
    leftsubnet=0.0.0.0/0

    # Клиенты (правая сторона)
    right=%any
    rightid=%any
    rightauth=eap-mschapv2
    rightsourceip=10.10.10.0/24
    rightdns=8.8.8.8,8.8.4.4
    rightsendcert=never

    eap_identity=%identity
EOF

Три момента которые важны:

leftauth=pubkey - обязательная директива. В оригинальных статьях её часто забывают. Без неё StrongSwan не знает как аутентифицировать серверную сторону.

mobike=yes - включает MOBIKE (RFC 4555). Клиент переключается между Wi-Fi и мобильной сетью без разрыва VPN-сессии. Очень актуально для мобильных пользователей.

Набор алгоритмов в ike= - здесь есть и ChaCha20-Poly1305 для современных устройств, и классический AES-256 для совместимости со старыми клиентами. Без этого macOS или старый iOS может выдать "No proposal chosen".

Добавление пользователей: ipsec.secrets


sudo tee /etc/ipsec.secrets > /dev/null << 'EOF'
# Ключ сервера
: RSA "server-key.pem"

# Пользователи: username : EAP "password"
ivan : EAP "SecurePass2025!"
maria : EAP "AnotherPass456@"
EOF

sudo chmod 600 /etc/ipsec.secrets

Чтобы добавить пользователя без перезапуска сервиса - вставь строку и выполни:


sudo ipsec rereadsecrets

Настройка UFW и NAT: три места где всё ломается

Сначала определяем интерфейс. Не хардкоди eth0 - проверь:


ip route show default
# Смотри поле "dev": dev eth0, dev ens3, dev enp3s0 и т.д.
IFACE=$(ip route show default | awk '/default/ {print $5}')
echo "Интерфейс: $IFACE"

Включаем форвардинг на уровне ядра:


sudo tee -a /etc/sysctl.conf << 'EOF'
net.ipv4.ip_forward = 1
net.ipv6.conf.all.forwarding = 1
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.send_redirects = 0
EOF

sudo sysctl -p

Теперь UFW. Вот тут три места где ошибаются:

Место 1. Меняем политику форвардинга в /etc/default/ufw:


sudo sed -i 's/DEFAULT_FORWARD_POLICY="DROP"/DEFAULT_FORWARD_POLICY="ACCEPT"/' /etc/default/ufw

Место 2. Добавляем NAT-правила в начало /etc/ufw/before.rules - строго до блока *filter:

Перед редактированием
Замени eth0 на свой интерфейс из команды выше. Это самая частая причина «подключился, интернета нет». Проверь переменную IFACE перед вставкой.

sudo tee /tmp/ufw-nat.txt << 'EOF'
*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 10.10.10.0/24 -o eth0 -m policy --pol ipsec --dir out -j ACCEPT
-A POSTROUTING -s 10.10.10.0/24 -o eth0 -j MASQUERADE
COMMIT

*mangle
:FORWARD ACCEPT [0:0]
-A FORWARD -m policy --pol ipsec --dir in -s 10.10.10.0/24 -o eth0 -p tcp -m tcp --tcp-flags SYN,RST SYN -m tcpmss --mss 1361:1536 -j TCPMSS --set-mss 1360
COMMIT

EOF

# Вставляем перед первой строкой *filter
sudo sed -i '/*filter/e cat /tmp/ufw-nat.txt' /etc/ufw/before.rules

Либо - если sed с heredoc не нравится - открой файл вручную и вставь блок выше в начало, перед строкой *filter:


sudo nano /etc/ufw/before.rules

Место 3. Добавляем разрешение форвардинга для VPN-подсети. В том же файле /etc/ufw/before.rules, внутри блока *filter, после строки :ufw-before-forward:


# Добавить в секцию *filter блока ufw-before-forward:
-A ufw-before-forward -s 10.10.10.0/24 -j ACCEPT
-A ufw-before-forward -d 10.10.10.0/24 -j ACCEPT

Открываем порты и применяем:


sudo ufw allow 500/udp
sudo ufw allow 4500/udp
sudo ufw allow OpenSSH
sudo ufw disable && sudo ufw enable

Запуск и проверка


sudo systemctl restart strongswan-starter
sudo systemctl enable strongswan-starter
sudo systemctl status strongswan-starter

Проверяем что демон поднялся и конфиг загружен:


sudo ipsec status
sudo ipsec listconn

Вывод ipsec listconn должен показать ikev2-vpn в списке. Если соединений нет - это нормально до первого подключения клиента.

Проверяем форвардинг:


sysctl net.ipv4.ip_forward
# Ожидаем: net.ipv4.ip_forward = 1

Проверяем NAT:


sudo iptables -t nat -L POSTROUTING -v -n
# Должна быть строка с MASQUERADE и 10.10.10.0/24

Подключение клиентов

Windows 10/11

Сначала импортируй CA-сертификат. Без этого Windows выдаст ошибку проверки сертификата:


# Запусти PowerShell от администратора
# Скопируй ca-cert.pem на машину и выполни:
Import-Certificate -FilePath "ca-cert.pem" -CertStoreLocation Cert:\LocalMachine\Root

Теперь добавляем VPN через PowerShell (быстрее чем через GUI):


Add-VpnConnection -Name "Corporate VPN" `
    -ServerAddress "vpn.example.com" `
    -TunnelType IKEv2 `
    -AuthenticationMethod EAP `
    -EncryptionLevel Required `
    -RememberCredential

Или через GUI: Параметры - Сеть и Интернет - VPN - Добавить VPN-подключение. Тип: IKEv2, адрес: vpn.example.com, тип входа: имя пользователя и пароль.

Windows: дополнительно усиливаем шифрование
Windows по умолчанию предлагает слабые алгоритмы. После добавления соединения выполни в PowerShell от администратора для принудительного использования AES-256:

Set-VpnConnectionIPsecConfiguration -ConnectionName "Corporate VPN" `
    -AuthenticationTransformConstants SHA256128 `
    -CipherTransformConstants AES256 `
    -DHGroup Group14 `
    -EncryptionMethod AES256 `
    -IntegrityCheckMethod SHA256 `
    -PfsGroup None `
    -Force

iOS / iPadOS

Настройки - Основные - VPN и управление устройством - VPN - Добавить конфигурацию VPN.

Заполняй:

  • Тип: IKEv2
  • Описание: любое
  • Сервер: vpn.example.com
  • Удалённый ID: vpn.example.com
  • Локальный ID: оставить пустым
  • Аутентификация: имя пользователя
  • Имя пользователя и пароль: из ipsec.secrets

Если используешь самоподписанный CA - нужно установить его как профиль. Отправь ca-cert.pem по почте или положи на веб-сервер, открой на iPhone, установи через Настройки - Профиль загружен - Установить.

Android

Нативный клиент IKEv2 есть в Android 11+. Настройки - Сеть и интернет - VPN - добавить.

На Android 12 и новее путь может отличаться в зависимости от оболочки. Тип соединения - IKEv2/IPSec MSCHAPv2 или IKEv2/IPSec PSK. Вводи адрес сервера, логин, пароль.

На старых версиях Android или если нативный клиент капризничает - официальное приложение StrongSwan из Play Store решает проблему. Там же импортируй CA-сертификат.

macOS

Системные настройки - Сеть - кнопка "+" - VPN - тип IKEv2.

Адрес сервера и удалённый ID: vpn.example.com. Аутентификация: имя пользователя. CA-сертификат импортируй в Keychain Access в категорию "Системные" с уровнем доверия "Всегда доверять".

macOS хорошо работает с IKEv2, но иногда требует принудительного указания DH-группы. Если не подключается - добавь в конфиг StrongSwan в строку ike= вариант aes256gcm16-sha256-ecp256.

Осложнения: ошибки и как их чинить

Ошибка Причина Решение
Certificate validation failed CA не импортирован на клиенте или CN/SAN не совпадает с адресом сервера Импортируй ca-cert.pem в системное хранилище. Проверь что адрес в SAN совпадает с адресом подключения
No proposal chosen Клиент предлагает алгоритмы которых нет в конфиге сервера Добавь в ike= и esp= более широкий набор алгоритмов. Посмотри что предлагает клиент в логах: journalctl -fu strongswan-starter
Подключается, интернета нет Форвардинг или NAT не работает Проверь sysctl net.ipv4.ip_forward = 1. Проверь DEFAULT_FORWARD_POLICY=ACCEPT в /etc/default/ufw. Проверь правило MASQUERADE с правильным интерфейсом
Authentication failed Неверные credentials или не перечитан secrets Проверь /etc/ipsec.secrets, запусти ipsec rereadsecrets
Connection reset / timeout Порты 500/udp или 4500/udp закрыты sudo ufw status. Проверь firewall на уровне хостера/облака - там может быть отдельный security group
iOS не подключается после обновления Apple ужесточила требования к алгоритмам Добавь в ike= строку aes256gcm16-sha384-prfsha384-ecp384 - Apple предпочитает именно этот набор

Главный инструмент диагностики - лог charon в реальном времени:


sudo journalctl -fu strongswan-starter

Смотри на IKE_SA_INIT и IKE_AUTH пакеты. По ним видно где именно обрывается рукопожатие.

Альтернативы и когда их выбирать

Решение Плюсы Минусы Когда использовать
IKEv2 + StrongSwan Нативные клиенты на всех ОС Нужна PKI Корпоративный VPN, смешанный парк устройств
WireGuard Максимальная скорость, минимальный код Нужен клиент на каждой платформе IT-команды, разработчики, технари
OpenVPN Гибкость, зрелость Клиент везде, сложная настройка Когда нужна нестандартная маршрутизация
L2TP/IPsec Нативно везде, простая настройка с PSK Медленно, известные уязвимости в PSK Legacy-совместимость, последний вариант

WireGuard быстрее IKEv2 - это факт. Но бухгалтер с iPhone не будет устанавливать приложение из App Store по твоей инструкции в 12 шагов. IKEv2 решает эту проблему на уровне ОС.

Профилактика и безопасность

Мониторинг активных сессий


# Активные Security Associations
sudo ipsec statusall

# Смотреть подключения в реальном времени
sudo journalctl -fu strongswan-starter | grep "IKE_SA"

Ротация пользовательских паролей


# Редактируем secrets
sudo nano /etc/ipsec.secrets

# Применяем без перезапуска
sudo ipsec rereadsecrets

Обновление сертификатов

Серверный сертификат выдан на 1825 дней (5 лет). Поставь напоминание. За 30 дней до истечения:


# Проверяем срок действия
openssl x509 -in /etc/ipsec.d/certs/server-cert.pem -noout -dates

Для продакшна - используй Let's Encrypt вместо самоподписанного CA. Тогда клиентам не нужно импортировать CA-сертификат, он уже в системном хранилище. Скрипт для этого: jawj/IKEv2-setup.

Ограничение доступа по IP для SSH


sudo ufw delete allow OpenSSH
sudo ufw allow from 1.2.3.4 to any port 22

Автоматический запуск


sudo systemctl enable strongswan-starter

Проверь что в /etc/ipsec.conf стоит auto=add, а не auto=start. С auto=add сервер ждёт входящих подключений. С auto=start будет пытаться сам инициировать туннель, что для road warrior-конфигурации не нужно.

Резервное копирование

Что бэкапить:

  • /etc/ipsec.conf - конфигурация
  • /etc/ipsec.secrets - учётные данные пользователей
  • /etc/ipsec.d/ - вся PKI (сертификаты и ключи)
  • /etc/ufw/before.rules - NAT-правила

# Архив всего необходимого
sudo tar -czf vpn-backup-$(date +%Y%m%d).tar.gz \
    /etc/ipsec.conf \
    /etc/ipsec.secrets \
    /etc/ipsec.d/ \
    /etc/ufw/before.rules

# Храни ключи CA в надёжном месте - без них не восстановишь PKI

Особенно береги private/ca-key.pem. Это корень доверия всей твоей инфраструктуры. Потеряешь - придётся перевыпускать все сертификаты и переконфигурировать клиентов.

FAQ

Почему IKEv2 VPN не подключается после настройки?

Четыре самые частые причины: несовпадение CN/SAN в сертификате с адресом сервера, CA-сертификат не импортирован на клиенте, закрытые порты 500/udp или 4500/udp, неверный пароль в ipsec.secrets. Смотри лог: sudo journalctl -fu strongswan-starter во время попытки подключения - там будет конкретная причина.

Как проверить что StrongSwan VPN работает правильно?

После подключения клиента выполни sudo ipsec statusall. Должна появиться активная Security Association. Клиент должен получить IP из пула 10.10.10.0/24. Проверь ip addr на клиенте и пингани 8.8.8.8 через туннель. Если пинг идёт, DNS разрешает имена - всё работает.

Что делать если пишет No proposal chosen?

Это несовпадение алгоритмов между клиентом и сервером. Смотри в логе какие алгоритмы предлагает клиент. Расшири список в ike= и esp= в /etc/ipsec.conf. Для старых Windows-клиентов добавь aes256-sha1-modp1024. Для macOS - aes256gcm16-sha256-ecp256. После изменения: sudo ipsec reload.

Чем IKEv2 отличается от OpenVPN для корпоративного VPN?

IKEv2 встроен в ОС - не нужен клиент. OpenVPN требует установки приложения на каждое устройство. IKEv2 работает на уровне ядра, чуть быстрее OpenVPN в userspace. OpenVPN гибче в маршрутизации и работает через 443/tcp там где UDP заблокирован. Для корпоративного VPN с обычными пользователями IKEv2 выигрывает по удобству развёртывания.

Как удалить пользователя из VPN?

Удали или закомментируй строку в /etc/ipsec.secrets и выполни sudo ipsec rereadsecrets. Активную сессию пользователя разорви: sudo ipsec down ikev2-vpn[имя_сессии]. Имя сессии видно в выводе ipsec statusall.

Можно ли использовать IKEv2 VPN через 443 порт?

Нет. IKEv2 работает на UDP:500 и UDP:4500 - это фиксированные порты стандарта. Если UDP заблокирован у пользователя, IKEv2 не поможет. В таком случае нужен OpenVPN на TCP:443 как fallback.

Итог

Сервер поднят. Клиенты подключаются нативно с Windows, iOS, Android и macOS. Никаких инструкций «установите приложение», никаких тикетов «у меня не работает».

Один нюанс на будущее: раз в год проверяй срок действия серверного сертификата. Когда он истечёт, все клиенты перестанут подключаться одновременно, в пятницу вечером. Murphy's law - это не теория, это производственный стандарт.

Если что-то не поднялось - пиши в комментарии. Разберёмся.

Андрей Анатольевич
Author: Андрей Анатольевич

Руководитель ИТ / Кризис-менеджер 25 лет в IT: от инженера в МегаФоне до руководителя отдела. Знаю, как выглядит бардак: нестабильные сети, устаревшая инфраструктура, конфликты в команде, раздутые сроки. Помогаю бизнесу выходить из кризиса: навожу порядок в легаси, стабилизирую то, что разваливается, выстраиваю прогнозируемые процессы. Не раз возвращал к жизни ИТ-структуры — знаю цену хаосу. 📍 Ищу проект для полной реорганизации / стабилизации. 📬 Telegram: @over_dude ✉️ mail@it-apteka.com

Оставайтесь на связи

Рецепты от IT-боли. Без воды, без рекламы, без маркетинговой шелухи.

Подписаться на IT-Аптеку →

Мы ВКонтакте

IT-Аптека — советы, новости и помощь рядом.

Вступить в группу ВКонтакте →
Поделитесь:

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Прокрутить вверх