Как настроить 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. Если у вас есть какие-либо вопросы или мысли, которыми вы хотите поделиться, свяжитесь с нами через форму обратной связи ниже.