Поиск по сайту:

Как настроить VPN на базе IPsec с Strongswan на CentOS/RHEL 8


strongSwan — это открытое, мультиплатформенное, современное и полноценное VPN-решение на базе IPsec для Linux, которое обеспечивает полную поддержку Internet Key Exchange (как IKEv1, так и IKEv2) для установления ассоциаций безопасности (SA) между двумя узлами. Оно полнофункциональное, модульное по дизайну и предлагает десятки плагинов, которые расширяют базовый функционал.

Похожие статьи: Как настроить VPN на базе IPsec с использованием Strongswan на Debian и Ubuntu

В этой статье вы узнаете, как настроить шлюзы IPsec VPN «сеть-сеть» с использованием strongSwan на серверах CentOS/RHEL 8. Это позволяет узлам аутентифицировать друг друга с помощью надежного предварительно установленного ключа (PSK). Настройка «сеть-сеть» означает, что за каждым шлюзом безопасности находится подсеть.

Тестовая среда

Не забудьте использовать свои реальные IP-адреса при настройках, следуя руководству.

Шлюз Сайта 1
Public IP: 192.168.56.7
Private IP: 10.10.1.1/24
Private Subnet: 10.10.1.0/24
Шлюз Сайта 2
Public IP:  192.168.56.6
Private IP: 10.20.1.1/24
Private Subnet: 10.20.1.0/24

Шаг 1: Включение пересылки IP ядра в CentOS 8

1. Начните с включения функции пересылки IP ядра в конфигурационном файле /etc/sysctl.conf на обоих VPN-шлюзах.

# vi /etc/sysctl.conf

Добавьте эти строки в файл.

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 

2. После сохранения изменений в файле выполните следующую команду, чтобы загрузить новые параметры ядра во время выполнения.

# sysctl -p

3. Далее создайте постоянный статический маршрут в файле /etc/sysconfig/network-scripts/route-eth0 на обеих шлюзах безопасности.

# vi /etc/sysconfig/network-scripts/route-eth0

Добавьте следующую строку в файл.

#Site 1 Gateway
10.20.1.0/24  via 192.168.56.7

#Site 2 Gateway
10.10.1.0/24 via 192.168.56.6

4. Затем перезапустите сетевой менеджер, чтобы применить новые изменения.

# systemctl restart NetworkManager

Шаг 2: Установка strongSwan в CentOS 8

5. Пакет strongswan предоставляется в репозитории EPEL. Чтобы установить его, необходимо включить репозиторий EPEL, затем установить strongswan на оба шлюза безопасности.

# dnf install epel-release
# dnf install strongswan

6. Чтобы проверить версию strongswan, установленную на обоих шлюзах, выполните следующую команду.

# strongswan version

7. Затем запустите службу strongswan и включите её автоматический запуск при загрузке системы. Затем проверьте статус на обоих шлюзах безопасности.

# systemctl start strongswan 
# systemctl enable strongswan
# systemctl status strongswan

style="color: red;">Примечание: Последняя версия strongswan в CentOS/REHL 8 поддерживает как swanctl (новую переносимую командную утилиту, представленную в strongSwan 5.2.0, используемую для настройки, управления и мониторинга демона IKE Charon с помощью плагина vici), так и утилиту starter (или ipsec), использующую устаревший плагин stroke.

8. Основной каталог конфигурации — /etc/strongswan/, который содержит файлы конфигурации для обоих плагинов:

# ls /etc/strongswan/

Структура конфигурации Strongswan

Для этого руководства мы будем использовать утилиту IPsec, которая вызывается с помощью команды strongswan и интерфейса stroke. Таким образом, мы будем использовать следующие конфигурационные файлы:

  • /etc/strongswan/ipsec.conf - файл конфигурации подсистемы IPsec strongSwan.
  • /etc/strongswan/ipsec.secrets - файл секретов.

Шаг 3: Настройка шлюзов безопасности

9. На этом шаге необходимо настроить профили подключения на каждом шлюзе безопасности для каждого сайта, используя конфигурационный файл strongswan /etc/strongswan/ipsec.conf.

Настройка профиля подключения сайта 1

# cp /etc/strongswan/ipsec.conf /etc/strongswan/ipsec.conf.orig
# vi /etc/strongswan/ipsec.conf

Скопируйте и вставьте следующую конфигурацию в файл.

config setup
        charondebug="all"
        uniqueids=yes
conn ateway1-to-gateway2
        type=tunnel
        auto=start
        keyexchange=ikev2
        authby=secret
        left=192.168.56.7
        leftsubnet=10.10.1.1/24
        right=192.168.56.6
        rightsubnet=10.20.1.1/24
        ike=aes256-sha1-modp1024!
        esp=aes256-sha1!
        aggressive=no
        keyingtries=%forever
        ikelifetime=28800s
        lifetime=3600s
        dpddelay=30s
        dpdtimeout=120s
        dpdaction=restart

