Какую задачу решаем
- Самостоятельно выдаём/меняем 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::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.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