Предположим, у меня есть две сети, A и B, на сайтах по обе стороны земного шара. Оба имеют собственный IPv6 и используют (гипотетически) только IPv6. IPv4 больше не существует. Они могут иметь доступ к Интернету изначально как IPv6 и использовать хосты IPv6. Все их IPv6-адреса поддерживают глобальную маршрутизацию. Таким образом, несмотря на правила брандмауэра, каждый хост в сети A может достичь каждого хоста в сети B и наоборот.
Как мне настроить IPSec для защиты трафика между этими двумя сетями?
В мире IPv4 я бы настроил туннель IPSec между двумя брандмауэрами на каждом сайте или использовал туннелирование GRE или подобное.
Но как мне это сделать в мире, где полностью IPv6? Есть ли в IPv6 что-то, что упрощает эту задачу? В идеале я хочу настроить это только на брандмауэрах / маршрутизаторах на каждом сайте. Я не хочу настраивать транспортный режим IPSec на каждом хосте в каждой сети.
FWIW, я использую OpenBSD для моих нужд маршрутизации / межсетевого экрана / ipsec, поэтому любые подробности в этом отношении были бы полезны, но общий ответ на то, как IPv6 / IPSec справляется с этим сценарием, также был бы хорош.
Вы можете использовать тот же метод, что и с IPv4. Я полагаю, что в стеке OpenBSD отсутствует технология VTI / st, так что gre или gif подойдут. И да, есть одна вещь, которая упрощает это - адреса локальной области на интерфейсах (однако вы можете использовать любые адреса). В мире IPv4 вам нужно назначить адреса AF_INET на каждом конце, чтобы маршрутизация работала, но в мире IPv6 маршрутизация отлично работает с использованием адресов локальной области, включая OSPF. Это рабочий рецепт, я использую IPv6 gre на FreeBSd несколько лет.
Устаревшая схема IPSec тоже должна работать, но да, сейчас она устарела из-за проблем с маршрутизацией, которые она вызывает.
Я не тестировал это, но я не вижу разницы между IPv4 и IPv6. Отсутствие частных IP-адресов может сбивать вас с толку, но в остальном все должно быть так же. Я предполагаю, что вы строите туннель с енотом, так что я пропущу это. Остальное можно сделать под Linux с помощью ipsec-tools / setkey.
Наверное, вам нужны две записи SPD, одна входящая и одна исходящая. Что-то вроде этого должно сработать:
spdadd 2a01:1111:2222:3333::/64 2a01:1111:2222:3334::/64 any -P out ipsec
esp/tunnel/2a01:1111:2222:1::1-2a01:1111:2222:1::2/require ;
spdadd 2a01:1111:2222:3334::/64 2a01:1111:2222:3333::/64 any -P in ipsec
esp/tunnel/2a01:1111:2222:1::1-2a01:1111:2222:1::2/require ;
Куда:
p.s. Убедитесь, что вы прошли -6, если используете имена хостов