<?xml version="1.0" encoding="UTF-8" ?>

<bugzilla version="5.2"
          urlbase="https://bugzilla.altlinux.org/"
          
          maintainer="jenya@basealt.ru"
>

    <bug>
          <bug_id>41408</bug_id>
          <alias>pve-common</alias>
          <creation_ts>2021-11-22 14:29:28 +0300</creation_ts>
          <short_desc>/usr/bin/pvecm updatecerts не работает если есть ipv6 link-local адреса</short_desc>
          <delta_ts>2024-05-30 19:50:04 +0300</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>Branch p10</product>
          <component>pve-common</component>
          <version>не указана</version>
          <rep_platform>x86_64</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>CLOSED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P5</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Anton Shevtsov">shevtsov.anton</reporter>
          <assigned_to name="qa-team@altlinux.org">qa-team</assigned_to>
          <cc>afonin.pb</cc>
    
    <cc>andy</cc>
    
    <cc>shaba</cc>
          
          <qa_contact name="qa-p10@altlinux.org">qa-p10</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>205164</commentid>
    <comment_count>0</comment_count>
    <who name="Anton Shevtsov">shevtsov.anton</who>
    <bug_when>2021-11-22 14:29:28 +0300</bug_when>
    <thetext>столкнулся с тем, что не стартует pve.
пошел смотреть и выяснил, что у /lib/systemd/system/pveproxy.service
есть ExecStartPre=-/usr/bin/pvecm updatecerts 
который падает, если на интерфейсе есть ipv6

падает вот так
/usr/bin/pvecm updatecerts
(re)generate node files
Error Loading request extension section v3_req
140516354099008:error:220A4076:X509 V3 routines:a2i_GENERAL_NAME:bad ip address:crypto/x509v3/v3_alt.c:478:value=fe80::3a68:ddff:fe5b:d900%eno1
140516354099008:error:22098080:X509 V3 routines:X509V3_EXT_nconf:error in extension:crypto/x509v3/v3_conf.c:47:name=subjectAltName, value=IP:127.0.0.1,IP:::1,DNS:localhost,IP:fe80::3a68:ddff:fe5b:d900%eno1,DNS:host-pve
unable to generate pve certificate request:
command &apos;openssl req -batch -new -config /tmp/pvesslconf-6224.tmp -key /etc/pve/nodes/host-pve/pve-ssl.key -out /tmp/pvecertreq-6224.tmp&apos; failed: exit code 1

отключил ipv6  echo &apos;net.ipv6.conf.all.disable_ipv6 = 1&apos; &gt;&gt; /etc/sysctl.conf
сразу все заработало.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>205168</commentid>
    <comment_count>1</comment_count>
    <who name="Andrew Vasilyev">andy</who>
    <bug_when>2021-11-22 15:21:43 +0300</bug_when>
    <thetext>  А в /etc/hosts что-то про адрес fe80::3a68:ddff:fe5b:d900 есть?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>205173</commentid>
    <comment_count>2</comment_count>
    <who name="Anton Shevtsov">shevtsov.anton</who>
    <bug_when>2021-11-22 15:55:34 +0300</bug_when>
    <thetext>(Ответ для Andrew Vasilyev на комментарий #1)
&gt;   А в /etc/hosts что-то про адрес fe80::3a68:ddff:fe5b:d900 есть?

нет

[root@host-pve ~]# cat /etc/hosts
127.0.0.1       localhost.localdomain localhost</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>205179</commentid>
    <comment_count>3</comment_count>
    <who name="Alexey Shabalin">shaba</who>
    <bug_when>2021-11-22 16:36:59 +0300</bug_when>
    <thetext>Покажите /etc/nsswitch.conf</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>205180</commentid>
    <comment_count>4</comment_count>
    <who name="Alexey Shabalin">shaba</who>
    <bug_when>2021-11-22 16:42:19 +0300</bug_when>
    <thetext>А вообще это не баг, и не связано с ipv6. Как только хост будет резолвиться нормально (DNS или hosts), так и сертификаты сгенерируются успешно.
В документации этот момент описан.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>246998</commentid>
    <comment_count>5</comment_count>
    <who name="AF">afonin.pb</who>
    <bug_when>2024-05-30 00:36:44 +0300</bug_when>
    <thetext>(Ответ для Alexey Shabalin на комментарий #4)
&gt; А вообще это не баг, и не связано с ipv6. Как только хост будет резолвиться
&gt; нормально (DNS или hosts), так и сертификаты сгенерируются успешно.
&gt; В документации этот момент описан.

Сегодня, впервые устанавливая для теста вашу систему виртуализации (10.2 версия, самые дефолтные настройки), столкнулся с подобной проблемой и решил ее правкой perl кода

Эта проблема связана с ipv6 link-local адресами. А именно: функция perl Socket::getaddrinfo (с которой и берутся адреса в случае, если ip ноды не были установлены) выдает массив служебных данных с ip адресами. Все корректно, когда адреса IPv4 (любые) или IPv6, но НЕ link-local. К IPv6 link-local в конце добавляется префикс в виде имени интерфейса, к которому привязан этот адрес. Например, как в случае ТС-а это %eno1. В самой функции PVE::Network::get_ip_from_hostname идет отброс только по localhost адресам и забирается первый полученный адрес. А по порядку они в массиве: 1 - localhost (добавляется, только если вообще нет других адресов), 2 - IPv6 link-local,  3 - IPv6, и только в конце IPv4. Соответственно, функция захватывает первый link-local адрес с префиксом и затем функция PVE::Cluster::Setup::gen_pve_ssl_cert пытается через openssl создать самоподписанный SSL сертификат сервера, вписав этот &quot;неправильный&quot; адрес в расширение Subject Alternative Name: IP, что и вызывает ошибку.

Т.к. эта ошибка может возникнуть сразу же после установки Alt Server-V, это делает невозможным дальнейшее (пере)конфигурирование Proxmox VE
Самое простое решение - добавить в regex-проверку отброску по знаку процент &apos;%&apos;, что я и сделал:  

/usr/share/perl5/PVE/Network.pm:
813:  if ($ip !~ m/^127\.|^::1$|%/) {</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>247044</commentid>
    <comment_count>6</comment_count>
    <who name="Repository Robot">repository-robot</who>
    <bug_when>2024-05-30 19:50:04 +0300</bug_when>
    <thetext>pve-common-8.1.2-alt1 -&gt; sisyphus:

 Thu May 30 2024 Andrew A. Vasilyev &lt;andy@altlinux&gt; 8.1.2-alt1
 - 8.1.2
 - fix for pvecm updatecerts to work with IPv6 link-local addrs (ALT #41408)</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>