Как настроить VPN на основе IPsec с помощью Strongswan на CentOS/RHEL 8
StrongSwan — это многоплатформенное современное и комплексное VPN-решение с открытым исходным кодом на базе IPsec для Linux, обеспечивающее полную поддержку Интернет-обмена ключами (как IKEv1, так и ). IKEv2) для установления ассоциаций безопасности (SA) между двумя узлами. Он является полнофункциональным, модульным по конструкции и предлагает десятки плагинов, расширяющих основные функции.
Статья по теме: Как настроить VPN на основе IPsec с помощью Strongswan в Debian и Ubuntu
В этой статье вы узнаете, как настроить VPN-шлюзы IPsec типа «сеть-сеть» с помощью 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, а затем установить Strongwan на оба шлюза безопасности.
dnf install epel-release
dnf install strongswan
6. Чтобы проверить версию strongswan, установленную на обоих шлюзах, выполните следующую команду.
strongswan version
7. Затем запустите службу strongswan и включите ее автоматический запуск при загрузке системы. Затем проверьте статус на обоих шлюзах безопасности.
systemctl start strongswan
systemctl enable strongswan
systemctl status strongswan
Примечание. Последняя версия strongswan в CentOS/REHL 8 поддерживает оба swanctl. (новая портативная утилита командной строки, представленная в StrongSwan 5.2.0, используемая для настройки, управления и мониторинга демона IKE Charon с помощью плагина vici) и starter. Strong> (или ipsec), использующая устаревший плагин Stroke.
8. Основной каталог конфигурации — /etc/strongswan/, который содержит файлы конфигурации для обоих плагинов:
ls /etc/strongswan/
В этом руководстве мы будем использовать утилиту IPsec, которая вызывается с помощью команды strongswan и интерфейса Stroke. Итак, мы будем использовать следующие файлы конфигурации:
- /etc/strongswan/ipsec.conf – файл конфигурации подсистемы StrongSwan IPsec.
- /etc/strongswan/ipsec.secrets – файл секретов.
Шаг 3. Настройка шлюзов безопасности
9. На этом этапе вам необходимо настроить профили подключения на каждом шлюзе безопасности для каждого сайта с помощью файла конфигурации /etc/strongswan/ipsec.confstrongswan.
Настройка профиля подключения сайта 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 – определяет, должен ли конкретный идентификатор участника оставаться уникальным.
- conngateway1-to-gateway2 – используется для установки имени соединения.
- type – определяет тип соединения.
- Авто — используется для объявления того, как обрабатывать соединение при запуске или перезапуске 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) для управления соединением.
Описание всех параметров конфигурации подсистемы StrongSwan IPsec можно найти на справочной странице ipsec.conf.
man ipsec.conf
Шаг 4. Настройка PSK для одноранговой аутентификации
10. Далее вам необходимо создать надежный PSK, который будет использоваться узлами для аутентификации следующим образом.
head -c 24 /dev/urandom | base64
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
13. Проверьте, можете ли вы получить доступ к частным подсетям с любого из шлюзов безопасности, выполнив команду ping.
ping 10.20.1.1
ping 10.10.1.1
14. И последнее, но не менее важное: дополнительные сведения о командах strongswan для ручного включения и отключения соединений и многом другом см. на странице справки Strongswan.
strongswan --help
На данный момент это все! Чтобы поделиться с нами своими мыслями или задать вопросы, свяжитесь с нами через форму обратной связи ниже. А чтобы узнать больше о новой утилите swanctl и новой, более гибкой структуре конфигурации, см. документацию пользователя StrongSwan.