IPsec (сокращение от IP Security) — набор протоколов для обеспечения защиты данных, передаваемых по межсетевому протоколу IP. Позволяет осуществлять подтверждение подлинности (аутентификацию), проверку целостности и/или шифрование IP-пакетов. IPsec также включает в себя протоколы для защищённого обмена ключами в сети Интернет.
Довольно часто данный протокол используют между шлюзами для защиты туннелей, организованных каким-нибудь другим способом. Например, L2TP или GRE.
В нашем примере, мы будем использовать туннель IPsec в "чистом" варианте.
Настройка IPsec на базе OpenWrt
В данной статье будет описана настройка IKEv2/IPsec между роутерами с операционной системой OpenWrt
Схема работы IPsec представлена на картинке:
На данной схеме представлены два роутера, один из которых клиент и имеет динамический IP-адрес (RTU1068_Client)
(также может иметь статический IP-адрес) , а второй, который имеет статический IP-адрес будет сервером.
Задача: объединить две подсети роутеров посредством IPsec.
Настройка сервера
В WEB-интерфейсе перейдите в меню "VPN" - "IPsec", после чего создайте новую конфигурацию.
Далее задайте основные параметры туннеля, нажав кнопку "Изменить".
В открывшемся окне поставьте галочку "Включить (Enable)" и настройте параметры туннеля:
- IKE version (Версия IKE) - протокол, связывающий компоненты IPsec, и заставляющий работать всё как единое целое. Существует две версии протокола IKEv1 и IKEv2.
- Mode (Режим) - данный параметр доступен только для протокола IKEv1. Рекомендуется использовать Main.
- My identifier type (Тип локального идентификатора) - идентификаторы для локального устройства, в зависимости от типа идентификатора: FQDN (полностью квалифицированное доменное имя), User FQDN (пользовательское, по user@dns), а также по Address (адрес WAN-интерфейса).
- My identifier (Локальный идентификатор) - идентификатор устройства, используемый для установки соединения.
- Remote identifier type (Удаленный идентификатор) - идентификатор для удаленного устройства. Можно прописать "%any" как в примере, если клиентов будет много.
- Dead Peer Detection - обнаружение "Мертвого" узла. Подробнее можно ознакомиться по ссылке.
- Pre shared key (Общий ключ) - ключ для аутентификации, задаётся произвольно.
- Remote VPN endpoint (Удаленная точка туннеля) - адрес сервера, с которым будет поднят туннель. Если роутер работает как сервер, то оставьте поле пустым.
- Local IP address/Subnet mask (Локальная подсеть/маска подсети) - локальная подсеть или IP-адрес роутера.
- Remote IP address/Subnet mask (Удаленная подсеть/маска подсети) - локальная подсеть или IP-адрес роутера, локальные сети должны различаться.
Настройка фазы аутентификации и шифрования
Далее необходимо настроить фазы аутентификации и шифрования, при этом аналогичные настройки должны быть и на удаленном оборудовании.
Phase 1:
- Encryption algorithm - необходимо выбрать алгоритм шифрования.
- Authentication - метод аутентификации.
- DH group - Группа Диффи-Хелмана.
- Lifetime - Продолжительность фазы.
Phase 2:
- Encryption algorithm - необходимо выбрать алгоритм шифрования.
- Authentication - метод аутентификации.
- DH group - Группа Диффи-Хелмана.
- Lifetime - Продолжительность фазы.
Настройка межсетевого экрана
Перейдём в пункт "Сеть" - "Межсетевой экран" - "Правила для трафика":
Добавляем новое правило:
Помимо этого добавим правило, разрешающее протокол ESP на роутере:
Настройка клиента
В WEB-интерфейсе перейдите в меню "VPN" - "IPsec", после чего создайте новую конфигурацию.
Далее задайте основные параметры туннеля, нажав кнопку "Изменить".
- Удалённая точка туннеля - укажите IP-адрес сервера для подключения
- Local identifier - пропишите идентификатор клиента
- Все остальные параметры прописываются зеркально серверу.
Указываем такие же алгоритмы шифрования как на сервере
Phase 1:
- Encryption algorithm - необходимо выбрать алгоритм шифрования.
- Authentication - метод аутентификации.
- DH group - Группа Диффи-Хелмана.
- Lifetime - Продолжительность фазы.
Phase 2:
- Encryption algorithm - необходимо выбрать алгоритм шифрования.
- Authentication - метод аутентификации.
- DH group - Группа Диффи-Хелмана.
- Lifetime - Продолжительность фазы.
Сохраняем и применяем изменения
Проверить соединение можно в системном журнале "Состояние" - "Системный журнал" или командой ipsec statusall в консоли:
Проверка соединения
1) Пинг с клиента до локального адреса сервера:
root@RTU1068_Client:~# ping 192.168.89.1PING 192.168.89.1 (192.168.89.1): 56 data bytes
64 bytes from 192.168.89.1: seq=0 ttl=64 time=172.491 ms
64 bytes from 192.168.89.1: seq=1 ttl=64 time=118.082 ms
64 bytes from 192.168.89.1: seq=2 ttl=64 time=113.095 ms
64 bytes from 192.168.89.1: seq=3 ttl=64 time=119.181 ms
--- 192.168.89.1 ping statistics ---
4 packets transmitted, 4 packets received, 0% packet loss
round-trip min/avg/max = 113.095/130.712/172.491 ms
2) Пинг с клиента до устройства с адресом 192.168.89.5:
root@RTU1068_Client:~# ping 192.168.89.5PING 192.168.89.5 (192.168.89.5): 56 data bytes
64 bytes from 192.168.89.5: seq=1 ttl=254 time=118.705 ms
64 bytes from 192.168.89.5: seq=2 ttl=254 time=102.841 ms
64 bytes from 192.168.89.5: seq=3 ttl=254 time=117.168 ms
64 bytes from 192.168.89.5: seq=4 ttl=254 time=100.137 ms
--- 192.168.89.5 ping statistics ---
5 packets transmitted, 4 packets received, 20% packet loss
round-trip min/avg/max = 100.137/109.712/118.705 ms
3) Пинг с сервера до локального адреса клиента:
root@RTU1068_Server:~# ping 192.168.88.1
PING 192.168.88.1 (192.168.88.1): 56 data bytes
64 bytes from 192.168.88.1: seq=0 ttl=64 time=108.088 ms
64 bytes from 192.168.88.1: seq=1 ttl=64 time=272.793 ms
64 bytes from 192.168.88.1: seq=2 ttl=64 time=143.248 ms
64 bytes from 192.168.88.1: seq=3 ttl=64 time=130.008 ms
--- 192.168.88.1 ping statistics ---
4 packets transmitted, 4 packets received, 0% packet loss
round-trip min/avg/max = 108.088/163.534/272.793 ms
4) Пинг с сервера до устройства с адресом 192.168.88.25:
root@RTU1068_Server:~# ping 192.168.88.25PING 192.168.88.25 (192.168.88.25): 56 data bytes
64 bytes from 192.168.88.25: seq=0 ttl=254 time=136.125 ms
64 bytes from 192.168.88.25: seq=1 ttl=254 time=76.374 ms
64 bytes from 192.168.88.25: seq=2 ttl=254 time=86.497 ms
64 bytes from 192.168.88.25: seq=3 ttl=254 time=141.151 ms
--- 192.168.88.25 ping statistics ---
4 packets transmitted, 4 packets received, 0% packet loss
round-trip min/avg/max = 76.374/110.036/141.151 ms