Strongswan vpn настройка


Strongswan vpn настройка

Настройка Strongswan VPN

Strongswan представляет собой многоплатформенную реализацию протоколов IPsec и IKEv1/IKEv2. Данное программное обеспечение обеспечивает конфиденциальность и целостность передаваемых данных посредством создания зашифрованных VPN-туннелей. Настройка Strongswan включает в себя конфигурирование как серверной, так и клиентской сторон.

Установка Strongswan

Процесс установки Strongswan варьируется в зависимости от используемой операционной системы. В системах на базе Debian и Ubuntu установка осуществляется посредством менеджера пакетов apt:

Bash
sudo apt update
sudo apt install strongswan libcharon-extra-plugins

В системах на базе CentOS и Fedora используется менеджер пакетов yum или dnf:

Bash
sudo yum install strongswan strongswan-libcharon

или

Bash
sudo dnf install strongswan strongswan-libcharon

Конфигурация сервера Strongswan

Основной конфигурационный файл Strongswan располагается по пути /etc/strongswan/strongswan.conf. Данный файл содержит общие настройки демона strongswan. Для настройки VPN-соединения необходимо отредактировать файл /etc/strongswan/ipsec.conf. В данном файле определяются параметры VPN-соединений (connections). Каждый connection имеет уникальное имя и содержит секции local и remote, описывающие параметры локальной и удаленной сторон соединения соответственно, а также секцию ike и esp, определяющие протоколы и алгоритмы шифрования.

Пример конфигурации файла /etc/strongswan/ipsec.conf для Site-to-Site VPN:

config setup
    charondebug="all"

conn site-to-site
    type=tunnel
    auto=start
    keyexchange=ikev2
    authby=secret
    left=PUBLIC_IP_SERVER
    leftsubnet=LOCAL_NETWORK_SERVER/MASK
    right=PUBLIC_IP_CLIENT
    rightsubnet=LOCAL_NETWORK_CLIENT/MASK
    ike=aes256gcm16-sha384-prfsha384-ecp384!
    esp=aes256gcm16-sha384-prfsha384-ecp384!
    dpdtimeout=300
    dpdaction=restart

В данном примере PUBLIC_IP_SERVER и PUBLIC_IP_CLIENT представляют собой публичные IP-адреса VPN-сервера и клиента, а LOCAL_NETWORK_SERVER/MASK и LOCAL_NETWORK_CLIENT/MASK - локальные сети, доступ к которым необходимо обеспечить через VPN-туннель. Параметры ike и esp определяют используемые алгоритмы шифрования и аутентификации.

Для аутентификации по общему секрету (pre-shared key) необходимо отредактировать файл /etc/strongswan/ipsec.secrets. Формат файла следующий:

PUBLIC_IP_SERVER PUBLIC_IP_CLIENT : PSK "YOUR_SECRET_KEY"

YOUR_SECRET_KEY представляет собой общий секретный ключ, который должен быть идентичным на обеих сторонах VPN-соединения.

Конфигурация клиента Strongswan

Конфигурация клиента Strongswan осуществляется аналогично серверу. Необходимо отредактировать файлы /etc/strongswan/strongswan.conf и /etc/strongswan/ipsec.conf. Файл /etc/strongswan/ipsec.secrets также подлежит редактированию для указания общего секретного ключа или приватного ключа и сертификата, в зависимости от выбранного метода аутентификации.

Пример конфигурации файла /etc/strongswan/ipsec.conf на стороне клиента для Site-to-Site VPN (параметры left и right, а также leftsubnet и rightsubnet меняются местами по сравнению с конфигурацией сервера):

config setup
    charondebug="all"

conn site-to-site
    type=tunnel
    auto=start
    keyexchange=ikev2
    authby=secret
    left=PUBLIC_IP_CLIENT
    leftsubnet=LOCAL_NETWORK_CLIENT/MASK
    right=PUBLIC_IP_SERVER
    rightsubnet=LOCAL_NETWORK_SERVER/MASK
    ike=aes256gcm16-sha384-prfsha384-ecp384!
    esp=aes256gcm16-sha384-prfsha384-ecp384!
    dpdtimeout=300
    dpdaction=restart

Файл /etc/strongswan/ipsec.secrets на стороне клиента будет идентичен файлу на стороне сервера при использовании аутентификации по общему секрету.

Запуск и управление службой Strongswan

После внесения изменений в конфигурационные файлы необходимо запустить или перезапустить службу Strongswan для применения новых настроек. В системах на базе systemd управление службой осуществляется посредством команды systemctl:

Bash
sudo systemctl start strongswan
sudo systemctl restart strongswan
sudo systemctl status strongswan

В системах, использующих SysVinit, используются команды service:

Bash
sudo service strongswan start
sudo service strongswan restart
sudo service strongswan status

Проверка соединения

Для проверки статуса VPN-соединения используется команда ipsec status. Данная команда отображает информацию об активных соединениях, установленных туннелях и ошибках. Также может быть использована команда ip a для проверки наличия виртуального сетевого интерфейса (например, tun0 или vti0), созданного для VPN-туннеля. Проверка связи между локальными сетями за VPN-туннелем осуществляется с помощью утилиты ping.

Настройка Firewall

Для обеспечения корректной работы VPN-соединения необходимо разрешить прохождение трафика IKE (UDP порт 500 и 4500) и ESP (протокол 50) через firewall на обеих сторонах соединения. В случае использования NAT-T (Network Address Translation Traversal) также необходимо обеспечить прохождение UDP порта 4500. Конфигурация firewall зависит от используемого программного обеспечения (например, iptables, firewalld).

Пример настройки iptables для разрешения необходимого трафика:

Bash
sudo iptables -A INPUT -p udp --dport 500 -j ACCEPT
sudo iptables -A INPUT -p udp --dport 4500 -j ACCEPT
sudo iptables -A INPUT -p esp -j ACCEPT
sudo iptables -A FORWARD -j ACCEPT -s LOCAL_NETWORK_SERVER/MASK -d LOCAL_NETWORK_CLIENT/MASK
sudo iptables -A FORWARD -j ACCEPT -s LOCAL_NETWORK_CLIENT/MASK -d LOCAL_NETWORK_SERVER/MASK

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