Назад | Перейти на главную страницу

IPv6 IPsec между двумя собственными сетями IPv6

Предположим, у меня есть две сети, 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 ;

Куда:

  • 2a01: 1111: 2222: 3333 :: / 64 ваша локальная сеть
  • 2a01: 1111: 2222: 3335 :: / 64 - ваша удаленная сеть
  • 2a01: 1111: 2222: 1 :: 1 - ваша локальная конечная точка
  • 2a01: 1111: 2222: 1 :: 2 - ваша удаленная конечная точка

p.s. Убедитесь, что вы прошли -6, если используете имена хостов