Bug 51320 - Ошибка подключения к VPN strongswan
Summary: Ошибка подключения к VPN strongswan
Status: NEW
Alias: None
Product: Sisyphus
Classification: Development
Component: NetworkManager-strongswan (show other bugs)
Version: unstable
Hardware: x86_64 Linux
: P5 normal
Assignee: Alexey Shabalin
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2024-08-28 18:09 MSK by Pavel Sivolapov
Modified: 2024-08-29 13:18 MSK (History)
2 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Pavel Sivolapov 2024-08-28 18:09:23 MSK
Проверено на стендах:
sisyphus-kworkstation-kde-x86_64

Версия пакета:
strongswan-charon-nm-5.9.14-alt4.x86_64

Шаги для воспроизведения:
1. Установить пакеты на сервер:
   # apt-get install strongswan strongswan-charon-nm strongswan-sqlite tpm2-abrmd

2. Установить пакеты на клиент:
   # apt-get install NetworkManager-common

3. Выпустить сертификаты на сервере:

  # cd /etc/strongswan/swanctl/
  # strongswan pki --gen --type rsa --size 4096 --outform pem > private/strongswanKey.pem
  # strongswan pki --self --ca --lifetime 3650 --outform pem --in private/strongswanKey.pem --type rsa --dn "C=CH, O=strongSwan, CN=strongSwan Root CA" > x509ca/strongswanCert.pem
  # strongswan pki --gen --type rsa --size 2048 --outform pem > private/vpnHostKey.pem
  # strongswan pki --pub --in private/vpnHostKey.pem --type rsa | strongswan pki --issue --lifetime 730 --outform pem --cacert x509ca/strongswanCert.pem --cakey private/strongswanKey.pem --dn "C=CH, O=strongSwan, CN=svpn.test.dom" --san svpn.test.dom --flag serverAuth --flag ikeIntermediate > x509/vpnHostCert.pem
  # strongswan pki --gen --type rsa --size 2048 --outform pem > private/ClientKey.pem
  # strongswan pki --pub --in private/ClientKey.pem --type rsa | strongswan pki --issue --lifetime 730 --outform pem --cacert x509ca/strongswanCert.pem --cakey private/strongswanKey.pem --dn "C=CH, O=strongSwan, CN=myself@test.dom" --san myself@test.dom > x509/ClientCert.pem
  # openssl pkcs12 -export -name "My own VPN client certificate" -inkey private/ClientKey.pem -in x509/ClientCert.pem -certfile x509ca/strongswanCert.pem -caname "strongSwan Root CA" -out Client.p12 -passout pass:12345678

4. Отправить сертификаты на клиента:
  # scp /etc/strongswan/swanctl/private/ClientKey.pem /etc/strongswan/swanctl/x509/ClientCert.pem /etc/strongswan/swanctl/x509/vpnHostCert.pem <user>@<ip>:~

5. Настроить конфиг на сервере:
  # cat > /etc/strongswan/swanctl/swanctl.conf<<EOF  
connections {  
    IPSec-IKEv2 {  
        version = 2  
        remote_addrs = %any  
	    pools = ipv4_pool  
        local {  
            auth = pubkey  
            certs = vpnHostCert.pem  
            id = %any  
        }  
        remote {  
            auth = pubkey  
            id = %any  
       certs = ClientCert.pem  
        }  
        children {  
        net {  
          updown = /usr/libexec/strongswan/_updown iptables  
          esp_proposals = aes128gcm16, aes256gcm16, aes128-sha256, aes128-sha1, aes256-sha384, aes256-sha256  
            }  
    }  
        proposals = aes128-sha256-ecp256, aes256-sha384-ecp384, aes128-sha256-modp2048, aes256-sha384-modp4096  
        reauth_time = 0s  
    }  
     
}  
pools {  
  ipv4_pool {  
    addrs = 10.9.0.0/24  
    dns = 8.8.8.8, 8.8.4.4  
  }  
}  
EOF

6. На клиенте добавить новый VPN на основе IPsec strongswan:

  Шлюз (ip сервера)
  Сертификат в разделе Шлюз - vpnHostCert.pem
  аутентификация - Сертификат
  Сертификат в разделе Проверка подлинности ClientCert.pem
  Личный ключ в разделе Проверка подлинности ClientKey.pem
  Пароль личного ключа 12345678
  Поставить галочку "Запрашивать внутренний IP-адрес"

7. Подключиться к VPN

Ожидаемый результат:
Успешное подключение

Реальный результат:
Ошибка подключения

Лог NetworkManager:

NetworkManager[1006]: <warn>  [1724847559.6610] vpn[0x5612d13e30f0,ebe526ec-32c9-4213-badd-75910cdeb0fc,"Новое соединение vpn"]: starting: failure to start VPN service: Не удалось выполнить дочерний процесс "/usr/lib64/strongswan/ipsec/charon-nm" (Нет такого файла или каталога)


Доп исследование:

Изменился исполняемый файл в версии 5.9.14

Было в 5.9.13:

# rpm -iq strongswan-charon-nm
strongswan-charon-nm-5.9.13-alt1.x86_64
# rpm -lq strongswan-charon-nm
/usr/lib64/strongswan/ipsec/charon-nm
/usr/share/dbus-1/system.d/nm-strongswan-service.conf

Стало в 5.9.14:

# rpm -iq strongswan-charon-nm
strongswan-charon-nm-5.9.14-alt4.x86_64
# rpm -lq strongswan-charon-nm
/usr/libexec/strongswan/charon-nm
/usr/share/dbus-1/system.d/nm-strongswan-service.conf
Comment 1 Pavel Sivolapov 2024-08-29 09:15:19 MSK
(Ответ для Pavel Sivolapov на комментарий #0)

> Версия пакета:
> strongswan-charon-nm-5.9.14-alt4.x86_64

Ошибся в названии пакета.
 
Версия пакета:
NetworkManager-strongswan-1.6.0-alt1.x86_64
Comment 2 Alexey Shabalin 2024-08-29 13:18:24 MSK
Что-то я не верю в ошибку, NetworkManager-strongswan собран с --with-charon=/usr/libexec/strongswan/charon-nm.
В /usr/lib/NetworkManager/VPN/nm-strongswan-service.name явно прописано
program=/usr/libexec/strongswan/charon-nm
В точно проверяете с NetworkManager-strongswan-1.6.0-alt1? сам NetworkManager перезапускали?