IPSec шифрование в роутере RTU

IPSec шифрование в роутере RTU

IPsec (сокращение от IP Security) — набор протоколов для обеспечения защиты данных, передаваемых по межсетевому протоколу IP. Позволяет осуществлять подтверждение подлинности (аутентификацию), проверку целостности и/или шифрование IP-пакетов. IPsec также включает в себя протоколы для защищённого обмена ключами в сети Интернет.

Довольно часто данный протокол используют между шлюзами для защиты туннелей, организованных каким-нибудь другим способом. Например, L2TP или GRE.

В нашем примере, мы будем использовать туннель IPsec в "чистом" варианте.


Настройка IPsec на базе OpenWrt

В  данной статье будет описана настройка IKEv2/IPsec между роутерами с операционной системой OpenWrt

Схема работы IPsec представлена на картинке:


На данной схеме представлены два роутера, один из которых клиент и имеет динамический IP-адрес (RTU1068_Client)
(также может иметь статический IP-адрес) , а второй, который имеет статический IP-адрес будет сервером.

Задача: объединить две подсети роутеров посредством IPsec.

При настройке IPsec будет использоваться протокол IKEv2, как наиболее современный.

Настройка сервера

В 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 - Продолжительность фазы.

Основные настройки применены! Осталось нажать на кнопку Сохранить и применить.

Настройка межсетевого экрана

Для своей работы IPSec использует порты 500 - ISAKMP и 4500 - NAT-Traversal, поэтому откроем их в межсетевом экране:

Перейдём в пункт "Сеть" - "Межсетевой экран" - "Правила для трафика":


Добавляем новое правило:



Помимо этого добавим правило, разрешающее протокол 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 в консоли:



Проверка соединения

Проверим связь между роутерами с помощью Ping

1) Пинг с клиента до локального адреса сервера:

root@RTU1068_Client:~# ping 192.168.89.1

PING 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.5

PING 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.25

PING 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