"Мультикаст DNS применяется глобально, но не работает. В чем может быть проблема?"

Привет всем!

Прохожу курс “от 0 до Linux админа” и столкнулся с проблемой, связанной с Multicast DNS. У меня есть домашний сервер, который доступен по адресу homeserver.local. Однако сегодня утром он перестал работать, и я не могу понять причину.

У сервера две сетевые карты: enp2s0 и enp3s0, но активна и настроена только enp3s0. Вот моя конфигурация netplan:

network:
  version: 2
  ethernets:
    enp3s0:
      dhcp4: no
      dhcp6: no
      addresses:
        - 192.168.178.94/24
      nameservers:
        addresses: [1.1.1.1]
      dhcp4-overrides:
        use-dns: no

Согласно systemd-resolved и networkd, все в порядке. Однако, когда я выполняю команду resolvectl mdns, вижу, что Multicast DNS включен только для другой сетевой карты:

Global: yes
Link 2 (enp2s0): yes
Link 3 (enp3s0): no

Я создал файл override.conf в /run/systemd/network/10-netplan-enp3s0.network.d/ с содержимым:

[Network]
MulticastDNS=yes

После выполнения netplan apply сервер возвращается в онлайн, однако этот файл исчезает после перезагрузки, и я снова остаюсь без решения.

Я также заметил, что на сервере работает Home Assistant в контейнере Docker, и когда он включен, systemd-resolved сообщает, что уже работает другой mDNS. Даже если я останавливаю контейнер и перезагружаю сервер, homeserver.local по-прежнему недоступен.

Установленный Avahi отсутствует, так что это не может быть причиной проблемы. Я запускаю Ubuntu Server 24.

Может кто-то сталкивался с подобной проблемой или знает, как ее решить? Буду признателен за любую информацию!

Привет! Похоже, ты проделал уже значительную работу, чтобы понять, что именно происходит с твоим сервером. Давай попробуем разобраться.

Возможные решения проблемы с Multicast DNS

  1. Проблема с Netplan и systemd-resolved:

    Похоже, проблема в том, что твоя конфигурация override.conf исчезает после перезагрузки. Это поведение из-за того, что изменения, сделанные в директории /run/, считаются временными и удаляются после перезапуска системы. Вместо этого попробуй создать постоянный файл конфигурации:

    Создай файл /etc/systemd/network/10-netplan-enp3s0.network.d/override.conf и скопируй туда твои настройки:

    [Network]
    MulticastDNS=yes
    

    Применяешь настройки командой sudo netplan apply.

  2. Проблема с Docker:

    Ты упоминал, что после запуска контейнера Home Assistant systemd-resolved сообщает о конфликте mDNS. Это может быть вызвано тем, что Docker может создавать собственные сетевые интерфейсы, которые могут конфликтовать с существующими настройками mDNS. Чтобы проверить это, попробуй временно остановить Docker и выполнить перезагрузку:

    sudo systemctl stop docker
    sudo systemctl stop docker.socket
    sudo reboot
    

    После перезагрузки проверь доступность homeserver.local. Если проблема решена, возможно, нужно настроить Docker так, чтобы его сеть не конфликтовала с твоими настройками.

  3. Проверка Avahi:

    Поскольку Avahi не установлен, вероятность, что он мешает, мала. Однако, если у тебя есть возможность, стоит его временно установить и запустить для теста, так как Avahi часто используется для управления локальными DNS-сигналами (.local домены):

    sudo apt update
    sudo apt install avahi-daemon
    sudo systemctl start avahi-daemon
    

    После установки проверь работу homeserver.local.

Надеюсь, это поможет решить твою проблему. Если ни одно из предложенных решений не поможет, было бы полезно рассмотреть сетевой конфигурационный журнал и логи Docker для дополнительной информации. Удачи! . Я ответил на ваш вопрос?

Спасибо за ваш ответ! У меня все получилось, мультикаст DNS заработал. Ещё раз спасибо за помощь!

Конечно, рад помочь! Отлично, что у вас всё получилось и мультикаст DNS заработал. Если возникнут ещё какие-то вопросы или понадобится помощь, не стесняйтесь обращаться. Удачи! . Я ответил на ваш вопрос?