Здравствуйте!
Данная статья рассматривает пример реализации удаленного доступа для предприятия на основе связки Libreswan/GRE/Quagga + MikroTik.
Предполагается наличие предустановленного Linux дистрибутива, стека iproute2+NetFilter+IPTABLES и поддержки автозагрузки скриптов Runlevel Local.
Техническое задание
Вводные:
Есть некая организация в России. У нее есть сотрудники и офисы разбросанные по соседним городам и странам.
Есть некие внутренние ресурсы опубликованные в публичном облаке (почта, документооборот, unified comms)
Доступ к этим ресурсам разрешен только с публичных адресов этой компании
Проблема:
Удаленные сотрудники не получат доступа к этим ресурсам, не смотря на то, что смогут резолвить их FQDNs
Решение:
Реализация удаленного доступа для сотрудников и маршрутизация их трафика через периметр нашей компании
Проблема:
У компании ограниченная полоса пропускания на внешних каналах и забивать их лишним трафиком не хотелось бы. К тому же, гонять трафик, скажем, из Казахстана в Россию и обратно в Казахстан - дело такое себе (вопросы комплаенса оставим за рамками)
Решение:
Реализовать Split Tunneling и, как следствие, разрешить выход в Интернет как через локального ISP, так и через туннель
Топология
В первой части данной статьи, мы построим Site to Site топологию между головным офисом и филиалом. Во второй - объясним зачем нам понадобился GRE. В третьей - построим Hub and Spoke топологию для доступа с сотовых телефонов и домашних пользователей с динамической адресацией.
Топология представлена двумя зонами: Zone1 (Филиал) и Zone2 (Головной офис)
Каждая из зон имеет подключение к сети Интернет со статическими публичными адресами
Клиентский доступ предполагает возможность выхода в сеть как через ISP1, так и через ISP2
Mikrotik представлен как FW1 и расположен в Zone1, Linux как FW2 и расположен в Zone2
GRE под первую часть статьи - абсолютно избыточен (Но мы его все-таки настроим. Хуже от этого не будет) Так же учтите, что если Ваш провайдер блокирует GRE, то первая группа тестов у вас проходить не будет (Ничего страшного здесь нет, просто продолжайте дальше и как только закончите с IPSec, GRE будет инкапсулирован в IPSec ESP и связь появится)
Забегу вперед и покажу где и зачем GRE может пригодиться (Реализация динамической маршрутизации в Linux базируется на Quagga)
Предположим у вас два офиса и нужно обеспечить связность
Предположим каждый из офисов имеет по два аплинка через разных ISP
Предположим каждый из офисов использует PA (Provider Aggregatable) адреса
Предположим вам необходимо обеспечить отказоустойчивость линков с минимальной сходимостью
Вот здесь GRE и пригодится чтобы обеспечить установку соседства OSPF
Подбор оборудования
Требования Zone1:
Обеспечить динамическую конфигурацию CE интерфейса средствами PPP/DHCP opt. 82
Обеспечить связь в локальной сети средствами IEEE 802.11
Поддержка GRE, IPSec, OSPF, PBR, NAT, Traffic Filtering
Удобство администрирования предполагает наличие GUI
Минимальные финансовые вложения
Требования Zone2:
Поддержка GRE, IPSec, OSPF, NAT, Traffic Filtering
Минимальные финансовые вложения
Выводы:
Исходя из требований выбор "железа" пал на MikroTik RouterOS и стек iproute2/Libreswan/Quagga/IPTABLES. MikroTik и IPTABLES объяснять, думаю, излишне, альтернатив Quaggа насколько я помню нет, а вот выбор Libreswan основывался на сравнении характеристик Libreswan/strongSwan
GRE
MikroTik
Поднимаем GRE интерфейс (Interfaces >> GRE Tunnel)
Назначаем IP адрес (IP >> Addresses)
Прописываем правила фильтрации (IP >> Firewall)
Debian
Подгружаем GRE модуль в ядро
modprobe ip_gre
Проверяем
lsmod | grep gre
Поднимаем GRE интерфейс
ip tunnel add gre1 mode gre local PubIP2 remote PubIP1 ttl 255
ip addr add 10.254.254.254/30 dev gre1
ip link set gre1 up
Выставляем MTU с учетом размера заголовков IP (20 байт), GRE (4 байта), IPSec (64 байта)
ip link set dev gre1 mtu 1412
Проверяем
ifconfig gre1
gre1: flags=209<UP,POINTOPOINT,RUNNING,NOARP> mtu 1412
inet 10.254.254.254 netmask 255.255.255.252 destination 10.254.254.254
Добавляем в автозагрузку (см здесь)
nano -w /etc/rc.local
# GRE
modprobe ip_gre
ip tunnel add gre1 mode gre local PubIP2 remote PubIP1 ttl 255
ip addr add 10.254.254.254/30 dev gre1
ip link set dev gre1 mtu 1412
ip link set gre1 up
Прописываем правила фильтрации (см здесь)
nano -w /etc/iptables/rc.firewall
# GRE
gre_iface="gre1"
remote_peer="PubIP1"
$ipt -A INPUT -i $iface -p 47 -m state --state NEW -s $remote_peer -j ACCEPT
$ipt -A OUTPUT -o $iface -p 47 -m state --state NEW -d $remote_peer -j ACCEPT
$ipt -A INPUT -i $gre_iface -p icmp --icmp-type echo-request -m state --state NEW -j ACCEPT
Проверяем
/etc/iptables/rc.firewall
iptables -nvL
Тестируем
Проверяем (потеря первого пакета ожидаема, поскольку туннелю необходимо время для инициализации)
[username@fw1] > ping address=10.254.254.254 src-address=10.254.254.253 size=1500
SEQ HOST SIZE TTL TIME STATUS
0 10.254.254.254 timeout
1 10.254.254.254 1500 64 2ms488us
2 10.254.254.254 1500 64 1ms829us
3 10.254.254.254 1500 64 1ms883us
4 10.254.254.254 1500 64 1ms931us
5 10.254.254.254 1500 64 1ms953us
sent=6 received=5 packet-loss=16% min-rtt=1ms829us avg-rtt=2ms16us max-rtt=2ms488us
IPSec
MikroTik
Задаем параметры криптографии Phase 1 (IP >> IPSec >> Profiles)
Задаем параметры пира (IP >> IPSec >> Peers)
Генерим сертификаты для IKEv2 аутентификации
> /certificate/
/certificate> add name=root_ca common-name=root_ca key-size=2048 key-usage=key-cert-sign,crl-sign days-valid=3650
/certificate> print
/certificate> sign 0
/certificate> add name=fw1_ike common-name=fw1_ike key-size=2048 days-valid=3650
/certificate> add name=fw2_ike common-name=fw2_ike key-size=2048 days-valid=3650
/certificate> print
/certificate> sign 1 ca=root_ca
/certificate> sign 2 ca=root_ca
Задаем параметры аутентификации для нашего пира (IP >> IPSec >> Identities)
Несколько слов о Notrack Chain:
Все дело в том, что у MikroTik (впрочем у меня есть подозрение что это проблема netfilter) есть серьезные проблемы с трекингом IPSec (желающие попробовать вернуться в Dial-Up эру могут прогнать через FastTrack :) ) Поэтому будем отключать в дальнейшем.
Задаем параметры криптографии Phase 2 (IP >> IPSec >> Proposals)
Описываем SAs (IP >> IPSec >> Policies)
Описываем правила фильтрации IPSec (IP >> Firewall)
Libreswan
Устанавливаем пакет
apt install libreswan
Инициализируем NSS и устанавливаем пароль на доступ к базе
ipsec initnss
certutil -W -d sql:/var/lib/ipsec/nss
Несколько слов о NSS:
NSS есть ничто иное как пользовательская библиотека используемая Libreswan IKE демоном pluto. NSS не обрабатывает IPSec криптографию внутри ядра; за это отвечают NETKEY или KLIPS модули.
Основной плюс использования NSS в том, что для pluto нет необходимости знать о том как работает криптографический шлюз. Pluto не требует доступа к ключам или данным, вместо этого используя PK11 wrapper API независимо от криптографического шлюза. Вся обработка осуществляется через доступ к NSS средствами PK11 интерфейса, тем самым избегая необходимости прямого доступа к ключам шифрования. Все IKE операции осуществляются с использованием NSS. RSA ключи (как чистые RSA, так и X.509 ключи) хранятся внутри NSS и не упоминаются напрямую в /etc/ipsec.secrets. X.509 ключи и сертификаты описываются при помощи их "никнеймов" (вместо их реальных имен) в /etc/ipsec.conf
Задаем пароль подключения к NSS для pluto
touch /etc/ipsec.d/nsspassword
nano -w /etc/ipsec.d/nsspassword
NSS Certificate DB:secret
Включаем Libreswan
systemctl enable ipsec
systemctl status ipsec
Выгружаем сертификаты из MikroTik (System >> Certificates) На выходе получатся 3 PEM пары с защищенными паролем ключами
Загружаем на Libreswan сервер и снимаем защиту
openssl rsa -in root_ca.key_encr -out root_ca.key
openssl rsa -in fw1_ike.key_encr -out fw1_ike.key
openssl rsa -in fw2_ike.key_encr -out fw2_ike.key
Создаем PKCS#12 архивы
openssl pkcs12 -export -in fw1_ike.crt -inkey fw1_ike.key -certfile root_ca.crt -out fw1_ike.p12 -name fw1_ike
openssl pkcs12 -export -in fw2_ike.crt -inkey fw2_ike.key -certfile root_ca.crt -out fw2_ike.p12 -name fw2_ike
Импортируем сертификаты аутентификации IKE в NSS (подробнее можно прочитать здесь)
certutil -A -a -i /home/username/certs/root_ca.crt -d sql:/var/lib/ipsec/nss -n "RootCA" -t 'CT,,'
ipsec import /home/username/certs/fw1_ike.p12
ipsec import /home/username/certs/fw2_ike.p12
Настраиваем IPSec (подробнее здесь)
touch /etc/ipsec.d/fw1-fw2.conf
nano -w /etc/ipsec.d/fw1-fw2.conf
conn fw1-fw2
# Peers
left=PubIP2
right=PubIP1
# Phase 1 Settings
keyexchange=ike
ikev2=insist
ike=aes256-sha256;dh21
ikelifetime=24h
dpddelay=8s
dpdtimeout=32s
dpdaction=clear
fragmentation=yes
# IKEv2 Auth
authby=rsasig
leftcert=fw2_ike
leftid=%fromcert
leftsendcert=always
leftrsasigkey=%cert
rightcert=fw1_ike
rightid=%fromcert
rightca=%same
rightrsasigkey=%cert
# Phase 2 Settings
type=tunnel
phase2=esp
phase2alg=aes256-sha256;dh21
salifetime=12h
rekey=yes
pfs=yes
# SAs
leftsourceip=PubIP2
leftprotoport=gre
rightsourceip=PubIP1
rightprotoport=gre
# Auto Start During Bootup
auto=start
Указываем интерфейс на котором будем слушать трафик (аргумент interfaces оказался устаревшим, работаем через listen) В том же файле при необходимости можно включить дебаги.
nano -w /etc/ipsec.conf
listen=PubIP2
Рестартим сервис
systemctl restart ipsec
systemctl status ipsec
Задаем правила фильтрации
nano -w /etc/iptables/rc.firewall
# IPSec
$ipt -A INPUT -i $iface -p udp -m state --state NEW -s $remote_peer --dport 500 -j ACCEPT
$ipt -A OUTPUT -o $iface -p udp -m state --state NEW -d $remote_peer --dport 500 -j ACCEPT
$ipt -A INPUT -i $iface -p 50 -m state --state NEW -s $remote_peer -j ACCEPT
$ipt -A OUTPUT -o $iface -p 50 -m state --state NEW -d $remote_peer -j ACCEPT
Проверяем
/etc/iptables/rc.firewall
iptables -nvL
Тестируем
Проверяем (та же самая ситуация с первым пакетом)
[username@fw1] > ping address=10.254.254.254 src-address=10.254.254.253 size=1500
SEQ HOST SIZE TTL TIME STATUS
0 10.254.254.254 timeout
1 10.254.254.254 1500 64 3ms69us
2 10.254.254.254 1500 64 2ms865us
3 10.254.254.254 1500 64 2ms861us
4 10.254.254.254 1500 64 2ms918us
5 10.254.254.254 1500 64 2ms944us
sent=6 received=5 packet-loss=16% min-rtt=2ms861us avg-rtt=2ms931us max-rtt=3ms69us
ipsec whack --trafficstatus
Маршрутизация и NAT
MikroTik
Создаем новую таблицу маршрутизации (Routing >> Tables)
Укладываем дефолт для вновь созданной таблицы маршрутизации в туннель (IP >> Routes)
Тегируем необходимый нам трафик для последующей переброски в GRE RT (IP >> Firewall >> Mangle) Здесь пока работаем c туннельным интерфейсом нашего GRE пира
Изолируем наши таблицы маршрутизации (Routing >> Rules)
Описываем трансляцию адресов (IP >> Firewall >> NAT) В данном случае чтобы не утруждаться контролем обратных маршрутов со стороны Libreswan используем NAT через GRE интерфейс MikroTik (Здесь возникнут проблемы с анализом логов, так как все пользователи филиала будут видны с одним сорс адресом. Если для Вас это важно - рекомендуется прибегнуть к маршрутизации)
Описываем фильтрацию (IP >> Firewall)
Тестируем
Проверяем со стороны клиента
ping 10.254.254.254 -l 1500
Pinging 10.254.254.254 with 1500 bytes of data:
Reply from 10.254.254.254: bytes=1500 time=2ms TTL=63
Reply from 10.254.254.254: bytes=1500 time=2ms TTL=63
Reply from 10.254.254.254: bytes=1500 time=3ms TTL=63
Reply from 10.254.254.254: bytes=1500 time=3ms TTL=63
Ping statistics for 10.254.254.254:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 2ms, Maximum = 3ms, Average = 2ms
Заключение
В принципе вот и получился у нас сплит-туннель. Закончить хотелось бы выходом "наружу" :) Тем более у нас с вами остался нерассмотренным вопрос проблемы FastTrack.
Приступим !
Включаем IPv4 форвардинг
nano -w /etc/sysctl.conf
net.ipv4.ip_forward=1
sysctl -p
Задаем правила фильтрации и трансляции адресов
# Stateful rules
$ipt -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
#
# FORWARD
#
# GRE FWD
$ipt -A FORWARD -i $gre_iface -m state --state NEW -j ACCEPT
#
# NAT
#
# OB MASQUERADE
remote_peer_tu="10.254.254.253"
$ipt -t nat -A POSTROUTING -o $iface ! -p 47 -s $remote_peer_tu -j MASQUERADE
Проверяем
iptables -nvL
iptables -nvL -t nat
Тегируем трафик на внешний адрес (IP >> Firewall >> Mangle) Здесь работаем с FQDN null.somedomain.name и задаем две метки: первую - для маршрутизации через GRE RT и вторую - для байпаса FastTrack
Включаем байпас на FastTrack
Проверяем пути от клиента
tracert -d 8.8.8.8
Tracing route to 8.8.8.8 over a maximum of 30 hops
1 <1 ms <1 ms <1 ms 10.10.10.10
2 7 ms 2 ms 11 ms 58.162.26.204
3 1 ms 1 ms 1 ms 203.50.60.72
4 2 ms 2 ms 3 ms 203.50.61.144
5 2 ms 2 ms 1 ms 203.50.11.195
6 3 ms 2 ms 2 ms 142.250.162.28
7 2 ms 2 ms 2 ms 142.250.234.217
8 3 ms 3 ms 2 ms 216.239.59.109
9 2 ms 2 ms 1 ms 8.8.8.8
Trace complete.
tracert -d null.somedomain.name
Tracing route to null.somedomain.name [45.32.236.11]
over a maximum of 30 hops:
1 <1 ms <1 ms <1 ms 10.10.10.10
2 2 ms 2 ms 2 ms 10.254.254.254
3 * * * Request timed out.
4 2 ms 2 ms 2 ms 100.100.200.1
5 11 ms 10 ms 31 ms 10.91.0.1
6 2 ms 2 ms 2 ms 10.91.0.17
7 2 ms 2 ms 2 ms 10.91.0.1
8 80 ms 9 ms 7 ms 67.199.141.33
9 244 ms 244 ms 244 ms 141.136.106.174
10 * * * Request timed out.
На этом все :) Спасибо всем, кто дочитал до конца и по традиции ссылка на внешний ресурс <Project Null> - заглядывайте иногда.
Буду рад ответить на вопросы по теме.
Комментарии (29)
samponet
18.01.2025 17:37Увлекательно было читать, руки зачесались повторить для теста). У вас в начале упомянут DHCP, каких то настроек для него в статье не увидел, или пропустил? Т.з. выглядит отлично, но несколько не понятно зачем такой конфиг сети может быть нужен.
igorv126 Автор
18.01.2025 17:37DHСP ? А, это для автоматической настройки внешнего интерфейса маршрутизатора (Обычный DHCP клиент). У Микротика он из коробки включен, этого как правило и достаточно
Иногда провайдер требует PPP, вот тогда нужно будет перенастроить
Касательно для чего все это нужно ? - Было любопытно посмотреть Libreswan :) Первый раз делал. Ну и может пригодится когда
igorv126 Автор
18.01.2025 17:37Придумал Вам бизнес кейс, смотрите:
Есть некая организация в Москве. У нее есть сотрудники разбросанные по соседним странам.
Есть некие внутренние ресурсы опубликованные в публичном облаке (почта, документооборот, unified comms, что угодно)
Доступ к этим ресурсам разрешен только с публичных адресов этой компанииПроблема:
Удаленные сотрудники не получат доступа к этим ресурсам, не смотря на то, что смогут резолвить их FQDNs
Решение:Реализация удаленного доступа для сотрудников и маршрутизация их трафика через периметр нашей компании
Проблема:
У компании ограниченная полоса пропускания на внешних каналах и забивать их лишним трафиком не хотелось бы. К тому же, гонять трафик, скажем, из Казахстана в Россию и обратно в Казахстан - дело такое себе
Решение:Сплит-туннель позволяющий маршрутизировать лишь определенные блоки в наш с вами туннель
Надеюсь стало понятнее
samponet
18.01.2025 17:37Уже позже я вспомнил, зачем же я gre поднимал для одной организации - по нему широковещательные ходят и как раз в самповской сети надо было связать несколько точек, чтобы была единая сеть для smb
igorv126 Автор
18.01.2025 17:37Кастельно GRE - он под данное ТЗ абсолютно избыточен. Но давайте рассмотрим где и зачем он может пригодиться
Предположим у вас два офиса и нужно обеспечить связность
Предположим каждый из офисов имеет по два аплинка через разных ISP
Предположим каждый из офисов использует PA (Provider Aggregatable) адреса
Предположим вам необходимо обеспечить отказоустойчивость линков с минимальной сходимостью
Вот здесь GRE и пригодится чтобы обеспечить установку соседства OSPF
Olegun
18.01.2025 17:37Неофитам наверняка непонятна схема размещения технических средств. И мне в том числе. Черкните пожалуйста несколько строк или добавьте схему в статью.
igorv126 Автор
18.01.2025 17:37Спасибо ! С удовольствием поправлю !
Только подождите - а что именно непонятно ? Или сложность в том, что неясно что есть FW1 и что есть FW2 ?Olegun
18.01.2025 17:37И так, мне как "начинающему" строителю схем взаимодействия между удаленными офисами непонятно - какой перечень оборудования участвует в схеме? Личные сотовые телефоны сотрудников; ПЭВМ, подключенные к локальной сети филиала; мест(о/а) нахождения серверов с линуксом; мест(о/а) нахождения микротиков?
igorv126 Автор
18.01.2025 17:37Спасибо !
Под личные сотовые телефоны и домашних пользователей придется строить Hub and Spoke топологию (это повод к написанию третьего дополнения к этой статье, второе опишет необходимость использования GRE)
Под ПЭВМ, подключенные к локальной сети филиала подойдет Site to Site топология описанная в данной статье.
Линукс, в данном случае, стоит в головном офисе (Не спрашивайте почему ! Legacy архитектура :) Все таки изначально ТЗ было иным и полностью нераскрыто) Микротик - в филиале
Спасибо еще раз, именно благодаря комментариям изменилось ТЗ и появились идеи дальнейшего развития данной публикации
aladkoi
18.01.2025 17:37Ерунда какая то написана, строить сеть на устаревшем, медленном VPN протоколе, который еще и блокируется провайдером.
igorv126 Автор
18.01.2025 17:37Представьте себе ситуацию - у вас Hub and Spoke для клиентов с динамическим сорсом (что подразумевает, что "наружу" вы будете торчать абсолютно голой жопой :) )
Что вы будете делать ? Аутентификацию по PSK ? А если его скомпроментируют ? А если пользователь уволится ?
В идеале вы хотите следующее (забудем про RSA Secure ID и вендорские решения ибо это дорого и сфокусируемся на OpenSource. Понятно что в нем потенциально большее количество уязвимостей и меньший функционал)
Первый фактор - Аутентификация по сертификату, желательно с проверкой серийника машинного сертификата. Что делать если человек увольняется ? Отзывать сертификаты. Как проверять ? CRL/OSCP. Как менеджерить ? Скажем RADIUS. Не забудьте запретить выгрузку сертификатов.
Второй фактор - допустим LDAP. Здесь вам нужен коннектор к каталогу. Желательно SSO ибо вводить руками пароли, там где этого можно избежать - странно.
Важно чтобы последовательно проверялись ОБА фактора и дабы избежать LDAP Harvesting RADIUS/CERT проверять желательно первым и в случае отказа останавливать все дальнейшие проверки.
Как я это буду реализовывать на Libreswan ? Понятия не имею ! Я его знаю 2 дня :)
Здесь пишут что это возможно. А вы говорите говно ваш ойписек
aladkoi
18.01.2025 17:37Чем не устраивает встроенный в mikrotik новый, быстрый VPN протокол wireguard ? Зачем все эти сложности с GRE ?
igorv126 Автор
18.01.2025 17:37Всем устраивает :) Энтерпрайз только не всегда его поддерживает. Как только появится поддержка у Palo Alto, Fotinet, Check Point, Arista, Cisco и Juniper - можно будет обсуждать. Так что с точки зрения общего развития подрастающего поколения IPSec, в данное время, более интересен.
GRE, как я уже объяснял, необходим в частных случаях. Сложности особой в дополнение к Transport/Tunnel IPSec - не представляет, а вот понимания и практических навыков кому-то и добавит
aladkoi
18.01.2025 17:37Wireguard соединение является одновременно сервером и клиентом. Соединить два микротикс вообще нет проблем, под ubuntu есть готовые docker контейнеры для wireguard с web интерфейсом для генерации конфигурационых файлов для различных клиентов wireguard (windows, android и т.д.) Сам протокол wireguard принципиально отличается от более старых VPN протоколов.
igorv126 Автор
18.01.2025 17:37Я не спорю, решение имеет место быть. На производительность я его не тестировал, подозреваю что он может быть быстрее IPSec.
Свою точку зрения строю исходя из полезности (с точки зрения общего развития и последующего трудоустройства подрастающего поколения) и комплаенса
igorv126 Автор
18.01.2025 17:37Дополню, есть определенные стандарты безопасности
ISO27001 допускает использование Wireguard (подробнее здесь)
PCI-DSS (а это уже банки) требует MFA, и если я еще не совсем retarded, wireguard его не поддерживает
FIPS - там вообще темный лес
Российских ГОСТов я не знаю, подозреваю что будут проблемы
JBFW
Одно время провайдеры нередко блокировали gre-пакеты.
Даже не со зла, чисто по незнанию что это за зверь такой.
Или это другое?
igorv126 Автор
Нет, это именно оно, и если провайдер блокирует GRE, то тесты на определенном этапе у вас проходить не будут
BjLomax
В данном примере идет тройная инкапсуляция UserIP > GRE(47) > AH(51) > ESP(50)
Провайдер увидит только верхний уровень - пакеты протокола ESP
igorv126 Автор
AH не используется
BjLomax
Используется, Вы его просто не видите.
Вот если в "Auth. Algorithms" выбрать None или использовать GCM шифрование, то да - его не будет.
igorv126 Автор
Да, Вы правы. Спасибо !
igorv126 Автор
Впрочем ажжите ! Мы говорим о разном ! AH(51) есть ничто иное как альтернатива ESP (50)
А вот ESP Auth является частью заголовков протокола ESP (50) :)
igorv126 Автор
Authentication Header (AH) protocol is only about authentication (inserts a hash to confirm integrity). Encapsulated Security Protocol (ESP) can be used for either authentication, confidentiality, or both. Their function is a bit different. ESP can take an entire packet (including an AH one), encapsulate it, apply encryption to achieve confidentiality, while also adding its own payload hash to ensure integrity. AH can be used with ESP.
Возникает вопрос - если у ESP есть собственные функции аутентификации и шифрования, для чего необходимо дополнительное использование AH (51) ?
igorv126 Автор
Все, разобрался ! Все как Вы и говорите !
AH я собственно сам и включил и он работает в паре с ESP. GCM AH не поддерживает по умолчанию.
Почаще бы так ! Спасибо еще раз :)