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

IPSec + IKEv2 с предварительным общим ключом между Open vSwitch и pfSense

У меня есть простая сеть, состоящая из виртуальной машины на базе Open vSwitch Ubuntu Server, подключенной к брандмауэру pfSense. Я хотел бы соединить эти два с помощью безопасного туннеля IPSec + IKEv2.

{10.2.2.0/24}----.1[pfSense visible.2---10.0.0.0/24---.1[OvS visible.1----{10.1.1.0/24}

Для этого я настроил Open vSwitch после этого руководство для базовой настройки Pre-Shared Key (GRE over IPSec + IKEv2 с PSK). Это позволило мне получить следующую конфигурацию на виртуальной машине Open vSwitch:

$ cat ipsec.conf
# Generated by ovs-monitor-ipsec...do not modify by hand!


config setup
    uniqueids=yes

conn %default
    keyingtries=%forever
    type=transport
    keyexchange=ikev2
    auto=route
    ike=aes256gcm16-sha256-modp2048
    esp=aes256gcm16-modp2048

conn tun-1
    left=0.0.0.0
    right=10.0.0.2
    authby=psk
    leftprotoport=gre
    rightprotoport=gre

$ sudo cat ipsec.secrets
# Generated by ovs-monitor-ipsec...do not modify by hand!

0.0.0.0 10.0.0.2 : PSK "swordfish"
$

Затем я настроил pfSense следующим образом:

ФАЗА 1:

Key Exchange Version: IKEv2
Internet Protocol: IPv4
Interface: WAN
Remote Gateway: 10.0.0.1    <---- this is the address of the physical interface right?
Authentication Method: Mutual PSK
My identifier: My IP address
Peer identifier: Peer IP address
Pre-Shared Key: swordfish
Encryption Algorithm: AES256-GCM, 128 bit Key length, SHA-256 Hash, 14 (2048 bit) DH Group
Lifetime (Seconds): 28800
Dead Peer Detection: Enabled

ФАЗА 2:

Mode: Tunnel IPv4
Local Network: Type Address, 10.2.2.1    <---- this is the LAN interface address of pfSense
NAT/BINAT translation: None
Remote Network: Type Network, Address 10.1.1.0/24
Protocol: ESP
Encryption Algorithms: AES256-GCM Auto
Hash Algorithms: none of them
PFS key group: 14 (2048 bit)
Lifetime: 3600.

В pfSense я использую интерфейс IPSec Status для активации соединения, он говорит, что работает, и OvS говорит, что тоже все в порядке:

$ sudo ovs-appctl -t ovs-monitor-ipsec tunnels/show
Interface name: tun v1 (CONFIGURED)
  Tunnel Type:    gre
  Remote IP:      10.0.0.2
  SKB mark:       None
  Local cert:     None
  Local name:     None
  Local key:      None
  Remote cert:    None
  Remote name:    None
  CA cert:        None
  PSK:            swordfish
  Ofport:         1
  CFM state:      Disabled
Kernel policies installed:
  src 10.0.0.1/32 dst 10.0.0.2/32 proto gre
  src 10.0.0.1/32 dst 10.0.0.2/32 proto gre
Kernel security associations installed:
IPsec connections that are active:
  tun-1[1]: ESTABLISHED 16 minutes ago, 10.0.0.1[10.0.0.1]...10.0.0.2[10.0.0.2]
  tun-1{1}:   10.0.0.1/32[gre] === 10.0.0.2/32[gre]

$

Даже в этом случае я не могу пропинговать туннельный IP-адрес двух хостов. Очевидно, что я разрешил трафик в каждом направлении на pfSense, а OvS на физическом интерфейсе можно проверить. Использование tcpdump с обеих сторон не показывает никаких зашифрованных пакетов ESP, а только иногда UDP-пакеты IKEv2 на порте 500.

Итак, вся ли процедура правильная? Параметры криптографии мне кажутся правильными, не может ли быть что-то связано с сетью? Например, я до сих пор не совсем понимаю, похоже ли поведение мостов OvS на интерфейсы, определенные, например, на маршрутизаторах Cisco.

Заранее спасибо!

Используемое программное обеспечение:

OvS: Ubuntu Server 18.04.4 + Open vSwitch 2.12 + StrongSwan 5.6.2

pfSense: 2.4.4