Перейти к основному содержимому

Настройка IPSec между серверами Ubuntu (AWS) и Ubuntu (Azure)

·784 слов·4 минут
Блог о Сетях, Инфраструктуре и DevOps
Автор
Блог о Сетях, Инфраструктуре и DevOps
DevOps, Infrastructure Engineer, Expert Cyber Security
Схема настраиваемой сети

Настройка IPSecVPN (IKEv2) на StrongSwan между двумя инстансами Ubuntu (AWS) и Ubuntu (Azure)
#

Предварительные требования
#

  • Два сервера Ubuntu: vm-aws-ubuntu2404 и vm-azure-ubuntu2404
  • Разрешенные порты в Security Groups:
    • UDP 500 - для IKE (начальное соединение)
    • UDP 4500 - для NAT-T (основной трафик после установки)
    • Протокол 50 (ESP) или разрешить весь трафик между инстансами
  • Публичные и приватные IP адреса. В AWS\Azure все инстансы по умолчанию находятся за NAT Gateway.

1. Установка StrongSwan
#

На обеих VM выполнить:

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

2. Конфигурация для vm-aws-ubuntu2404 (LAN IP 10.130.0.30, WAN IP XX.XX.XX.XX)
#

sudo nano /etc/ipsec.conf

config setup
    charondebug="ike 2, knl 2, cfg 2"
    uniqueids=no

conn aws-to-azure
    # Локальная сторона
    left=%defaultroute          # использовать интерфейс и приватный IP сервера, через который default route
    leftid=@aws                 # IKE identity           
    leftsubnet=10.130.0.30/32   # приватный IP сервера AWS
    # Удаленная сторона
    right=YY.YY.YY.YY           # публичный IP сервера Azure
    rightid=@azure              # IKE identity
    rightsubnet=10.130.2.20/32  # приватный IP сервера Azure

    keyexchange=ikev2
    auto=start
    authby=psk
    ike=aes256-sha256-modp2048!
    esp=aes256-sha256!

    dpdaction=restart
    dpddelay=30s
    dpdtimeout=120s

    fragmentation=yes
    mobike=yes
    forceencaps=yes
    keyingtries=%forever    

sudo nano /etc/ipsec.secrets

@aws @azure : PSK "GtoKTy6Uu2wilwPakUDF7"

3. Конфигурация для vm-azure-ubuntu2404 (LAN IP 10.130.2.20, WAN IP YY.YY.YY.YY)
#

sudo nano /etc/ipsec.conf

config setup
    charondebug="ike 2, knl 2, cfg 2"
    uniqueids=no

conn azure-to-aws
    # Локальная сторона
    left=%defaultroute          # использовать интерфейс и приватный IP сервера, через который default route
    leftid=@azure               # IKE identity
    leftsubnet=10.130.2.20/32   # приватный IP сервера Azure
    # Удаленная сторона
    right=XX.XX.XX.XX           # публичный IP сервера AWS
    rightid=@aws                # IKE identity
    rightsubnet=10.130.0.30/32  # приватный IP сервера AWS

    keyexchange=ikev2
    auto=start
    authby=psk
    ike=aes256-sha256-modp2048!
    esp=aes256-sha256!

    dpdaction=restart
    dpddelay=30s
    dpdtimeout=120s

    fragmentation=yes
    mobike=yes
    forceencaps=yes
    keyingtries=%forever 

sudo nano /etc/ipsec.secrets

@azure @aws : PSK "GtoKTy6Uu2wilwPakUDF7"

4. Настройка маршрутизации, если роутим подсети (IP forwarding)
#

На обеих VM выполнить:

# Включить пересылку IP-пакетов в ядре
echo "net.ipv4.ip_forward = 1" | sudo tee -a /etc/sysctl.conf

# Применяем изменения
sudo sysctl -p

5. Запуск и управление
#

На обеих VM выполнить:

# Перезапуск StrongSwan
sudo systemctl restart strongswan-starter
sudo systemctl enable strongswan-starter

# Проверка статуса
sudo systemctl status strongswan-starter

# Запуск туннеля вручную если не запустился автоматически
sudo ipsec up aws-to-azure  # на vm-aws-ubuntu2404
sudo ipsec down aws-to-azure
sudo ipsec up azure-to-aws  # на vm-azure-ubuntu2404
sudo ipsec down azure-to-aws

6. Диагностика и логи
#

# Проверка статуса туннеля
sudo ipsec status
sudo ipsec statusall

# Подробные логи
sudo journalctl -u strongswan-starter -f

# Проверка пинга через vm-aws-ubuntu2404:
ping 10.130.2.20

# Проверка пинга через vm-azure-ubuntu2404:
ping 10.130.0.30

