Общая логика работы

1.    Размещение устройств.

1.1.     В центральном офисе размещаются: центр выпуска сертификатов (Certification_authority), криптошлюз С-Терра Шлюз (Hub1), управляемый коммутатор (Int_switch1_Hub1) и персональные компьютеры (host0-behind-hub1 и host1-behind-hub1).

1.2.     В филиале размещаются: криптошлюз С-Терра Шлюз (Spoke1), управляемый коммутатор (Int_switch1_Spoke1) и персональные компьютеры (host0-behind-spoke1 и host1-behind-spoke1).

1.3.     В неконтролируемом сегменте (синее облако на схеме) размещаются: HTTP сервер для распространения списка отозванных сертификатов (CRL_distribution_point), маршрутизатор (Router1).

2.    Подключение к сети Интернет.

      В данном сценарии для эмуляции сети Интернет используются маршрутизатор Router1.

Подключение к сети Интернет на устройствах С-Терра Шлюз будет считаться успешным, если по протоколу ICMP (или «ping») будет доступен HTTP сервер для распространения списка отозванных сертификатов (устройство CRL_distribution_point на схеме).

2.1.     Криптошлюз Hub1 подключается к сети Интернет с помощью статической маршрутизации (маршрут по умолчанию через маршрутизатор Router1).

2.2.     Криптошлюз Spoke1 подключается к сети Интернет с помощью статической маршрутизации (маршрут по умолчанию через маршрутизатор Router1).

3.    L2 VPN.

Общие сведения

L2 VPN реализуется при помощи модуля «С-Терра L2», который требует отдельной лицензии.

Основная задача данного модуля – перехват фреймов и упаковка их в пакеты UDP для последующего шифрования при помощи С-Терра VPN. После перехвата и инкапсуляции фреймов в UDP модулем «С-Терра L2» получившиеся пакеты маршрутизируются в соответствии с глобальной таблицей маршрутизации. Соответственно, чтобы инкапсулированные пакеты были зашифрованы (помимо наличия правил шифрования на WAN интерфейсе) в таблице маршрутизации должен быть соответствующий маршрут (достаточно одного маршрута по умолчанию) через нужный WAN интерфейс, к которому прикреплена крипто-карта.

За работу модуля «С-Терра L2» отвечает сервис l2svc. По умолчанию данный сервис выключен и не добавлен в автозапуск:

