Платформа: alt-workstation 10.2 x86_64(Обновленный до Sisyphus) Пакет: NetworkManager 1.48.4-alt2 Шаги: 1)Настроить статический ip адрес на стенде 1 и переподключить его 2)Настроить такой же статический ip адрес на стенде 2 и подключить его Ожидаемый результат: Появляется сообщение об ошибке Результат: Сообщений об ошибке нет. Дополнительно: На KDE выводится сообщение об ошибке. Воспроизводится только на MATE и XFCE
Судя по всему в nm-applet это просто не реализовано.
(Ответ для obidinog@basealt.ru на комментарий #0) > Воспроизводится только на MATE и XFCE И GNOME.
*** Bug 54820 has been marked as a duplicate of this bug. ***
Created attachment 18848 [details] фото конкурентов
Но у конкурентов есть подобное уведомление, значит дело не в nm-applet, он может, но не может в Альт.
Для MATE, в dconf - org-gnome-nm-applet отключаем "откл уведомление о прерывании". и при дубликате ip начинает выдаваться сообщение об ошибке. Сообщения формируются файлом /usr/share/locale/ru/LC_MESSAGES/nm-applet.mo в нем по умолчанию есть просто ошибки и указан вариант ответа "Сетевое подключение было прервано" без пояснений. А вот как расширить и конктеризировать эту ошибку?
Я не вижу, чтобы NM сообщал об обнаружении дупликатов адресов. В NetworkManager-applet-gtk-1.36.0-alt3 проверяется какое было состояние ранее и, если NM пытался установить соединение, то будет выдаваться сообщение "Сетевое подключение было прервано. Возможные причины: конфликт IP адреса, сервер DHCP не отвечает или другие проблеммы."
А изменяли ли параметр - ipv4.dad-timeout? В NM включено в значение -1, судя из описания данный параметр означает "По умолчанию он равен -1, что означает, что проверка дублированных IP не выполняется". Установите другой параметр может и NM начнет давать другую инфу.
При вкл параметра ipv4.dad-timeout в значение 200 или другое (делал 200 и 1500), заметил более корректную работу NM, а именно при перезагрузке системы в случае конфликта ip, соединение не устанавливается. Значит NM может определять и уведомлять о дубликате. Так понимаю в applet нужно добавить код про данное уведомление и добавить в aplet-nm перевод нового уведомления. А при разрыве соединения перевод в applet-nm сделать более информативным, например - соединение отключено в ручную, сервер DHCP не отвечает или другие проблеммы.
(In reply to Сергей from comment #8) > А изменяли ли параметр - ipv4.dad-timeout? В NM включено в значение -1, судя > из описания данный параметр означает "По умолчанию он равен -1, что > означает, что проверка дублированных IP не выполняется". Установите другой > параметр может и NM начнет давать другую инфу. -1 это значение параметра по умолчанию. В NM >= 1.46.0 это значение 200. Раньше было 0. (In reply to Сергей from comment #9) > При вкл параметра ipv4.dad-timeout в значение 200 или другое (делал 200 и > 1500), заметил более корректную работу NM, а именно при перезагрузке системы > в случае конфликта ip, соединение не устанавливается. Значит NM может > определять и уведомлять о дубликате. Он пишет соответствующее сообщение в лог, возможности же узнать об этой конкретной причине клиенту я не нашел.
Теперь работает только для первого ethernet-интерфейса. Если ethernet-интерфейсов больше одного, то уведомление в случае конфликта ip появляется только на первом интерфейсе. В случае возникновения конфликта на втором и последующих ethernet-интерфейсах уведомлений в графическом интерфейсе не появляется, но в journalctl уведомления присутствуют.
(Ответ для Aleksandr Sysoev на комментарий #11) > Теперь работает только для первого ethernet-интерфейса. > > Если ethernet-интерфейсов больше одного, то уведомление в случае конфликта > ip появляется только на первом интерфейсе. В случае возникновения конфликта > на втором и последующих ethernet-интерфейсах уведомлений в графическом > интерфейсе не появляется, но в journalctl уведомления присутствуют. Ну да, только не на первом. А точнее если есть активное соединение то уведомления нет, если отключаешь соединение то уведомление есть.
Выскажу предположение, при подключении апплет выдает уведомление с именем подключения, при разрыве нет. Возможно в текст уведомления нужно задать переменную подключения? тогда апплет будет "знать" какое из подключений отключено.
Апплет реагирует на изменение состояния NM. Если соединение уже установлено, то это NM_STATE_CONNECTED_* и даже если попытка подключения другого соединения провалилась, то изменения состояния NM нет, поэтому и нет сообщения об ошибке.
(In reply to Mikhail Efremov from comment #7) > Я не вижу, чтобы NM сообщал об обнаружении дупликатов адресов. В > NetworkManager-applet-gtk-1.36.0-alt3 проверяется какое было состояние ранее > и, если NM пытался установить соединение, то будет выдаваться сообщение > "Сетевое подключение было прервано. Возможные причины: конфликт IP адреса, > сервер DHCP не отвечает или другие проблеммы." https://fedoramagazine.org/managing-ipv4-address-conflict-detection-with-networkmanager/ возможно этот поможет.
Я хотел сказать следующее: если при подключении NM передает уведомление, то и при отключении поступает аналогично. Как апплет определяет кто подключился, а кто разорвался? Я смотрю на "Подключение к «%s» установлено" вижу переменную %s. При разрыве уведомления аналогичной переменной нет. Как аплет может определить что за соединение разорвано? Имею ввиду: #: src/applet.c:2161 1155 #, c-format 1156 msgid "You are now connected to “%s”." 1157 msgstr "Подключение к «%s» установлено." И 1163 #: src/applet.c:2202 1164 msgid "The network connection has been disconnected." 1165 msgstr "Сетевое подключение было прервано" В одном варианте он определяет за счет %s, а в другом нет.
Для GNOME есть merge-request https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3800