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

Как настроить VPN на основе IPsec с помощью Strongswan в Debian и Ubuntu


StrongSwan — это кроссплатформенная, полнофункциональная и широко используемая реализация VPN (виртуальной частной сети) на основе IPsec с открытым исходным кодом, которая работает на Linux, FreeBSD, OS X, Windows, Android и iOS. В первую очередь это демон управления ключами, который поддерживает протоколы Интернет-обмена ключами (IKEv1 и IKEv2) для установления ассоциаций безопасности (SA) между двумя сверстниками.

В этой статье описывается, как настроить шлюзы IPSec VPN типа «сеть-сеть» с помощью strongSwan на серверах Ubuntu и Debian. . Под межсайтовым соединением мы подразумеваем, что за каждым шлюзом безопасности имеется подсеть. Кроме того, одноранговые узлы будут аутентифицировать друг друга, используя общий ключ (PSK).

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

Не забудьте заменить следующие IP-адреса своими реальными IP-адресами для настройки вашей среды.

Шлюз Зоны 1 (tecmint-devgateway)

OS 1: Debian or Ubuntu
Public IP: 10.20.20.1
Private IP: 192.168.0.101/24
Private Subnet: 192.168.0.0/24

Шлюз Зоны 2 (tecmint-prodgateway)

OS 2: Debian or Ubuntu
Public IP:  10.20.20.3
Private IP: 10.0.2.15/24
Private Subnet: 10.0.2.0/24

Шаг 1. Включение пересылки пакетов ядра

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

sudo vim /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. Затем загрузите новые настройки, выполнив следующую команду.

sudo sysctl -p

3. Если у вас включена служба брандмауэра UFW, вам необходимо добавить следующие правила в файл конфигурации /etc/ufw/before.rules непосредственно перед правилами фильтра в либо шлюзы безопасности.

Шлюз Зоны 1 (tecmint-devgateway)

*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 10.0.2.0/24  -d 192.168.0.0/24 -j MASQUERADE
COMMIT

Шлюз Зоны 2 (tecmint-prodgateway)

*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING  -s 192.168.0.0/24 -d 10.0.2.0/24 -j MASQUERADE
COMMIT

4. После добавления правил брандмауэра примените новые изменения, перезапустив UFW, как показано.

sudo ufw disable 
sudo ufw enable

Шаг 2. Установка StrongSwan в Debian и Ubuntu

5. Обновите кэш пакетов на обоих шлюзах безопасности и установите пакет strongswan с помощью менеджера пакетов APT.

sudo apt update
sudo apt install strongswan 

6. После завершения установки сценарий установщика запустит службу strongswan и позволит ей автоматически запускаться при загрузке системы. Вы можете проверить его статус и включен ли он, используя следующую команду.

sudo systemctl status strongswan.service
sudo systemctl is-enabled strongswan.service

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

7. Далее вам необходимо настроить шлюзы безопасности с помощью файла конфигурации /etc/ipsec.conf.

Шлюз Зоны 1 (tecmint-devgateway)

sudo cp /etc/ipsec.conf /etc/ipsec.conf.orig
sudo nano /etc/ipsec.conf 

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

config setup
        charondebug="all"
        uniqueids=yes
conn devgateway-to-prodgateway
        type=tunnel
        auto=start
        keyexchange=ikev2
        authby=secret
        left=10.20.20.1
        leftsubnet=192.168.0.101/24
        right=10.20.20.3
        rightsubnet=10.0.2.15/24
        ike=aes256-sha1-modp1024!
        esp=aes256-sha1!
        aggressive=no
        keyingtries=%forever
        ikelifetime=28800s
        lifetime=3600s
        dpddelay=30s
        dpdtimeout=120s
        dpdaction=restart

Шлюз Зоны 2 (tecmint-prodgateway)

sudo cp /etc/ipsec.conf /etc/ipsec.conf.orig
sudo nano /etc/ipsec.conf 

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

config setup
        charondebug="all"
        uniqueids=yes
conn prodgateway-to-devgateway
        type=tunnel
        auto=start
        keyexchange=ikev2
        authby=secret
        left=10.20.20.3
        leftsubnet=10.0.2.15/24
        right=10.20.20.1
        rightsubnet=192.168.0.101/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 prodgateway-to-devgateway – определяет имя соединения.
  • type – определяет тип соединения.
  • auto – как обрабатывать соединение при запуске или перезапуске IPSec.
  • keyexchange – определяет используемую версию протокола IKE.
  • authby – определяет, как одноранговые узлы должны аутентифицировать друг друга.
  • left – определяет IP-адрес общедоступного сетевого интерфейса левого участника.
  • leftsubnet — указывает частную подсеть за левым участником.
  • right — указывает IP-адрес общедоступного сетевого интерфейса нужного участника.
  • rightsubnet – указывает частную подсеть за левым участником.
  • ike – определяет список используемых алгоритмов шифрования/аутентификации IKE/ISAKMP SA. Вы можете добавить список, разделенный запятыми.
  • esp – определяет список алгоритмов шифрования/аутентификации ESP, которые будут использоваться для соединения. Вы можете добавить список, разделенный запятыми.
  • агрессивный — указывает, следует ли использовать агрессивный или основной режим.
  • keyingtries — указывает количество попыток, которые необходимо предпринять для установления соединения.
  • ikelifetime — указывает, как долго должен действовать ключевой канал соединения, прежде чем будет проведено повторное согласование.
  • время жизни – определяет, как долго должен длиться конкретный экземпляр соединения, от успешного согласования до истечения срока действия.
  • dpddelay – указывает интервал времени, с которым сообщения R_U_THERE/информационные обмены отправляются партнеру.
  • dpdtimeout — указывает интервал таймаута, по истечении которого все соединения с одноранговым узлом удаляются в случае неактивности.
  • dpdaction – определяет, как использовать протокол обнаружения мертвых узлов (DPD) для управления соединением.

Для получения дополнительной информации о вышеуказанных параметрах конфигурации прочтите справочную страницу ipsec.conf, выполнив эту команду.

man ipsec.conf

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

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

head -c 24 /dev/urandom | base64

9. Затем добавьте PSK в файл /etc/ipsec.secrets на обоих шлюзах.

sudo vim /etc/ipsec.secrets

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

------- Site 1 Gateway (tecmint-devgateway) ------- 

10.20.20.1 10.20.20.3 : PSK "qLGLTVQOfqvGLsWP75FEtLGtwN3Hu0ku6C5HItKo6ac="

------- Site 2 Gateway (tecmint-prodgateway) -------

10.20.20.3  10.20.20.1 : PSK "qLGLTVQOfqvGLsWP75FEtLGtwN3Hu0ku6C5HItKo6ac="

10. Перезапустите программу IPSec и проверьте ее состояние, чтобы просмотреть соединения.

sudo ipsec restart
sudo ipsec status

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

ping 192.168.0.101
ping 10.0.2.15

12. Кроме того, вы можете останавливать и запускать IPSec, как показано.

sudo ipsec stop
sudo ipsec start

13. Дополнительную информацию о командах IPSec для ручного установления соединений и многом другом см. на странице справки IPSec.

ipsec --help

Вот и все! В этой статье мы описали, как настроить IPSec VPN типа «сеть-сеть» с помощью strongSwan на серверах Ubuntu и Debian, где оба шлюзы безопасности были настроены на аутентификацию друг друга с использованием PSK. Если у вас есть какие-либо вопросы или мысли, которыми вы хотите поделиться, свяжитесь с нами через форму обратной связи ниже.