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

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

/etc/systemd/networkd.conf:

[Network]
IPv6Forwarding=yes

DNS

TODO dig с sed-ом заменить на nslookup

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

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

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

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

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

TODO Можно ли доверять VBox-овому DNS вида …::3 при условии, что дальше ipv6 работает

TODO Настроить выделенную виртуалку, которая ходит к 10.0.2.3:53 от VBox-а на eth0, а отдаёт на fe80::3%eth1

Статическая таблица резолвинга: /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-сервера

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

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

[Resolve]
DNSStubListener=no
DNSStubListenerExtra=::

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

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

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

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

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

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

[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.

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

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

В едином контексте управления (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

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

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

Д/З

TODO

LecturesCMC/LinuxNetwork2026/Six/09_ApplicationSupplemental (последним исправлял пользователь FrBrGeorge 2026-04-27 22:23:42)