Summary: | /usr/bin/pvecm updatecerts не работает если есть ipv6 link-local адреса | ||
---|---|---|---|
Product: | Branch p10 | Reporter: | Anton Shevtsov <shevtsov.anton> |
Component: | pve-common | Assignee: | qa-team <qa-team> |
Status: | CLOSED FIXED | QA Contact: | qa-p10 <qa-p10> |
Severity: | normal | ||
Priority: | P5 | CC: | afonin.pb, andy, shaba |
Version: | не указана | ||
Hardware: | x86_64 | ||
OS: | Linux |
Description
Anton Shevtsov
2021-11-22 14:29:28 MSK
А в /etc/hosts что-то про адрес fe80::3a68:ddff:fe5b:d900 есть? (Ответ для Andrew Vasilyev на комментарий #1) > А в /etc/hosts что-то про адрес fe80::3a68:ddff:fe5b:d900 есть? нет [root@host-pve ~]# cat /etc/hosts 127.0.0.1 localhost.localdomain localhost Покажите /etc/nsswitch.conf А вообще это не баг, и не связано с ipv6. Как только хост будет резолвиться нормально (DNS или hosts), так и сертификаты сгенерируются успешно. В документации этот момент описан. (Ответ для Alexey Shabalin на комментарий #4) > А вообще это не баг, и не связано с ipv6. Как только хост будет резолвиться > нормально (DNS или hosts), так и сертификаты сгенерируются успешно. > В документации этот момент описан. Сегодня, впервые устанавливая для теста вашу систему виртуализации (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 сертификат сервера, вписав этот "неправильный" адрес в расширение Subject Alternative Name: IP, что и вызывает ошибку. Т.к. эта ошибка может возникнуть сразу же после установки Alt Server-V, это делает невозможным дальнейшее (пере)конфигурирование Proxmox VE Самое простое решение - добавить в regex-проверку отброску по знаку процент '%', что я и сделал: /usr/share/perl5/PVE/Network.pm: 813: if ($ip !~ m/^127\.|^::1$|%/) { |