Настройка профиля подключения сайта 2

# cp /etc/strongswan/ipsec.conf /etc/strongswan/ipsec.conf.orig
# vi /etc/strongswan/ipsec.conf

Скопируйте и вставьте следующую конфигурацию в файл:

config setup
        charondebug="all"
        uniqueids=yes
conn 2gateway-to-gateway1
        type=tunnel
        auto=start
        keyexchange=ikev2
        authby=secret
        left=192.168.56.6
        leftsubnet=10.20.1.1/24
        right=192.168.56.7
        rightsubnet=10.10.1.1/24
        ike=aes256-sha1-modp1024!
        esp=aes256-sha1!
        aggressive=no
        keyingtries=%forever
        ikelifetime=28800s
        lifetime=3600s
        dpddelay=30s
        dpdtimeout=120s
        dpdaction=restart

Давайте кратко опишем каждый из вышеуказанных параметров конфигурации:

  • настройка конфигурации - определяет общую информацию о конфигурации для IPSec, которая применяется ко всем соединениям.
  • charondebug - указывает, сколько отладочной информации Charon должно записываться в журнал.
  • uniqueids - определяет, должен ли конкретный идентификатор участника оставаться уникальным.
  • conn gateway1-to-gateway2 - используется для установки имени подключения.
  • type - определяет тип соединения.
  • Auto - используется для указания того, как обрабатывать соединение при запуске или перезапуске IPSec.
  • keyexchange - объявляет версию протокола IKE для использования.
  • authby - указывает, как узлы должны аутентифицировать друг друга.
  • left - объявляет IP-адрес интерфейса общедоступной сети левого участника.
  • leftsubnet - объявляет частную подсеть за левым участником.
  • right - объявляет IP-адрес интерфейса общедоступной сети правого участника.
  • rightsubnet - объявляет частную подсеть за левым участником.
  • ike - используется для объявления списка алгоритмов шифрования/аутентификации IKE/ISAKMP SA, которые будут использоваться. Обратите внимание, что это может быть список, разделённый запятыми.
  • esp - указывает список алгоритмов шифрования/аутентификации ESP, которые будут использоваться для подключения.
  • aggressive - указывает, использовать ли агрессивный или основной режим.
  • keyingtries - указывает количество попыток, которые следует предпринять для установления соединения.
  • ikelifetime - указывает, как долго канал ключей соединения должен существовать перед повторным согласованием.
  • время жизни - указывает, как долго должен существовать конкретный экземпляр соединения, от успешного согласования до истечения срока.
  • dpddelay - задаёт временной интервал, с которым сообщения R_U_THERE/ИНФОРМАЦИОННЫЕ обмены отправляются партнёру.
  • dpdtimeout - используется для указания интервала времени ожидания, по истечении которого все соединения с узлом удаляются в случае бездействия.
  • dpdaction - указывает, как использовать протокол Dead Peer Detection (DPD) для управления соединением.

Вы можете найти описание всех параметров конфигурации подсистемы strongSwan IPsec, прочитав man-страницу ipsec.conf.

# man ipsec.conf

Шаг 4: Настройка PSK для одноранговой аутентификации

10. Далее необходимо сгенерировать стойкий PSK, который будет использоваться участниками для аутентификации следующим образом.

# head -c 24 /dev/urandom | base64

Создать ключ PSK

11. Добавьте PSK в файл /etc/strongswan/ipsec.conf на обоих шлюзах безопасности.

# vi /etc/strongswan/ipsec.secrets

Введите следующую строку в файл.

#Site 1 Gateway
192.168.56.7  192.168.56.6 : PSK "0GE0dIEA0IOSYS2o22wYdicj/lN4WoCL"

#Site 1 Gateway
192.168.56.6  192.168.56.7 : PSK "0GE0dIEA0IOSYS2o22wYdicj/lN4WoCL"

12. Затем запустите сервис strongsan и проверьте состояние соединений.

# systemctl restart strongswan
# strongswan status

Проверить соединения Strongswan

13. Проверьте, можете ли вы получить доступ к частным подсетям с любого из шлюзов безопасности, выполнив команду ping.

# ping 10.20.1.1
# ping 10.10.1.1

Шлюзы безопасности Ping

14. И, наконец, чтобы узнать больше о командах strongswan для ручного подъема/снижения соединений и прочего, см. страницу справки strongswan.

# strongswan --help

На этом пока всё! Чтобы поделиться с нами своими мыслями или задать вопросы, свяжитесь с нами через форму обратной связи ниже. А чтобы узнать больше о новой утилите swanctl и новой более гибкой структуре конфигурации, см. Руководство пользователя strongSwan.