Feb. 22nd, 2020

victor_sudakov: (Default)
Во 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 можно использовать протоколы динамической маршрутизации - это полноценный сетевой интерфейс.

Profile

victor_sudakov: (Default)
Виктор Судаков

December 2024

S M T W T F S
1234567
891011121314
15161718192021
22232425262728
293031    

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Aug. 28th, 2025 10:53 am
Powered by Dreamwidth Studios