Совместное использование strongswan и if_ipsec

Feb 22, 2020 15:32

Во FreeBSD есть удобная фича для организации IPSec туннелей: интерфейс ipsec. Включен в GENERIC ядро, т.е. доступен "из коробки".

Интерфейс ipsec автоматически создает все необходимые политики (SPD) в ядре. Пример конфигурации интерфейса (где x.x.x.x и y.y.y.y - публичные адреса нашего и удалённого роутера соответственно):

cloned_interfaces="ipsec0"
create_args_ipsec0="reqid 100"
ifconfig_ipsec0="inet 192.168.1.1 192.168.1.2 netmask 255.255.255.252 tunnel x.x.x.x y.y.y.y"

Вышеприведенная настройка создаст вот такие записи в SPD:

0.0.0.0/0[any] 0.0.0.0/0[any] any
in ipsec
esp/tunnel/2.2.2.2-1.1.1.1/unique:100
spid=3051 seq=9 pid=12530 scope=ifnet ifname=ipsec0
refcnt=1
::/0[any] ::/0[any] any
in ipsec
esp/tunnel/2.2.2.2-1.1.1.1/unique:100
spid=3053 seq=8 pid=12530 scope=ifnet ifname=ipsec0
refcnt=1
refcnt=1
0.0.0.0/0[any] 0.0.0.0/0[any] any
out ipsec
esp/tunnel/1.1.1.1-2.2.2.2/unique:100
spid=3052 seq=1 pid=12530 scope=ifnet ifname=ipsec0
refcnt=1
::/0[any] ::/0[any] any
out ipsec
esp/tunnel/1.1.1.1-2.2.2.2/unique:100
spid=3054 seq=0 pid=12530 scope=ifnet ifname=ipsec0
refcnt=1

После конфигурации интерфейса останется только обменяться ключами (создать записи в базе SAD). Это можно сделать на статических ключах, как описано в man, или привлечь racoon или strongswan. Чтобы strongswan а) не пытался создавать свои записи в SPD и б) привязывал записи в SAD к нашим ipsec-интерфейсам и созданным ими политикам, мы напишем в ipsec.conf отдельную секцию на каждый ipsec-интерфейс, запретим в ней создание записей в SPD (они у нас уже есть) и дадим ссылку на reqid соответствующего ipsec-интерфейса:

conn ipsec0
left=x.x.x.x
right=y.y.y.y
reqid=100
authby = psk
auto=route
installpolicy = no

Но, повторюсь, может быть вам достаточно будет (в зависимости от вашей модели угроз) сделать всё на статических ключах, как описано в мануале, тогда схема получается железобетонная по надежности и не требует стороннего софта. А на if_ipsec можно использовать протоколы динамической маршрутизации - это полноценный сетевой интерфейс.

Оригинал сообщения находится по адресу https://victor-sudakov.dreamwidth.org/490495.html. Пожалуйста оставляйте комментарии там. Всего сейчас
комментариев.

networks, копилка опыта, unix, security

Previous post Next post
Up