Привет! Как и обещал, в этом посте я расскажу про комбинацию наших сервисов MultiSIM Резервирования и IPVPN через IPSec.

Сами по себе сервисы по IPSec — это хорошо, сервис работает через кабельный интернет провайдера, но хотелось бы как-то зарезервировать включение или же предоставлять сервис там, где нет кабельного интернета, а есть только по LTE.
В классическом варианте работы MultiSIM Резервирования при подаче сервисов IPVPN по двум мобильным сетям есть следующие проблемы:
С другой стороны, у нас есть IPSec, в котором все вопросы маршрутизации и клиентских настроек абстрагированы от транспорта, будь то проводной интернет-канал или LTE разных операторов, а ещё метки трафика можно сохранить внутри туннеля, хоть и без обеспечения SLA, так как интернет и особенно LTE/3G это довольно непредсказуемые среды для передачи данных.
Поэтому у нас и появилась идея — «А почему бы не использовать IPsec еще и поверх LTE?». В роутеры ставить типовые SIM-карты с заранее созданными APN и уже через них строить IPSEC до нашего VPN HUB и выпускать клиента в его VRF. А если есть и проводной канал, то использовать в качестве основного транспорта проводное соединение, а при аварии на нем переключать трафик на LTE.
Таким образом, схема сети стала выглядеть вот так:

Кликабельно
У клиента получается сразу до трёх WAN-каналов, которые будут выполнять роль «underlay» для трафика IPSec:
Теперь осталось выбрать и настроить роутер для такого варианта предоставления сервиса.
При выборе роутера нас заинтересовали две модели от Huawei — это AR161 и AR129. В них есть поддержка IPSec, LTE модем с поддержкой двух SIM-карт, 4 Ethernet порта LAN + 1 Ethernet WAN, а в модели AR129 еще и WiFi, то есть все, что нужно для работы нашей схемы, и даже немного больше.
А вот с настройкам все оказалось намного сложнее.
Еще во время настройки роутеров для Multisim Резервирования мы столкнулись с проблемой приоритетов между проводными WAN и двумя LTE-сетями для выбора наилучшего маршрута трафика.
В Huawei AR161/129 для этого есть два инструмента:
Для решения нашей задачи мы выбрали функциональность OPS+Python для включения только двух SIM LTE-включения, и смешанный режим для Интернет + двух SIM LTE-включения.
Примерная конфигурация на роутерах получается такая:
Всё, настроенный роутер можно ставить клиенту.
Из планов по развитию этого решения:
В следующих статьях расскажем, как мы подружили сервисы Мультисим Резервирования с нашей Облачной АТС, сделали на тех же хуавеях режим L2-over-L3 с помощью x-connect, выложим скрипты переключения SIM-карт на Python и расскажем про USB-Deployment на роутерах.
Благодарю моих коллег из RnD, особенно Дениса Зинченко (Dzinch) и Андрея Воронова в подготовке этих технических решений и помощи написании статьи!
P.S.: Первая часть поста вот здесь.

Сами по себе сервисы по IPSec — это хорошо, сервис работает через кабельный интернет провайдера, но хотелось бы как-то зарезервировать включение или же предоставлять сервис там, где нет кабельного интернета, а есть только по LTE.
В классическом варианте работы MultiSIM Резервирования при подаче сервисов IPVPN по двум мобильным сетям есть следующие проблемы:
- Для каждого клиента нужно создавать свой закрытый APN, настраивать в нем BGP или статическую маршрутизацию, сразу рассчитывать необходимое количество хостов для корректного плана ip-адресации.
- Сеть каждого оператора связи на устройстве также нужно настраивать отдельно, с учетом того, что у каждого из операторов есть свои особенности.
- Траблшутить такую архитектуру сложнее (намного).
- Метки трафика IPVPN на входе в сети LTE обнуляются, то есть, если у вас в сети на всех объектах маркируется трафик телефонии или видео — то при включении IPVPN с чистого LTE метки трафика будут выставляться в «ноль».
С другой стороны, у нас есть IPSec, в котором все вопросы маршрутизации и клиентских настроек абстрагированы от транспорта, будь то проводной интернет-канал или LTE разных операторов, а ещё метки трафика можно сохранить внутри туннеля, хоть и без обеспечения SLA, так как интернет и особенно LTE/3G это довольно непредсказуемые среды для передачи данных.
Поэтому у нас и появилась идея — «А почему бы не использовать IPsec еще и поверх LTE?». В роутеры ставить типовые SIM-карты с заранее созданными APN и уже через них строить IPSEC до нашего VPN HUB и выпускать клиента в его VRF. А если есть и проводной канал, то использовать в качестве основного транспорта проводное соединение, а при аварии на нем переключать трафик на LTE.
Таким образом, схема сети стала выглядеть вот так:

