Какую задачу решаем
- Самостоятельно выдаём/меняем 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 updatesudo 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=gmysqlgmysql-host=127.0.0.1gmysql-user=pdnsgmysql-password=Strong_DB_Pass_123gmysql-dbname=powerdnsapi=yesapi-key=Super_API_Key_123webserver=yeswebserver-address=127.0.0.1webserver-port=8081CONFsudo 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." 3600sudo 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.netsudo 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::1234sudo 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.arpasudo pdnsutil rectify-zone 113.0.203.in-addr.arpasudo pdnsutil show-zone 113.0.203.in-addr.arpa | grep DS
Тесты и отладка
dig NS 113.0.203.in-addr.arpa +shortdig -x 203.0.113.10 +dnssec +multijournalctl -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