Настройка Strongswan VPN
Strongswan представляет собой многоплатформенную реализацию протоколов IPsec и IKEv1/IKEv2. Данное программное обеспечение обеспечивает конфиденциальность и целостность передаваемых данных посредством создания зашифрованных VPN-туннелей. Настройка Strongswan включает в себя конфигурирование как серверной, так и клиентской сторон.
Процесс установки Strongswan варьируется в зависимости от используемой операционной системы. В системах на базе Debian и Ubuntu установка осуществляется посредством менеджера пакетов apt:
sudo apt update
sudo apt install strongswan libcharon-extra-plugins
В системах на базе CentOS и Fedora используется менеджер пакетов yum или dnf:
sudo yum install strongswan strongswan-libcharon
или
sudo dnf install strongswan strongswan-libcharon
Основной конфигурационный файл 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 осуществляется аналогично серверу. Необходимо отредактировать файлы /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 для применения новых настроек. В системах на базе systemd управление службой осуществляется посредством команды systemctl
:
sudo systemctl start strongswan
sudo systemctl restart strongswan
sudo systemctl status strongswan
В системах, использующих SysVinit, используются команды service
:
sudo service strongswan start
sudo service strongswan restart
sudo service strongswan status
Для проверки статуса VPN-соединения используется команда ipsec status
. Данная команда отображает информацию об активных соединениях, установленных туннелях и ошибках. Также может быть использована команда ip a
для проверки наличия виртуального сетевого интерфейса (например, tun0
или vti0
), созданного для VPN-туннеля. Проверка связи между локальными сетями за VPN-туннелем осуществляется с помощью утилиты ping
.
Для обеспечения корректной работы VPN-соединения необходимо разрешить прохождение трафика IKE (UDP порт 500 и 4500) и ESP (протокол 50) через firewall на обеих сторонах соединения. В случае использования NAT-T (Network Address Translation Traversal) также необходимо обеспечить прохождение UDP порта 4500. Конфигурация firewall зависит от используемого программного обеспечения (например, iptables, firewalld).
Пример настройки iptables для разрешения необходимого трафика:
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 для их автоматического применения после перезагрузки системы.
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.