root@sterragate:~# systemctl status l2svc

   l2svc.service - S-Terra L2 Tunneling Service

   Loaded: loaded (/lib/systemd/system/l2svc.service; disabled; vendor preset: e

   Active: inactive (dead)

Конфигурационные файлы и файл с лицензией должны располагаться в директории /opt/l2svc/etc/. Конфигурационные файлы обязательно должны иметь расширение .conf (например to_spoke1.conf). Файл с лицензией должен обязательно называться l2.lic.

Принцип работы модуля «С-Терра L2»

Рассмотрим принцип работы модуля на примере конфигурационного файла:

vif tap0

local 172.16.100.2

remote 172.16.1.2

port 50000

capture eth1

bridge br0

bridge_ip 192.168.100.1/24

mssfix 1400

passtos

·         vif <NAME> – параметр определяет имя виртуального туннельного интерфейса, который будет создан. Имя должно быть уникальным во всех конфигурационных файлах. Длина имени должна быть не более 15 символов. Фреймы с данного интерфейса инкапсулируются в UDP.

·         local <IP> – параметр определяет локальный IP адрес для инкапсулированных пакетов. Как правило, локальный IP адрес указывается такой же, как IP адрес на WAN интерфейсе С-Терра Шлюз, но если WAN интерфейсов несколько, то нужно создать loopback интерфейс и назначить на него какой-то третий произвольный IP адрес, который будет использоваться в качестве локального IP адреса (процедура создания loopback интерфейсов описана на сайте doc.s-terra.ru -> С-Терра Шлюз > С-Терра Шлюз 4.3 > Настройка шлюза > Общие настройки шлюза > Работа с интерфейсами > Добавление и удаление сетевых интерфейсов > Добавление и удаление виртуальных сетевых интерфейсов > Loopback интерфейсы).

·         remote <IP> - параметр определяет IP адрес партнера по L2 туннелю. Данный IP адрес будет является адресом назначения для инкапсулированных пакетов.

·         port <PORT> - параметр одновременно определяет номер UDP порта источника (src) и назначения (dst) инкапсулированных пакетов.

·         capture <NAME> - параметр определяет имя существующего интерфейса, на котором будет происходить захват фреймов.

·         bridge <NAME> - параметр определяет имя интерфейса виртуального коммутатора (linux kernel bridge). Имя может быть одинаковым в нескольких конфигурационных файлах. Длина имени должна быть не более 15 символов. Виртуальный коммутатор используется для объединения в L2 мост виртуального туннельного интерфейса (определяется параметром vif <NAME>) и сетевого интерфейса, с которого происходит захват фреймов (определяется параметром capture <NAME>).

·         bridge_ip <IP/MASK> - параметр определяет локальный IP адрес для интерфейса виртуального коммутатора, который задается параметром bridge <NAME>. Используется для L3 связности между устройствами в LAN сегменте и С-Терра Шлюз через интерфейс захвата фреймов (например, применимо для цели управления С-Терра Шлюз).

·         mssfix <VALUE> - параметр выставляет значение MSS в TCP пакетах. При включении данной опции поле MSS всех проходящих через туннель TCP пакетов будет выставлено в <VALUE>, если текущее значение MSS в пакете больше <VALUE>. Применимо для пакетов протокола IPv4, которые вкладываются в Ethernet/802.1Q/QinQ. Для MPLS не работает.

·         passtos – параметр включает копирование ToS байта из исходного пакета в инкапсулированный. Применимо для пакетов протокола IPv4, которые вкладываются в Ethernet/802.1Q/QinQ. Для MPLS копирование не работает.

После того, как сервис l2svc будет запущен с данным конфигурационным файлом, будут созданы интерфейсы vif <NAME> и bridge <NAME>, далее интерфейсы vif <NAME> и capture <NAME> будут добавлены в виртуальный коммутатор bridge <NAME>. На интерфейсе bridge <NAME> будет  назначен IP адрес, указанный в параметре bridge_ip, например:

root@Hub1:~# ip address show

...

3: eth1: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br0 state UP group default qlen 1000

    link/ether 00:50:56:9e:67:4d brd ff:ff:ff:ff:ff:ff

14: tap0: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br0 state UNKNOWN group default qlen 1000

    link/ether ca:f5:a9:b7:e5:35 brd ff:ff:ff:ff:ff:ff

15: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000

    link/ether 00:50:56:9e:67:4d brd ff:ff:ff:ff:ff:ff

    inet 192.168.100.1/24 scope global br0

       valid_lft forever preferred_lft forever

root@Hub1:~# brctl show br0

bridge name     bridge id               STP enabled     interfaces

br0             8000.0050569e674d       no              eth1

                                                        tap0

Накладные расходы (overhead) L2 VPN

Так как оригинальный фрейм инкапсулируется в UDP, то минимальные накладные расходы инкапсуляции L2 – это 28 (20 IP+ 8 UDP) байт. Если используется параметр fragment <N> в конфигурационном файле модуля «С-Терра L2», то добавляется еще 4 байта. Не стоит забывать про накладные расходы инкапсуляции IPsec, которые для туннельного режима могут составлять от 50 до 60 байт (зависит от алгоритма шифрования и наличия NAT).

Рисунок 2. Накладные расходы (overhead) L2 + IPsec

Рисунок (см. рисунок 2) показывает минимальный и максимальный размер накладных расходов при организации L2 VPN для оригинального нетегированного, 802.1 Q и QinQ фрейма. Если шифруется MPLS, то размер оригинального фрейма может варьироваться в зависимости от количества меток в стеке, учитывайте это.

Из рисунка (см. рисунок 2) видно, что с учетом размера оригинального фрейма, а также L2 и IPsec инкапсуляций результирующий пакет может иметь размер от 1592 до 1614 байт. Если MTU на WAN интерфейсе С-Терра Шлюз имеет значение в 1500 байт (по умолчанию), то инкапсулированные пакеты будут фрагментированы, что в свою очередь приведет к снижению производительности (до 15 %). Соответственно, при наличии возможности, заказывайте нужный вам MTU у вашего провайдера на каналообразующем оборудовании, чтобы избежать фрагментации и снижения производительности.

Фрагментация, MTU и DF бит

По умолчанию размер MTU для всех интерфейсов модуля «С-Терра L2» - 1500 байт. Размер MTU можно увеличить при помощи параметра tun_mtu <N> в конфигурационном файле модуля «С-Терра L2». Например, увеличение tun_mtu используется для случая, когда MTU устройств в LAN сегменте – 9000 байт, а MTU интерфейса WAN С-Терра Шлюз – 1500 байт. В этом случае большие пакеты будут фрагментированы драйвером С-Терра VPN (фрагментация пакетов происходит после зашифрования).

DF (don’t fragment) бит с исходных пакетов на инкапсулированные не переносится (не настраивается). Используется для того, чтобы большие пакеты могли быть фрагментированы драйвером С-Терра VPN.

Если требуется выполнять фрагментацию в самом модуле «С-Терра L2» до зашифрования (используется в случае, если каналообразующее оборудование блокирует фрагментированные пакеты), то нужно использовать параметр fragment <N> в конфигурационном файле (все пакеты, большие N байт будут фрагментированы). Данный параметр добавляет дополнительные 4 байта и должен быть включен на обеих сторонах туннеля.

Защита 802.1Q трафика

Если нужно зашифровать тегированный 802.1Q трафик, то рекомендуется на каждый VLAN ID создавать отдельный конфигурационный файл модуля «С-Терра L2» и логический 802.1Q интерфейс, а с точки зрения политики безопасности IPsec туннель, - такой подход позволяет лучше контролировать защищаемый трафик (маппирование VLAN ID в IPsec туннель). Но, если топология точка-точка и трафика с различными VLAN ID больше 10, то рекомендуется настраивать один конфигурационный файл и не создавать 802.1Q интерфейсы – это позволит увеличить производительность шифрования (общее правило – чем меньше конфигурационных файлов модуля «С-Терра L2» и IPsec туннелей, тем выше производительность).

Управление С-Терра Шлюз через интерфейс захвата пакетов

Управление С-Терра Шлюз, начиная с версии 4.3, возможно через тот интерфейс, на котором происходит захват фреймов, для этого нужно задать параметр bridge_ip <IP>/<MASK> в конфигурационном файле модуля «С-Терра L2». Если данный вариант по какой-то причине не подходит – используйте выделенный сетевой интерфейс.

Пропуск фреймов протоколов LACP/LLDP

По умолчанию фреймы протоколов LACP/LLDP будут уничтожены. Чтобы они могли пройти через С-Терра Шлюз (требуется в сценарии балансировки нагрузки и резервировании при помощи внешнего коммутатора) нужно в соответствующем файле конфигурации модуля «С-Терра L2» добавить параметр group_fwd_mask со значением 16388, пример:

group_fwd_mask 16388

Копирование ToS байта из оригинального пакета в инкапсулированный

Копирование ToS байта из оригинального пакета в инкапсулированный (и, соответственно, в  ESP/NAT-Т пакеты – поведение С-Терра VPN по умолчанию) включается при помощи параметра passtos в конфигурационном файле модуля «С-Терра L2». Применимо для пакетов протокола IPv4, которые вкладываются в Ethernet/802.1Q/QinQ. Для MPLS копирование не работает.

Производительность

В модуле «С-Терра L2» есть возможность выделить определенное количество ядер под инкапсуляцию фреймов в UDP, настраивается при помощи параметра L2VPN_CORE_COUNT в файле /opt/l2svc/etc/global.cfg. По умолчанию используется только одно последнее ядро. Подробнее смотрите на сайте doc.s-terra.com -> С-Терра L2 -> С-Терра L2 4.3-> Руководство администратора -> Настройка Продукта -> Общие настройки.

4.    Параметры безопасного взаимодействия.

Весь трафик (на уровне 2 модели OSI) подсетей 192.168.100.0/24 и 192.168.101.0/24, который передается между центром и филиалом, защищается с использованием алгоритмов ГОСТ и протокола IPsec в туннельном режиме.

Инициировать защищенное соединение может как трафик из филиала в центр, так и наоборот, из центра в филиал.

4.1.     Параметры протокола IKE:

·         Аутентификация при помощи цифровых сертификатов, алгоритм подписи – ГОСТ Р 34.10-2012 (ключ 256 бит);

·         Алгоритм шифрования – ГОСТ 28147-89 (ключ 256 бит);

·         Алгоритм вычисления хеш-функции – ГОСТ Р 34.11-2012 ТК26 (ключ 256 бит);

·         Алгоритм выработки общего ключа (аналог алгоритма Диффи-Хеллмана) – VKO_GOSTR3410_2012_256 (ключ 256 бит).

4.2.     Параметры протокола ESP:

·         Комбинированный алгоритм шифрования и имитозащиты (контроль целостности) – ESP_GOST-4M-IMIT (ключ 256 бит).