1

Приветствую участников форума!

Столкнулся с проблемой настройки IPsec/IKEv2 сервера, где каждому сертификату необходимо назначить свои ограничения по доступу к определенным IP-адресам. Однако возникла сложность с работой подключений для iPhone и Linux-клиентов.

Описание проблемы:
У меня есть три типа подключений (netvision, tiv, zan), каждый из которых использует свой сертификат и имеет уникальные настройки доступа (leftsubnet).
В текущей конфигурации подключение netvision находится выше остальных в файле /etc/ipsec.d/ikev2.conf.
Для корректной работы подключений tiv и zan на iPhone и Linux-клиентах их нужно передвинуть выше netvision. Если этого не сделать, то клиенты всегда подключаются к первому совпадению (netvision), игнорируя остальные.
Конфигурация:
Основная конфигурация /etc/ipsec.conf

version 2.0

config setup
    ikev1-policy=accept
    virtual-private=%v4:10.0.0.0/8,%v4:192.168.0.0/16,%v4:172.16.0.0/12,%v4:!192.168.42.0/24,%v4:!192.168.43.0/24
    uniqueids=no

conn shared
    left=%defaultroute
    leftid= адрес убрал
    right=%any
    encapsulation=yes
    authby=secret
    pfs=no
    rekey=no
    keyingtries=5
    dpddelay=30
    dpdtimeout=300
    ikev2=never
    ike=aes256-sha2;modp2048,aes128-sha2;modp2048,aes256-sha1;modp2048,aes128-sha1;modp2048
    phase2alg=aes_gcm-null,aes128-sha1,aes256-sha1,aes256-sha2_512,aes128-sha2,aes256-sha2
    ikelifetime=24h
    salifetime=24h
    sha2-truncbug=no

conn l2tp-psk
    auto=add
    leftprotoport=17/1701
    rightprotoport=17/%any
    type=transport
    also=shared

conn xauth-psk
    auto=add
    leftsubnet=8.8.8.8/32
    rightaddresspool=192.168.43.10-192.168.43.250
    modecfgdns="8.8.8.8 8.8.4.4"
    leftxauthserver=yes
    rightxauthclient=yes
    leftmodecfgserver=yes
    rightmodecfgclient=yes
    modecfgpull=yes
    cisco-unity=yes
    also=shared

include /etc/ipsec.d/*.conf

Файл /etc/ipsec.d/ikev2.conf:

conn ikev2-cp
    left=%defaultroute
    leftcert= убрал :)
    leftsendcert=always
    leftrsasigkey=%cert
    right=%any
    rightca=%same
    rightrsasigkey=%cert
    narrowing=yes
    dpddelay=30
    retransmit-timeout=300s
    ikev2=insist
    rekey=no
    pfs=no
    ike=aes_gcm_c_256-hmac_sha2_256-ecp_256,aes256-sha2,aes128-sha2,aes256-sha1,aes128-sha1
    phase2alg=aes_gcm-null,aes128-sha1,aes256-sha1,aes128-sha2,aes256-sha2
    ikelifetime=24h
    salifetime=24h
    encapsulation=yes
    leftid=
    modecfgdns="8.8.8.8 8.8.4.4"
    mobike=no

# netvision
conn netvision
    auto=add
    leftsubnet=11.66.104.0/24
    rightid="CN=netvision, O=GKU NSO CODD"
    rightaddresspool=192.168.43.10-192.168.43.250
    also=ikev2-cp
    priority=1

# tiv
conn tiv
    auto=add
    leftsubnet=11.66.104.0/24,11.68.104.0/24
    rightid="CN=tiv, O=GKU NSO CODD"
    rightaddresspool=192.168.43.10-192.168.43.250
    also=ikev2-cp
    priority=2

# zan
conn zan
    auto=add
    leftsubnet=11.66.104.0/24,11.68.104.0/24
    rightid="CN=zan, O=GKU NSO CODD"
    rightaddresspool=192.168.43.10-192.168.43.250
    also=ikev2-cp
    priority=3

Что я пробовал:
Изменение порядка подключений в файле /etc/ipsec.d/ikev2.conf:
Переместил tiv и zan выше netvision.
Это решило проблему для iPhone и Linux, но на android и windows работает в любом случае.

Попробовал задать приоритеты (priority=1, priority=2, priority=3), но это не повлияло на выбор подключения.

Добавил этот параметр в ikev2-cp, чтобы уменьшить количество ложных совпадений, но проблема осталась.

Вопрос:
Как можно организовать корректную работу всех подключений, чтобы:

Каждый сертификат (netvision, tiv, zan) имел свои ограничения по доступу к IP-адресам.
iPhone и Linux могли подключаться к нужному профилю (tiv или zan), не нарушая работу других клиентов?
Буду благодарен за любые идеи и предложения!