У меня есть простая сеть, состоящая из виртуальной машины на базе 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