Прикладной уровень: что нужно для полноценной работы?

Повторение: systemctl enable --now systemd-networkd

DNS

Проблема адресации vs. именование:

Вариант решения: /etc/hosts

Чуть менее ручной вариант: локальный анонс соответствия собственного имени IP-адресу

Масштабируемое решение: DNS

Поддержка в ОС

TODO Просмотреть/исправить примеры на предмет совместимости с псевдоинтернетом

Статическая таблица резолвинга: /etc/resolv.conf

Множественные пространства имён и /etc/nsswitch.conf

Динамическая таблица резолвинга и systemd-resolved

<!> Если пользоваться resolved, вместо файла /etc/resolv.conf надо подкладывать символьную ссылку на генерат, который resolved сам контролирует:

[root@srv ~]# ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf
[root@srv ~]# ls -l /etc/resolv.conf
lrwxrwxrwx 1 root root 32 Apr 13 19:22 /etc/resolv.conf -> /run/systemd/resolve/resolv.conf

DNS-серверы: Крупные (обслуживают корневые DNS-сервера)

(Кстати, все три сервера — open source)

Мелкие:

Настройка systemd-resolved как мелкого DNS-сервера

TODO Попробовать перенести на knot / knot-resolver:

TODO В случае успеха заменить также и в псевдоинтернете

Вообще-то systemd-resolved предназначен для отслеживания пространств имён. Но его можно заставить работать DNS-сервером!

Файл /etc/systemd/resolved.conf:

[Resolve]
DNSStubListener=no
DNSStubListenerExtra=::

Всё, что мы напишем в /etc/hosts, можно опросить у DNS:

Чтобы стандартный механизм /etc/nsswitch.conf ходил сразу к resolved (а не по 53 порту), надо использовать nss-resolve

Автоматическая настройка на клиенте

Настройка маршрутизатора systemd-networkd

В сообщениях RA можно указывать опции RDNSS и DNSSL — соответственно адрес резолвера и search domains.

Пример (всё, кроме DNS, уже было в прошлой главе)

TODO Добавить search domain на зону класса, настроенную в Knot

[root@router ~]# /etc/systemd/network/55-prefix-downstream.network
[Match]
Name=eth1 # куда будут уходить RA

[Network]
IPv6SendRA=yes
# It is expected that the host is acting as a router. So, usually it is not
# necessary to receive Router Advertisement from other hosts in the downstream network.
#IPv6AcceptRA=no

[IPv6SendRA]
DNS=_link_local # указать наш LL-адрес на интерфейсе, по которому уйдёт RA

[IPv6Prefix]
Prefix=2001:db8:b:cc::/64
# Значения флагов по умолчанию:
#OnLink=yes
#AddressAutoconfiguration=yes
Assign=yes

Вместо Assign=yes (на интерфейсе появляется адрес из этого префикса) можно указать маршрут ([Route] / Destination = 2001:db8:b:cc::/64)

Настройка клиента systemd-networkd

<унесена в предыдущую главу>

TODO О(пере)писать / настроить DNS Update, если он заработает для Knot

В едином контексте управления (Samba, etc.) можно при появлении адреса динамически обновлять DNS-зону, создавая связь между FQDN машины и адресом.

Анонсирование служб

systemd-resolved и mDNS

systemd-resolved умеет в DNS-SD + mDNS

Можно анонсировать, например, ssh:

[root@srv ~]# cat /etc/systemd/dnssd/sshd.dnssd 
[Service]
Name=%H
Type=_ssh._tcp
Port=22

И тогда: resolvectl service srv._ssh._tcp.local

Avahi

TODO Возможно, avaho вообще не нужен, есть есть аналог avahi-browse и avahi-publish

Zeroconf как идея и Avahi как реализация конкретно mDNS/DNS-SD

На соседней виртуалке (на основной этим уже занимается resolved)

Д/З

TODO

LecturesCMC/LinuxNetwork2026/Six/09_ApplicationSupplemental (последним исправлял пользователь ArsenyMaslennikov 2026-07-19 18:35:43)