Кликабельно
У клиента получается сразу до трёх WAN-каналов, которые будут выполнять роль «underlay» для трафика IPSec:
- Проводной канал доступа Интернет.
- Первая (Основная) LTE-сеть.
- Вторая (Резервная) LTE-сеть (если нужна).
Теперь осталось выбрать и настроить роутер для такого варианта предоставления сервиса.
Настраиваем роутер
При выборе роутера нас заинтересовали две модели от Huawei — это AR161 и AR129. В них есть поддержка IPSec, LTE модем с поддержкой двух SIM-карт, 4 Ethernet порта LAN + 1 Ethernet WAN, а в модели AR129 еще и WiFi, то есть все, что нужно для работы нашей схемы, и даже немного больше.
А вот с настройкам все оказалось намного сложнее.
Еще во время настройки роутеров для Multisim Резервирования мы столкнулись с проблемой приоритетов между проводными WAN и двумя LTE-сетями для выбора наилучшего маршрута трафика.
В Huawei AR161/129 для этого есть два инструмента:
- Функциональность Network Quality Analysis(aka NQA-test).
Проводит базовое тестирование icmp-запросами на указываемый хост для определения его доступности. - Функциональность Open Programmability System(OPS) + Python.
Очень мощный инструмент, дает возможность сохранять информацию в логах и проводить «интеллектуальное» переключение, основываясь на статистике icmp, но и сложный для освоения.
Для решения нашей задачи мы выбрали функциональность OPS+Python для включения только двух SIM LTE-включения, и смешанный режим для Интернет + двух SIM LTE-включения.
Примерная конфигурация на роутерах получается такая:
В случае только 2x Sim LTE-включения
#Настройка динамического IP адреса на проводном WAN интерфейсе (получение по DHCP) interface GigabitEthernet0/0/4 ip address dhcp-alloc #Настройка APN профилей, Cellular0/0/0 интерфейса apn profile [APN #1] apn [APN 1 NAME] apn profile [APN #2] apn [APN 2 NAME] sim-id 2 #Настройка Cellular0/0/0 интерфейса interface Cellular0/0/0 dialer enable-circular apn-profile [APN #1] priority 120 apn-profile [APN #2] dialer timer autodial 60 profile create lte-default [APN #1] sim-id 1 profile create lte-default [APN #2] sim-id 2 ip address negotiate modem reboot #Настройка IPSec имени ipsec authentication sha2 compatible enable ike local-name [IPSEC_LOGIN] #Настройка параметров шифрования IPSec туннеля ipsec proposal ipsec esp authentication-algorithm sha2-256 esp encryption-algorithm aes-256 ike proposal 1 encryption-algorithm aes-256 dh group2 authentication-algorithm sha2-256 authentication-method pre-share integrity-algorithm hmac-sha2-256 prf hmac-sha2-256 #Настройка аутентификации IPSec туннеля ike peer ipsec_1 pre-shared-key simple [IPSEC_PASSWORD] ike-proposal 1 local-id-type fqdn remote-id-type ip dpd type periodic dpd idle-time 10 dpd retransmit-interval 2 remote-address 100.64.0.100 route accept config-exchange request config-exchange set accept config-exchange set send ipsec profile ipsecprof_1 ike-peer ipsec_1 proposal ipsec #Настройка IPSec -туннеля interface Tunnel0/0/0 tunnel-protocol ipsec ip address [туннельный IP адрес на марш-ре Huawei] 255.255.255.252 source Cellular0/0/0 ipsec profile ipsecprof_1 #Настройка маршрутов ip route-static 0.0.0.0 0.0.0.0 Tunnel0/0/0 ip route-static [VPN HUB INTERNAL ADDRESS] 255.255.0.0 Cellular0/0/0
В случае Интернет + 2x Sim LTE-включения
#Настройка динамического IP адреса на проводном WAN интерфейсе (получение по DHCP) interface GigabitEthernet0/0/4 ip address dhcp-alloc #Настройка APN профилей, Cellular0/0/0 интерфейса apn profile [APN #1] apn [APN 1 NAME] apn profile [APN #2] apn [APN 2 NAME] sim-id 2 #Настройка Cellular0/0/0 интерфейса interface Cellular0/0/0 dialer enable-circular apn-profile [APN #1] priority 120 apn-profile [APN #2] dialer timer autodial 60 profile create lte-default [APN #1] sim-id 1 profile create lte-default [APN #2] sim-id 2 ip address negotiate modem reboot #Настройка IPSec имени ipsec authentication sha2 compatible enable ike local-name [IPSEC_LOGIN] #Настройка параметров шифрования IPSec туннеля ipsec proposal ipsec esp authentication-algorithm sha2-256 esp encryption-algorithm aes-256 ike proposal 1 encryption-algorithm aes-256 dh group2 authentication-algorithm sha2-256 authentication-method pre-share integrity-algorithm hmac-sha2-256 prf hmac-sha2-256 #Настройка аутентификации IPSec туннеля ike peer ipsec_1 pre-shared-key simple [IPSEC_PASSWORD] ike-proposal 1 local-id-type fqdn remote-id-type ip dpd type periodic dpd idle-time 10 dpd retransmit-interval 2 remote-address 81.211.80.50 route accept config-exchange request config-exchange set accept config-exchange set send ipsec profile ipsecprof_1 ike-peer ipsec_1 proposal ipsec ike peer ipsec_2 pre-shared-key simple [IPSEC_PASSWORD] ike-proposal 1 local-id-type fqdn remote-id-type ip dpd type periodic dpd idle-time 10 dpd retransmit-interval 2 remote-address [VPN HUB INTERNAL ADDRESS] route accept config-exchange request config-exchange set accept config-exchange set send ipsec profile ipsecprof_2 ike-peer ipsec_2 proposal ipsec #Настройка IPSec-туннеля interface LoopBack32 ip address [туннельный IP адрес на марш-ре Huawei] 255.255.255.252 interface Tunnel0/0/0 ip address unnumbered interface LoopBack32 tunnel-protocol ipsec source GigabitEthernet0/0/1 ipsec profile ipsecprof_1 interface Tunnel0/0/1 ip address unnumbered interface LoopBack32 tunnel-protocol ipsec source Cellular0/0/0 ipsec profile ipsecprof_2 #Настройка статической маршрутизации (в направлении сети Билайн) nqa test-instance [username] inet test-type icmp destination-address ipv4 81.211.80.50 source-interface GigabitEthernet0/0/4 frequency 16 probe-count 2 start now #Настройка маршрутов ip route-static 81.211.80.50 255.255.255.255 GigabitEthernet 0/0/4 dhcp track nqa [username] inet ip route-static [VPN HUB INTERNAL ADDRESS] 255.255.255.255 NULL0 track nqa [username] inet ip route-static [VPN HUB INTERNAL ADDRESS] 255.255.0.0 Cellular0/0/0 preference 70 ip route-static 80.240.216.155 255.255.255.255 GigabitEthernet 0/0/4 dhcp ip route-static 194.67.0.206 255.255.255.255 GigabitEthernet 0/0/4 dhcp
Всё, настроенный роутер можно ставить клиенту.
Планы
Из планов по развитию этого решения:
- Сделать то же самое, но уже на роутерах от Cisco/Mikrotik.
- Перевести всю логику переключения только на OPS + Python
В следующих статьях расскажем, как мы подружили сервисы Мультисим Резервирования с нашей Облачной АТС, сделали на тех же хуавеях режим L2-over-L3 с помощью x-connect, выложим скрипты переключения SIM-карт на Python и расскажем про USB-Deployment на роутерах.
Благодарю моих коллег из RnD, особенно Дениса Зинченко (Dzinch) и Андрея Воронова в подготовке этих технических решений и помощи написании статьи!
P.S.: Первая часть поста вот здесь.
