Привет! Как и обещал, в этом посте я расскажу про комбинацию наших сервисов 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.: Первая часть поста вот здесь.