Резервирование каналов связи при помощи пакета «changeroutes»
Документ описывает ряд необходимых процедур, которые нужно выполнить на «С-Терра Шлюз», чтобы реализовать возможность резервирования каналов связи при помощи пакета «changeroutes».
Пакет «changeroutes» предназначен для резервирования каналов связи (Интернет-провайдеров) в режиме основной/резервный.
Сервис changeroutes конфигурируется через файл /etc/changeroutes/changeroutes.ini.
Доступность канала определяется по доступности хостов посредством протокола ICMP. Если доступен хоть один хост, указанный в IP_HOSTS, то канал считается рабочим. Как только все хосты становятся недоступны, то происходит переключение на резервный канал. При восстановлении основного канала происходит обратное переключение.
Сервис changeroutes считает основной канал неработоспособными и производит переключение на резервный канал только в том случае, если он не получил подряд, то количество ICMP ответов, которое указано в переменной FAILURE_PING_COUNT.
Сервис changeroutes произведет переключение на основной канал только в том случае, если он получит подряд, то количество ICMP ответов, которое указано в переменной RESTORE_PING_COUNT.
1. Максимальное количество поддерживаемых интерфейсов: 2 (active/passive);
2. Сервис changeroutes может резервировать произвольные маршруты;
3. Маршруты, которые резервируются при помощи сервиса changeroutes нельзя задавать где-либо еще (они будут удалены сервисом);
4. Состояние резервного канала не отслеживается: при недоступном основном происходит безусловное переключение на резервный;
5. При переключении канала автоматически происходит очистка текущих ISAKMP/IPsec туннелей и таблицы трансляций NAT.
Инженер, планирующий использовать данную инструкцию, должен свободно ориентироваться в настройке базовых сценариев продукта «С-Терра Шлюз» (например, site-to-site IPsec), а также должен знать и понимать следующие технологии и протоколы: PKI, IPsec, NAT, Firewall.
Перед настройкой должно быть выполнено следующее:
1. Шлюз должен быть инициализирован (подробнее на http://doc.s-terra.ru раздел С-Терра Шлюз -> С-Терра Шлюз 4.3 -> «Подключение ПАК и инициализация С-Терра Шлюз на вычислительных системах архитектуры Intel x86-64»).
2. На шлюзе должны быть установлены корневой сертификат УЦ и сертификат устройства.
Исключительно для тестовых целей можно использовать тестовый УЦ от «КриптоПро», веб-интерфейс: https://www.cryptopro.ru/certsrv/certrqxt.asp.
Обновление пакета changeroutes необходимо при выявлении сбоев в работе службы, например, если после переключения на резервный канал и восстановления основного канала не происходит автоматическое восстановление маршрута через основной канал.
1. Перейдите в linux bash (команда system в консоли разграничения доступа S-Terra administrative console):
administrator@sterragate] system
Entering system shell...
2. Проверьте текущую версию пакета changeroutes:
root@sterragate:~# dpkg -l | grep changeroutes
ii changeroutes 3.02~sterra-1 all This software provides redundancy of Internet Service Providers (ISP) in Primary/Backup mode.
Если версия 3.0.2~sterra-1, то требуется обновить пакет changeroutes до версии changeroutes_3.03~sterra-1_all.deb (получить пакет можно на портале документации http://doc.s-terra.ru ->Типовые сценарии применения -> Версия 4.3).
3. Загрузите пакет changeroutes_3.03~sterra-1_all в директорию /root:
Если сеть еще не настроена, то доставить пакет на шлюз можно при помощи USB Flash накопителя. При подключении USB Flash накопителя он будет автоматически смонтирован в директорию /media/<ID>.
Пакет changeroutes_3.03~sterra-1_all уже содержит в себе все необходимое для успешной установки на криптошлюзы классов KC1/KC2/KC3, а также СофтМДЗ KC1/KC2/KC3 (за исключением пересчета хешей в АПМДЗ), поэтому процедура обновления для всех классов СКЗИ одинакова.
4. Обновите пакет:
root@sterragate:~# dpkg -i changeroutes_3.03~sterra-1_all.deb
(Reading database ... 25145 files and directories currently installed.)
Preparing to unpack changeroutes_3.03~sterra-1_all.deb ...
Verifying links...
Completed
Unpacking changeroutes (3.03~sterra-1) over (3.03~sterra-1) ...
Setting up changeroutes (3.03~sterra-1) ...
Creating new links hashes list...
Completed
#####################################################################################################
# ATTENTION: you must recalculate the hashes in the trusted startup hardware module (if using one). #
#####################################################################################################
Выше представлен пример вывода обновления пакета для класса СофтМДЗ КС1. Для классов KC2/КС3 вывод будет отличаться.
В случае если на момент установки были внесены изменения в конфигурации или скрипты changeroutes, при обновлении появится диалог, предлагающий их обновить на те, что поставляются в пакете. Для правильной работы сценария на все вопросы необходимо ответить положительно, предварительно сохранив (если требуется) измененные конфигурации или скрипты.
Диалог может выглядеть следующим образом:
Configuration file '/etc/changeroutes/changeroutes.ini'
==> Modified (by you or by a script) since installation.
==> Package distributor has shipped an updated version.
What would you like to do about it ? Your options are:
Y or I : install the package maintainer's version
N or O : keep your currently-installed version
D : show the differences between the versions
Z : start a shell to examine the situation
The default action is to keep your current version.
*** changeroutes.ini (Y/I/N/O/D/Z) [default=N] ? Y
В результате обновления статус автозагрузки сервиса переходит в disable, а сам сервис будет остановлен. Запустите сервис changeroutes, а также добавьте его в автозагрузку в соответствии с указаниями в пункте 5 раздела Общий алгоритм настройки сервиса changeroutes настоящей инструкции.
5. Перейдите обратно в консоль разграничения доступа S-Terra administrative console:
root@sterragate:~# exit
logout
Leaving system shell...
administrator@sterragate]
Если у Вас «С-Терра Шлюз» с АПМДЗ, то не забудьте после обновления пакета пересчитать хеш суммы. Описание процедуры смотрите в документации производителя АПМДЗ.
При конфигурировании сервиса changeroutes нужно обязательно соблюдать следующие правила:
1) Все параметры должны быть представлены в конфигурационном файле.
2) Значения всех параметров должны быть указаны в двойных кавычках.
3) Нельзя использовать пробелы между параметром, знаком равно и
значением параметра (только так: MAIN_INTERFACE="eth0"
и никак иначе).
4) Строки с параметрами не должны содержать пробелов ни в начале,
ни в конце.
5) Нельзя использовать комментарий на той же строке, где задан
параметр.
6) Периоды PING_INTERVAL и RESTORE_PING_INTERVAL не должны превышать половины значения опции WatchdogSec, заданного в файле службы Systemd (/lib/systemd/system/changeroutes.service) и по умолчанию равного 60 секунд.
Настройка сервиса changeroutes осуществляется через файл /etc/changeroutes/changeroutes.ini.
1. Определите маршруты, которые требуется резервировать, в данном случае задается маршрут по умолчанию:
RESERVE_ROUTES="0.0.0.0/0"
Если требуется резервировать произвольные маршруты, то укажите их через пробел (указание маски обязательно, даже для маршрутов к хостам):
RESERVE_ROUTES="192.168.100.0/24 1.1.1.1/32 8.8.8.8/32"
2. Определите IP адреса хостов по доступности которых будет определяться доступность канала и укажите их через пробел (важно: доступность хостов проверяется только через основной канал):
IP_HOSTS="1.1.1.1 8.8.8.8"
Для хостов, которые заданы в IP_HOSTS должен быть маршрут в RESERVE_ROUTES.
3. Укажите имена сетевых интерфейсов в linux нотации для основного и резервного каналов (чтобы посмотреть имена интерфейсов воспользуйтесь командой ip address show в Linux bash):
MAIN_INTERFACE="eth0"
BACKUP_INTERFACE="eth1"
4. Укажите адреса шлюзов по умолчанию для основного и резервного каналов если адреса на устройстве указаны статически:
MAIN_GATEWAY="172.16.15.1"
BACKUP_GATEWAY="172.16.16.1"
В случае, если устройство получает на каком-либо из интерфейсов адреса по DHCP, это следует указать в конфигурации:
MAIN_INTERFACE_DHCP="true"
BACKUP_INTERFACE_DHCP="true"
Для корректной работы changeroutes время аренды адреса (lease time), выданного по DHCP должно быть не меньше 1 часа.
Адреса шлюзов по умолчанию для таких интерфейсов указывать не нужно.
5. Запустите сервис changeroutes, а также добавьте его в автозагрузку:
root@sterragate:~# systemctl start changeroutes.service
root@sterragate:~# systemctl enable changeroutes.service
Посмотреть лог работы сервиса можно в файле /var/log/cspvpngate.log:
root@sterragate:~# tail -n 1000 /var/log/cspvpngate.log | grep changeroutes
Jun 21 16:58:17 sterragate changeroutes: INFO: starting service ...
Jun 21 16:58:19 sterragate changeroutes: INFO: LSP was reloaded.
Jun 21 16:58:19 sterragate changeroutes: INFO: all NAT translations were deleted.
Jun 21 16:58:19 sterragate changeroutes: INFO: switched to main interface "eth1".
Jun 21 16:58:19 sterragate changeroutes: INFO: service was started (PID=30842).
Перед началом настройки IKE/IPsec шлюз должен быть инициализирован, должны быть выпущены и установлены сертификаты.
1. Параметры IKE/IPsec (предположим, что шлюз, на котором настраивается резервирование каналов, защищает взаимодействие между локальной подсетью 192.168.20.0/24 и удаленной 192.168.1.0/24; и имеет внешний IP-адрес 172.16.15.2/24 на основном канале и 172.16.16.2/24 - на резервном):
Количество крипто-карт должно соответствовать количеству внешних интерфейсов (отличие между крипто-картами должно быть только в значении параметра local-address) и в них должна присутствовать опция set dead connection history off.
В случае, если маршрутизатор, использующий changeroutes, выступает в схеме только в качестве инициатора и получает сетевые параметры по DHCP, допускается отсутствие параметра local-address в крипокартах.
Во всех остальных случаях использование параметра local-address обязательно.
crypto ipsec df-bit clear
crypto isakmp identity dn
crypto isakmp session-time-max 10
crypto isakmp keepalive 3 3
crypto isakmp keepalive retry-count 3
!
crypto isakmp policy 1
encr gost
hash gost341112-256-tc26
authentication gost-sig
group vko2
!
crypto ipsec transform-set GOST esp-gost28147-4m-imit
!
ip access-list extended hub_spoke
permit ip 192.168.20.0 0.0.0.255 192.168.1.0 0.0.0.255
!
crypto map ISP1 1 ipsec-isakmp
match address hub_spoke
set transform-set GOST
set dead-connection history off
set local-address 172.16.15.2
set peer 172.16.10.2
!
crypto map ISP2 1 ipsec-isakmp
match address hub_spoke
set transform-set GOST
set dead-connection history off
set local-address 172.16.16.2
set peer 172.16.10.2
!
2. Прикрепление крипто-карт к интерфейсам:
interface GigabitEthernet1/1
ip address 172.16.15.2 255.255.255.0
crypto map ISP1
!
interface GigabitEthernet1/2
ip address 172.16.16.2 255.255.255.0
crypto map ISP2
Программные сторожевые таймеры служб, управляемых Systemd, предназначены для контроля работоспособности и автоматического перезапуска контролируемых служб средствами Systemd, если служба не подтвердила свою работоспособность в течение периода контроля. В соответствии с рекомендациями Разработчика Systemd контролируемая служба должна подтверждать свою работоспособность не реже половины периода контроля, настроенного в файле контролируемой службы Systemd.
1. Для сервиса changeroutes.service реализована возможность контроля посредством сторожевого таймера Systemd.
2. По умолчанию контроль включен с периодом контроля 60 секунд. Поведение службы по умолчанию предусматривает автоматический перезапуск службы changeroutes.service средствами Systemd, если в течение 60 секунд служба changeroutes.service не подтвердит свою работоспособность путем посылки уведомления процессу Systemd.
3. При необходимости программный сторожевой таймер Systemd для службы changeroutes.service может быть отключен или настроен другой период контроля.
Запрещается изменение настроек службы changeroutes.service без согласования с Разработчиком «С-Терра Шлюз». Некорректное изменение настроек службы changeroutes.service может привести к неработоспособности «С-Терра Шлюз» и потребовать выполнения процедуры восстановления. Для получения инструкции по отключению сторожевого таймера changeroutes.service и изменению периода контроля службы необходимо обратиться в техническую поддержку Разработчика «С-Терра Шлюз».
1. Сообщение о попытке запуска сервиса changeroutes:
changeroutes: INFO: starting service ...
2. При попытке changeroutes перезагрузить LSP (политику безопасности) было обнаружено, что процесс vpnsvc (сервис vpngate) не был запущен и, соответственно, перезагрузка LSP не требуется:
changeroutes: INFO: No need to reload LSP, because "vpnsvc" not started.
3. Сервису changeroutes удалось перегрузить LSP:
changeroutes: INFO: LSP was reloaded.
4. Записи из таблицы NAT трансляций удалены:
changeroutes: INFO: all NAT translations were deleted.
5. Сообщение о переключении маршрутов через основной интерфейс:
changeroutes: INFO: switched to main interface "{основной интерфейс}"..
6. Сервис changeroutes сообщает о старте попытки получить адрес шлюза по умолчанию по DHCP для описанных интерфейсов:
changeroutes: INFO: trying to obtain gateway IP from DHCP for interfaces "{основной интерфейс}", "{запасной интерфейс}" ...
7. Для интерфейса удалось получить адрес шлюза по умолчанию по DHCP:
changeroutes: INFO: the gateway IP from DHCP for interface "{интерфейс}" is "{маршрут}".
8. Для интерфейса не удалось получить адрес шлюза по умолчанию по DHCP:
changeroutes: INFO: can not obtain gateway IP from DHCP for interface "{интерфейс}".
9. Сообщение о старте сервиса changretoutes с указанием PID:
changeroutes: INFO: service was started (PID={Номер PID}).
10. Оповещение о старте перезапуска конфигурации changeroutes:
changeroutes: INFO: reloading service configuration ...
11. Оповещение об успешном перезапуске конфигурации changeroutes:
changeroutes: INFO: configuration reloading was successfully completed.
12. Во время работы changeroutes был получен адрес шлюза по умолчанию по DHCP, но в конфигурации changeroutes для интерфейсов не установлены флаги для получение адреса шлюза по умолчанию по DHCP. Changeroutes выводит сообщение о том, что адрес шлюза по умолчанию, полученный по DHCP, игнорируется:
changeroutes: INFO: no need to get new gateway IP from DHCP, because DHCP is not configured in changeroutes config.
13. Во время работы через резервный интерфейс changeroutes продолжает отправлять пинг запросы через основной интерфейс до устройств, указанных в IP_HOSTS в конфигурационном файле /etc/changeroutes/changeroutes.ini. Если были получены пинг ответы от любого из указанных устройств, то changeroutes выводит данное сообщение перед стартом процедуры перехода на основной интерфейс:
changeroutes: INFO: link through main interface "{основной интерфейс}" is reachable again.
14. Сообщение о прекращении работы сервиса changeroutes:
changeroutes: INFO: service was stopped.
15. Сообщения об успешном уведомлении сервисом changeroutes.service процесса Systemd об изменении состоянии службы:
changeroutes: INFO: ending message READY to systemd was successeful (WatchdogSec={WatchdogSec} seconds).
changeroutes: INFO: sending message RELOADING to systemd was successeful.
1. Файл /etc/iproute2/rt_protos отсутствует и не удалось создать новый файл:
changeroutes: WARNING: can not create the file "/etc/iproute2/rt_protos".
2. Если в файле /etc/iproute2/rt_protos нет записи о соответствии номера протокола 27 с changeroutes, будет совершена попытка добавить соответствие. Если сервису changeroutes не удалось добавить данную запись, то будет выведено данное сообщение:
changeroutes: WARNING: can not write to the file "/etc/iproute2/rt_protos".
3. Если в таблице маршрутизации есть маршруты до подсетей, указанных в RESERVE_ROUTES в /etc/changeroutes/changeroutes.ini, и их номер протокола не соответствует changeroutes, будет совершена попытка удаления данных маршрутов из таблицы маршрутизации. После успешного удаления выводится сообщение:
changeroutes: WARNING: foreign route "{запись из таблицы маршрутизации}" was deleted from the routing table.
4. Интерфейс находится в состоянии shutdown:
changeroutes: WARNING: the interface "{название интерфейса}" is shutdown.
5. Не удалось найти интерфейс с данным названием:
changeroutes: WARNING: the interface "{название интерфейса}" not found in system.
6. Сообщение о переключении работы через резервный интерфейс:
changeroutes: WARNING: switched to backup interface "{запасной интерфейс}".
7. Возникли проблемы, при удалении записей из таблицы NAT трансляций:
changeroutes: WARNING: NAT translations were not deleted, details: {Детали ошибки}.
8. Во время работы через основной интерфейс, changeroutes не удалось получить пинг ответы от устройств, указанных в IP_HOSTS в конфигурационном файле /etc/changeroutes/changeroutes.ini. Changeroutes выводит данное сообщение перед стартом процедуры перехода на резервный интерфейс:
changeroutes: WARNING: link through main interface "{основной интерфейс}" is not reachable.
9. Сервис changeroutes запущен не под управлением Systemd или запущен под управлением Systemd, но сторожевой таймер отключен (опция WatchdogSec= в файле службы отсутствует или значение опции равно нулю):
changeroutes: WARNING: service changeroutes.service isn't started from systemd or watchdog times is disabled (WatchdogSec is zero or absent in the systemd unit file).
10. Возникли проблемы при уведомлении сервисом changeroutes.service процесса Systemd об изменении состоянии службы:
changeroutes: WARNING: sending message READY to systemd returned non-zero failure code.
changeroutes: WARNING: sending message RELOADING to systemd returned non-zero failure code.
1. Сообщения о некорректных значениях настроек RESTORE_PING_INTERVAL или PING_INTERVAL в конфигурационном файле /etc/changeroutes/changeroutes.ini:
changeroutes: ERROR: value of option RESTORE_PING_INTERVAL must be less WatchdogSec/2 in the systemd unit file.
changeroutes: ERROR: value of option PING_INTERVAL must be less WatchdogSec/2 in the systemd unit file.