TIL: красивые имена для сервисов в локалке через split-DNS

[TIL] Надоело лазить по сервисам через 192.168.1.10:8000, :8080, :9000 и помнить, кто на каком порту. Хотелось открывать их по-человечески: paperless.home.lan, nas.home.lan и так далее. Решается это split-DNS — когда твой локальный DNS отдаёт на эти имена внутренний IP сервера.

У меня в роли локального DNS уже стоит AdGuard Home, так что добавил всё в его DNS-rewrites. В UI это Filters → DNS rewrites, а если в конфиге AdGuardHome.yaml, то так:

filtering:
  rewrites:
    - domain: '*.home.lan'
      answer: 192.168.1.10

Один wildcard — и любое имя в зоне home.lan резолвится в сервер. Удобно: завёл новый сервис, придумал ему имя, и оно сразу работает, без правки DNS.

Если AdGuard нет, ровно то же делается на dnsmasq одной строкой:

# /etc/dnsmasq.conf
address=/home.lan/192.168.1.10

Проверка, что отдаёт нужный IP:

nslookup paperless.home.lan 192.168.1.1
# Address: 192.168.1.10

Один нюанс: чтобы это работало на всех устройствах, в роутере DHCP должен раздавать именно этот DNS, иначе телефон пойдёт спрашивать у публичного резолвера и ничего не найдёт. Я взял зону .home.lan (не .local — её занимает mDNS, и не настоящий домен — чтобы не пересекаться с внешним миром).

Дальше повесил перед сервисами reverse-proxy, чтобы порты тоже спрятать, и теперь paperless.home.lan открывается просто в браузере. Маленькое удобство, а пользуюсь каждый день.