PowerDNS: как настроить управление PTR для своей подсети (Debian / Ubuntu) 列印

  • ip подсети, rdns, ptr, powerdns, ns, ipv4, ipv6
  • 0

Какую задачу решаем
- Самостоятельно выдаём/меняем PTR (reverse DNS) для IPv4/IPv6 адресов.
- Делаем это через удобный CLI (pdnsutil), API PowerDNS или SQL (gmysql backend).
- Работают и круглые /24, и «ломаные» подсети (RFC 2317), и IPv6.

У вас есть
- У вас есть подсеть (например, 203.0.113.0/24 или /29, /23; для IPv6 — 2001:db8::/48).
- Родитель (RIR/провайдер) делегировал вам reverse-зону: поставил NS на ваши name-server’ы.
Если подсеть арендована у HSTQ — делегирование PTR выдаём быстро, NS укажем на ваши (ns1.hstq.net, ns2.hstq.net) или на ваши собственные.

Установка PowerDNS (gmysql) + MariaDB

Debian 12 / Ubuntu 24.04:

sudo apt update
sudo apt install -y mariadb-server pdns-server pdns-backend-mysql

Создаём БД и юзера:

sudo mysql -e "CREATE DATABASE powerdns;"
sudo mysql -e "CREATE USER 'pdns'@'127.0.0.1' IDENTIFIED BY 'Strong_DB_Pass_123';"
sudo mysql -e "GRANT ALL ON powerdns.* TO 'pdns'@'127.0.0.1'; FLUSH PRIVILEGES;"

Загружаем схему (путь может отличаться у Debian/Ubuntu):

zcat /usr/share/doc/pdns-backend-mysql/schema.mysql.sql.gz | sudo mysql powerdns

Включаем MySQL-бэкенд и API:

sudo tee -a /etc/powerdns/pdns.conf >/dev/null <<'CONF'
launch=gmysql
gmysql-host=127.0.0.1
gmysql-user=pdns
gmysql-password=Strong_DB_Pass_123
gmysql-dbname=powerdns
api=yes
api-key=Super_API_Key_123
webserver=yes
webserver-address=127.0.0.1
webserver-port=8081
CONF
sudo systemctl enable --now pdns

Проверяем:

sudo systemctl status pdns --no-pager

Вариант А. /24 (классическая) — одна reverse-зона

Подсеть 203.0.113.0/24 → зона 113.0.203.in-addr.arpa.

Создаём зону и NS:

sudo pdnsutil create-zone 113.0.203.in-addr.arpa ns1.hstq.net ns2.hstq.net

Добавляем PTR:

# 203.0.113.10 → host10.example.net.
sudo pdnsutil add-record 113.0.203.in-addr.arpa 10 PTR "host10.example.net." 3600
# 203.0.113.11 → mail.example.net.
sudo pdnsutil add-record 113.0.203.in-addr.arpa 11 PTR "mail.example.net." 3600
sudo pdnsutil notify 113.0.203.in-addr.arpa

Проверяем:

dig +short -x 203.0.113.10

Вариант B. /23 (две /24 в одном блоке)

Для 203.0.112.0/23 создаются ДВЕ зоны:


112.0.203.in-addr.arpa. (для .112.x)
113.0.203.in-addr.arpa. (для .113.x)

Делаем, как в варианте А, но дважды — на каждую /24. Родитель должен делегировать обе зоны на ваши NS.

Вариант C. Нечётная маска (например /29, /28): RFC 2317 (classless delegation)

Если владелец большого блока выделил вам «кусок в середине» (203.0.113.16/29), в родительской /24 обычно создают CNAME-переадресацию на «псевдозону», а вам делегируют её по NS:

На стороне родителя (их зона 113.0.203.in-addr.arpa):

16-23.113.0.203.in-addr.arpa. NS ns1.yourdns.net.
16-23.113.0.203.in-addr.arpa. NS ns2.yourdns.net.

16.113.0.203.in-addr.arpa. CNAME 16.16-23.113.0.203.in-addr.arpa.
17.113.0.203.in-addr.arpa. CNAME 17.16-23.113.0.203.in-addr.arpa.
...
23.113.0.203.in-addr.arpa. CNAME 23.16-23.113.0.203.in-addr.arpa.

На вашей стороне создаётся зона 16-23.113.0.203.in-addr.arpa:

