У попередніх частинах ми керували DNS із терміналу - pdnsutil і curl до API. Але більшість хоче мишкою. Для PowerDNS є дві популярні веб-панелі з до плутанини схожими назвами: PowerDNS-Admin і Poweradmin. Їх постійно плутають - а вони архітектурно протилежні:
- PowerDNS-Admin керує сервером через REST API (той, що ми ввімкнули в частині 1);
- Poweradmin пише прямо в базу MariaDB (таблиці
domains/records).
Поставимо обидві в ту саму мережу, що й наш master-slave + DNSSEC стенд, і подивимось наживо, чим вони різняться.
Що потрібно зробити?#
Розгорнути обидві панелі поряд, підключити до того самого PowerDNS і порівняти: як підключаються, як виглядають, як керують записами й DNSSEC. І головне - зрозуміти, кому яка підходить.
З чим працюю?#
Той самий стенд: ns1 (майстер, API + БД), ns2 (репліка), зона example.com з DNSSEC. Панелі ставлю на окремий контейнер panels - і одразу спливає ключова різниця:
| |
PowerDNS-Admin достукався до ns1 по HTTP API через публічну мережу - йому більше нічого не треба. А Poweradmin потребує саму базу, а вона в нас на приватній мережі - довелося дати контейнеру ще й приватний інтерфейс. Це вже перша відмінність: одна панель чіпляється одним HTTP-портом, друга лізе в БД.
Весь процес встановлення обох панелей - у записі:
Далі те саме по кроках, уже з поясненнями.
Встановлення: PowerDNS-Admin (через API)#
PowerDNS-Admin найпростіше запустити в Docker. Йому потрібна лише своя база (для користувачів/налаштувань - бери SQLite) і адреса нашого API:
| |
Без
SQLALCHEMY_DATABASE_URIобраз одразу падає - це його обовʼязкова змінна.
Далі відкриваємо http://<панелі>:9191, реєструємо першого користувача (він стає адміністратором) і в Settings → PowerDNS вказуємо API: URL http://<ns1>:8081, ключ і версію. Усе - панель підтягує зони. Вона нічого не знає про базу pdns; спілкується винятково по API.
Встановлення: Poweradmin (пряма БД)#
Poweradmin - класичний PHP-застосунок. Свої таблиці (користувачі, права, шаблони) він тримає в окремій базі, а записи PowerDNS читає з бази pdns. Тож на майстрі заводимо для нього базу й користувача (панель під’єднуватиметься з приватної адреси контейнера):
| |
Потім на контейнері - LAMP (разом із mariadb-client) і сам Poweradmin:
| |
Налаштування - у config/settings.php: name - своя база Poweradmin, а pdns_db_name - база із записами PowerDNS (обидві на тому самому сервері):
| |
Далі - веб-інсталятор (http://<панелі>/install/): він створює таблиці Poweradmin, заводить адміна й дописує конфіг. (У записі я роблю те саме з терміналу: вантажу схему sql/poweradmin-mysql-db-structure.sql і додаю адміна - кому як зручніше.) Після інсталяції:
| |
⚠️ Каталог
install/обовʼязково видалити - інакше Poweradmin відмовляється працювати й замість логіну показує «The install/ directory exists, you must remove it first». Класичний крок, який легко забути.
Окрема база для панелі (а не вкидання її таблиць у pdns) тримає базу PowerDNS чистою - і її не засмічують реплікації на ns2. Але сам факт лишається: Poweradmin потребує прямого мережевого доступу до БД, тоді як PowerDNS-Admin обходиться HTTP-портом API.
Візуальне порівняння#
Обидві панелі підключені до того самого PowerDNS і бачать нашу example.com. Але виглядають і поводяться по-різному.
Головна#
PowerDNS-Admin - сучасний інтерфейс: бічне меню, таблиця зон, і він одразу показує зелений замок DNSSEC (прочитав наш підпис через API):

Poweradmin - класичний «пульт» з іконок, помітно хостинг-орієнтований: окремо Master/Slave/Supermaster зони, Bulk Registration, PTR Records, шаблони, групи:

Керування записами#
PowerDNS-Admin редагує записи акуратно, по одному, ховає службовий SOA, має кнопки Changelog і Zone Settings:

Poweradmin показує всі записи (разом із SOA) в одній великій редагованій таблиці, плюс хостингові речі: Ownership, Metadata, Generate PTR, Export, Save as Template, Bulk add:

Уже з цих двох екранів видно різницю підходів: PowerDNS-Admin - про акуратне керування й сучасний UX; Poweradmin - про щільний хостинг-функціонал в одному вікні.
DNSSEC#
А ось тут ховається найцікавіша відмінність. У частині 6 ми підписали example.com однією командою pdnsutil secure-zone. Подивимось, як кожна панель показує цей підпис.
PowerDNS-Admin бачить DNSSEC одразу - це той самий зелений замок, що й на головній. Клік по ньому відкриває ключ: DNSKEY і готові DS-записи для реєстратора (ті самі, що ми в частині 6 діставали через pdnsutil export-zone-ds), плюс кнопку ввімкнути/вимкнути:

Нічого налаштовувати не довелось: PowerDNS-Admin працює через API, а DNSSEC - це частина того самого API. Отримав безкоштовно.
Poweradmin спершу DNSSEC не показує взагалі. І це принципово: ключі DNSSEC не можна читати чи створювати простим SELECT/INSERT у базу - потрібні криптооперації, які вміє лише сам PowerDNS. Тому Poweradmin v4 керує DNSSEC винятково через API - а якщо API не налаштований, він просто вдає, що DNSSEC немає. Щоб його побачити, довелось у config/settings.php доповісти API - ту саму залежність, якої Poweradmin зі своїм прямим доступом до бази дозволяв уникнути:
| |
Зате після цього сторінка DNSSEC у Poweradmin навіть докладніша за модалку PDA: таблиця ключів (тип CSK, тег 56910, алгоритм ECDSAP256SHA256), кнопки Add new key, Show DS and DNSKEY, Unsign zone, а кожен ключ можна активувати, експортувати чи імпортувати:

Зверніть увагу на тег ключа - 56910 в обох панелях. Це той самий CSK із нашого стенду: обидві панелі говорять з одним сервером через один API. Висновок трохи несподіваний: для DNSSEC обидві панелі однаково залежать від API. У PowerDNS-Admin він вбудований від початку, а Poweradmin заради DNSSEC мусить його докрутити - прямого доступу до бази для криптографії не вистачає.
Таблиця відмінностей#
| PowerDNS-Admin | Poweradmin | |
|---|---|---|
| Стек | Python/Flask, зазвичай Docker | PHP, класичний LAMP |
| Керує pdns | через REST API | прямо в базі |
| Де може стояти | будь-де (лише HTTP до API) | лише з доступом до БД |
| Зміни застосовуються | одразу (через pdns) | потрібен pdns_control rediscover (пише повз pdns) |
| DNSSEC | з коробки (API вбудований): замок, DS, DNSKEY, вмик/вимк | є, але тільки через API - треба окремо ввімкнути й дати ключ API |
| Автентифікація | локальна + LDAP/OAuth/SAML, аудит дій | локальна/LDAP, шаблони прав |
| Хостинг-функції | базові | supermaster, bulk-реєстрація, PTR, шаблони зон, власники |
| Інтерфейс | сучасний (sidebar) | класичний (icon-grid) |
| Історія змін | Activity + Changelog | логи |
Що вибрати#
- PowerDNS-Admin - якщо цінуєте сучасний UX і API-підхід: панель не потребує доступу до БД (безпечніше), зміни застосовуються одразу через pdns, є зручне керування DNSSEC і корпоративна автентифікація (SSO/LDAP/SAML) з аудитом. Логічний вибір для команд та інфраструктури - і, до речі, ідеально лягає на наш реплікований стенд: пише через API на майстрі, репліка підхоплює сама.
- Poweradmin - якщо у вас хостинговий сценарій: багато зон і клієнтів, потрібні supermaster, масова реєстрація, генерація PTR, шаблони зон і тонкі права. Легкий LAMP, перевірений роками. Але він вимагає прямого доступу до БД (у нашому випадку - ще й окремого мережевого шляху до приватної мережі) і пише повз pdns, тож памʼятайте про
rediscover.
Коротко: PowerDNS-Admin - через API, Poweradmin - через базу. Перша - для чистого керування й безпеки звʼязності; друга - для щільного хостинг-функціоналу.
Що далі#
Керувати записами мишкою - зручно, але відмовостійкості на рівні самих записів панель не додасть. Наступний крок - health-check прямо в DNS: PowerDNS через LUA-записи сам опитує бекенди й віддає лише живі, тож www ніколи не вказує на мертвий сервер.
Підсумок#
Схожі назви приховують протилежні рішення. PowerDNS-Admin тримається осторонь бази й говорить із сервером мовою API - акуратно, безпечно, з DNSSEC і SSO. Poweradmin занурюється прямо в базу й дає щільний хостинг-арсенал - ціною тіснішої звʼязності та rediscover. На нашому стенді обидві керують однією зоною; вибір - між філософіями, а не між «кращою» і «гіршою».



