Предположите, что у меня есть две сети, A и B, на сайтах любая сторона земного шара. Оба имеют собственный IPv6 и используют (гипотетически) просто IPv6. IPv4 больше не существует. Они могут и получить доступ к Интернету исходно как к IPv6 и использовать хосты IPv6. Их адреса IPv6 все глобально routable. Так, несмотря на правила брандмауэра, каждый хост в сети A может достигнуть каждого хоста в сети B и наоборот.
Как я настроил бы IPSec для обеспечения трафика между теми двумя сетями?
В мире IPv4 я создал бы туннель IPSec между двумя брандмауэрами на каждом сайте или использовал бы Туннелирование GRE или подобный.
Но как я сделал бы это в мире все-IPv6? Действительно ли там что-то внутренне в IPv6, который делает это легче? Идеально я хочу настроить это только на брандмауэрах/маршрутизаторах на каждом сайте. Я не хочу должным быть настраивать способ транспортировки IPSec на каждом хосте в каждой сети.
FWIW, я использую OpenBSD для своих потребностей routing/firewalling/ipsec, таким образом, любые специфические особенности с этим были бы полезны, но общий ответ на то, как IPv6 / соглашение IPSec с этим сценарием также будет хорош.
Вы можете использовать точно такую же технику, как и IPv4. Я думаю, что в OpenBSD не хватает технологии VTI/st, так что gre или gif было бы просто отлично. И да, есть одна вещь, которая делает это проще - адреса локального scope на интерфейсах (однако, вы можете использовать любые адреса). В мире IPv4 вам нужно назначать AF_INET адреса на каждом конце, чтобы маршрутизация работала, но в мире IPv6 маршрутизация работает просто отлично, используя адреса локального scope, включая 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, если вы используете имена хостов
.