sudo pdnsutil create-zone 16-23.113.0.203.in-addr.arpa ns1.yourdns.net ns2.yourdns.net
sudo pdnsutil add-record 16-23.113.0.203.in-addr.arpa 16 PTR "host16.example.net." 3600
# и т.д.

Идея: пользователи спрашивают PTR у «псевдозоны», а по CNAME запросы идут в вашу делегированную зону.

IPv6 PTR (ip6.arpa)

Адрес 2001:db8::1234 → зона вида ...ip6.arpa. Пример для префикса /48 (2001:db8:abcd::/48): зона d.c.b.a.8.b.d.0.1.0.0.2.ip6.arpa.

sudo pdnsutil create-zone d.c.b.a.8.b.d.0.1.0.0.2.ip6.arpa ns1.hstq.net ns2.hstq.net
# PTR для 2001:db8:abcd::1234
sudo pdnsutil add-record d.c.b.a.8.b.d.0.1.0.0.2.ip6.arpa 4.3.2.1.0.0.0.0.0.0.0.0.0.0.0.0 PTR "v6host.example.net." 3600

Подсказка: имя ноды — это nibble-reverse (каждый hex-символ — отдельная метка).

API PowerDNS для автоматизации (создание/замена PTR)

API слушает на 127.0.0.1:8081 согласно pdns.conf.

Пример PATCH (создать/заменить PTR 203.0.113.10):

curl -s -X PATCH \
-H 'X-API-Key: Super_API_Key_123' \
-H 'Content-Type: application/json' \
http://127.0.0.1:8081/api/v1/servers/localhost/zones/113.0.203.in-addr.arpa \
-d '{
"rrsets": [{
"name": "10.113.0.203.in-addr.arpa.",
"type": "PTR",
"ttl": 3600,
"changetype": "REPLACE",
"records": [{"content": "host10.example.net.", "disabled": false}]
}]
}'

DNSSEC (опционально)

Подписываем зону и публикуем DS у родителя (если поддерживается):

sudo pdnsutil secure-zone 113.0.203.in-addr.arpa
sudo pdnsutil rectify-zone 113.0.203.in-addr.arpa
sudo pdnsutil show-zone 113.0.203.in-addr.arpa | grep DS

Тесты и отладка

dig NS 113.0.203.in-addr.arpa +short
dig -x 203.0.113.10 +dnssec +multi
journalctl -u pdns -e --no-pager

Типичные ошибки


- Родитель не сделал делегирование NS → PTR «не находится». Решение: попросить провайдера/регистратора сетей делегировать нужные reverse-зоны на ваши NS.
- Не тот TTL/ошибка в точке: все FQDN в значениях PTR должны заканчиваться точкой.
- RFC 2317 не оформлен: для «ломаных» масок нужна «псевдозона» и CNAME в родительской /24.

Где арендовать

Если вам нужна аренда IPv4/IPv6 подсети (в т.ч. аренда IPv4 подсеть /23) с самостоятельным PTR:
- В HSTQ выдаём делегирование reverse-зон на ваши NS или на наш PowerDNS.
- Предоставляем LOA/подтверждение владения для провайдеров, помогаем с ROA (RPKI) и IRR-объектами.
- Чистые адресные блоки, быстрая поддержка, документация пишите нам в чат на сайте - https://hstq.net или в TG @hstq_hosting


這篇文章有幫助嗎?

相關文章

Как использовать свои подсети /24 на серверах Hetzner. Использование на Windows Server   Hetzner выдаёт только один белый IP. Хочется RDP на несколько ВМ, собственный почтовый пул или... Какие есть боты/сервисы, которые стоит добавить в исключения? Практический гайд для защиты сайта и бизнеса В современных условиях кибербезопасности настройка блокировок и фильтров — обязательная мера для... Какие есть боты/сервисы, которые стоит добавить в исключения? Практический гайд для защиты сайта и бизнеса В современных условиях кибербезопасности настройка блокировок и фильтров — обязательная мера для... Что делать, если сертификаты Let’s Encrypt не обновляются? Простое решение за 5 минут Сертификаты от Let’s Encrypt стали стандартом для бесплатной автоматической защиты сайтов по... Какие сервисы и решения реально помогают? Топ-10 инструментов Почему взламывают сайты и что самое опасное? Современный сайт на WordPress, Битрикс, Joomla,...
« 返回

Powered by WHMCompleteSolution


知識庫