# Мониторинг трафика
sudo tcpdump -i any -n esp or udp port 500 or udp port 4500

# Проверка, проходит ли трафик через NAT
sudo tcpdump -i any -n udp port 4500

7. Если нужно завернуть целые подсети /24
#

sudo nano /etc/ipsec.conf

# На vm-aws-ubuntu2404
conn aws-to-azure
    leftsubnet=10.130.0.0/24  # Вся подсеть
    rightsubnet=10.130.2.0/24  # Вся подсеть

# На vm-azure-ubuntu2404
conn azure-to-aws
    leftsubnet=10.130.2.0/24  # Вся подсеть
    rightsubnet=10.130.0.0/24  # Вся подсеть

Важные моменты
#

  • NAT-Traversal: Когда StrongSwan видит, что left (приватный IP) не совпадает с leftid (публичный IP), он автоматически включает NAT-Traversal и инкапсулирует ESP в UDP 4500.
  • AWS Source/Dest Check: Нужно отключить (EC2:Actions-Networking-Change source/destination check), если необходимо маршрутизировать трафик для других машин в подсети.
  • Time Sync: Убедитесь, что время синхронизировано, важно для IKEv2 (sudo timedatectl status).
  • Firewall: Проверьте, что локальный фаервол на Ubuntu (ufw status) не блокирует порты.
После настройки вы должны иметь безопасное IPSec соединение между двумя VM с шифрованием трафика.

Проверка подключения
#

root@vm-aws-ubuntu2404:~# sudo ipsec status
Security Associations (1 up, 0 connecting):
aws-to-azure[1]: ESTABLISHED 4 minutes ago, 10.130.0.30[aws]...YY.YY.YY.YY[azure]
aws-to-azure{1}:  INSTALLED, TUNNEL, reqid 1, ESP in UDP SPIs: c4505178_i c37cb9da_o
aws-to-azure{1}:   10.130.0.30/32 === 10.130.2.20/32

root@vm-aws-ubuntu2404:~# sudo ipsec statusall
Status of IKE charon daemon (strongSwan 5.9.13, Linux 6.8.0-100-generic, x86_64):
  uptime: 4 minutes, since Feb 06 21:17:32 2026
  malloc: sbrk 2846720, mmap 0, used 1104784, free 1741936
  worker threads: 11 of 16 idle, 5/0/0/0 working, job queue: 0/0/0/0, scheduled: 4
  loaded plugins: charon aesni aes rc2 sha2 sha1 md5 mgf1 random nonce x509 revocation constraints pubkey pkcs1 pkcs7 pkcs12 pgp dnskey sshkey pem openssl pkcs8 fips-prf gmp agent xcbc hmac kdf gcm drbg attr kernel-netlink resolve socket-default connmark forecast farp stroke updown eap-identity eap-aka eap-md5 eap-gtc eap-mschapv2 eap-dynamic eap-radius eap-tls eap-ttls eap-peap eap-tnc xauth-generic xauth-eap xauth-pam tnc-tnccs dhcp lookip error-notify certexpire led addrblock unity counters
Listening IP addresses:
  10.130.0.30
Connections:
aws-to-azure:  %any...YY.YY.YY.YY  IKEv2, dpddelay=30s
aws-to-azure:   local:  [aws] uses pre-shared key authentication
aws-to-azure:   remote: [azure] uses pre-shared key authentication
aws-to-azure:   child:  10.130.0.30/32 === 10.130.2.20/32 TUNNEL, dpdaction=start
Security Associations (1 up, 0 connecting):
aws-to-azure[1]: ESTABLISHED 4 minutes ago, 10.130.0.30[aws]...YY.YY.YY.YY[azure]
aws-to-azure[1]: IKEv2 SPIs: 7c7449a093716c79_i* f42dbc9e4aad55ae_r, pre-shared key reauthentication in 2 hours
aws-to-azure[1]: IKE proposal: AES_CBC_256/HMAC_SHA2_256_128/PRF_HMAC_SHA2_256/MODP_2048
aws-to-azure{1}:  INSTALLED, TUNNEL, reqid 1, ESP in UDP SPIs: c4505178_i c37cb9da_o
aws-to-azure{1}:  AES_CBC_256/HMAC_SHA2_256_128, 1165660025 bytes_i (846182 pkts, 25s ago), 747612774 bytes_o (555043 pkts, 25s ago), rekeying in 38 minutes
aws-to-azure{1}:   10.130.0.30/32 === 10.130.2.20/32

Related

Настройка доступа на Linux сервер по SSH ключам
·387 слов·2 минут
Настройка GRE over IPSec
·1039 слов·5 минут
Как устроен IPSec VPN
·768 слов·4 минут