Показати сторінкуСтарі ревізіїПосилання сюдиЕкспорт до PDFПовернутися наверх Ця сторінка доступна тільки для перегляду. Ви можете продивитися вихідний текст, але не можете змінювати його. Якщо ви вважаєте, що це не вірно, зверніться до адміністратора. ====== PowerDNS Server ====== ===== Install PowerDNS + Recursor + Admin + MariaDB + DNSdist ===== Розгортаємо високопродуктивний безкоштовний авторитарний DNS-сервер для тримання власних зон доменів <WRAP center round important 100%> All we do from sudo user!!! </WRAP> sudo su ===== Install MariaDB ===== [[debian:mariadb|Install MariaDB]] За бажанням можна встановити apache2 та phpMyAdmin для доступу до бази даних через веб панель керування [[debian:apache|Install apache2]] [[debian:phpmyadmin|Install phpMyAdmin]] ===== Install PowerDNS server ===== В репозиторіях є зазвичай, застаріла версія, тому заглянемо на сайт [[https://repo.powerdns.com/]] Там знаходимо стабільну версію програми і застосовуємо зміни в списку репозиторіїв <code bash> sh -c 'echo "deb [arch=amd64] http://repo.powerdns.com/debian bullseye-auth-46 main" > /etc/apt/sources.list.d/pdns.list' </code> <code bash> tee /etc/apt/preferences.d/pdns<<EOF Package: pdns-* Pin: origin repo.powerdns.com Pin-Priority: 600 EOF </code> <code bash> curl https://repo.powerdns.com/FD380FBB-pub.asc | sudo gpg --no-default-keyring --keyring gnupg-ring:/etc/apt/trusted.gpg.d/powerdns.gpg --import chmod 644 /etc/apt/trusted.gpg.d/* </code> <code bash> apt-get update apt-get install -y pdns-server pdns-backend-mysql cp -r /etc/powerdns/ /etc/powerdns.orig/ </code> <code bash> tee /etc/powerdns/pdns.conf<<EOF setgid=pdns setuid=pdns local-address=127.0.0.1 local-port=53 include-dir=/etc/powerdns/pdns.d launch= EOF </code> ===== prepeare mysql db ===== <code bash> mysql -u root -p </code> <code mysql> CREATE DATABASE powerdns; GRANT ALL ON powerdns.* TO 'powerdns'@'localhost' IDENTIFIED BY 'strongpassword'; FLUSH PRIVILEGES; quit; </code> Якщо це нове встановлення, то створимо структуру бази даних <code bash> mysql powerdns < /usr/share/pdns-backend-mysql/schema/schema.mysql.sql </code> Інакше, відновимо структуру з вашої резервної копії <code bash> mysql powerdns < /tmp/backup_powerdns.sql </code> Після відновлення з резервної копії, перевіряємо наявність змін структури <code bash> ls /usr/share/pdns-backend-mysql/schema/ | grep -E -i '^[0-9]' "3.4.0_to_4.1.0_schema.mysql.sql 4.1.0_to_4.2.0_schema.mysql.sql 4.2.0_to_4.3.0_schema.mysql.sql" </code> Якщо вони є, застосовуємо всі почерзі, починаючи з версії з резервної копії, наприклад з 4.1.0 <code bash> mysql powerdns < /usr/share/pdns-backend-mysql/schema/4.1.0_to_4.2.0_schema.mysql.sql mysql powerdns < /usr/share/pdns-backend-mysql/schema/4.2.0_to_4.3.0_schema.mysql.sql </code> Підключимо нашу базу даних nano /etc/powerdns/pdns.d/pdns.local.gmysql.conf <code bash> # MySQL Configuration # Launch gmysql backend launch+=gmysql # gmysql parameters gmysql-host=127.0.0.1 gmysql-port=3306 gmysql-dbname=powerdns gmysql-user=powerdns gmysql-password=strongpassword gmysql-dnssec=yes # gmysql-socket= </code> <code bash> systemctl restart pdns netstat -tap | grep pdns </code> <code bash> dig mydomain.local @127.0.0.1 dig @127.0.0.1 </code> ===== Панель адміністрування PowerDNS-Admin ===== [[https://computingforgeeks.com/install-powerdns-and-powerdns-admin-on-debian/]] [[https://github.com/PowerDNS-Admin/PowerDNS-Admin/wiki/Running-PowerDNS-Admin-on-Ubuntu-or-Debian]] <code bash> apt install python3-dev python3-venv git libmysqlclient-dev libsasl2-dev libldap2-dev libssl-dev libxml2-dev libxslt1-dev libxmlsec1-dev libffi-dev pkg-config apt-transport-https virtualenv build-essential curl jq </code> <code bash> curl -sL https://deb.nodesource.com/setup_18.x | bash - apt-get update && apt install -y nodejs </code> <code bash> curl -sL https://dl.yarnpkg.com/debian/pubkey.gpg | gpg --dearmor | sudo tee /usr/share/keyrings/yarnkey.gpg >/dev/null echo "deb [signed-by=/usr/share/keyrings/yarnkey.gpg] https://dl.yarnpkg.com/debian stable main" | sudo tee /etc/apt/sources.list.d/yarn.list apt-get update && apt-get install yarn </code> <code bash> mysql </code> <code mysql> CREATE DATABASE poweradmin CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; GRANT ALL PRIVILEGES ON poweradmin.* TO 'pdnsadmin'@'%' IDENTIFIED BY 'p4ssw0rd'; FLUSH PRIVILEGES; quit </code> <code bash> git clone https://github.com/PowerDNS-Admin/PowerDNS-Admin.git /opt/web/powerdns-admin cd /opt/web/powerdns-admin python3 -mvenv ./venv source ./venv/bin/activate pip install --upgrade pip pip install -r requirements.txt </code> <code bash> cp /opt/web/powerdns-admin/configs/development.py /opt/web/powerdns-admin/configs/production.py nano /opt/web/powerdns-admin/configs/production.py </code> <code python> import os import urllib.parse basedir = os.path.abspath(os.path.dirname(__file__)) ### BASIC APP CONFIG SALT = '$2b$12$yLUMTIfl21FKJQpTkRQXCu' SECRET_KEY = 'e951e5a1f4b94151b360f47edf596dd2' BIND_ADDRESS = '0.0.0.0' PORT = 9191 OFFLINE_MODE = False ### DATABASE CONFIG SQLA_DB_USER = 'pdnsadmin' SQLA_DB_PASSWORD = 'p4ssw0rd' SQLA_DB_HOST = '127.0.0.1' SQLA_DB_NAME = 'poweradmin' SQLALCHEMY_TRACK_MODIFICATIONS = True ### DATABASE - MySQL SQLALCHEMY_DATABASE_URI = 'mysql://{}:{}@{}/{}'.format( urllib.parse.quote_plus(SQLA_DB_USER), urllib.parse.quote_plus(SQLA_DB_PASSWORD), SQLA_DB_HOST, SQLA_DB_NAME ) ### DATABASE - SQLite #SQLALCHEMY_DATABASE_URI = 'sqlite:///' + os.path.join(basedir, 'pdns.db') </code> <code bash> nft add rule ip filter input ct state new tcp dport 9191 counter accept comment "PDNS_ADMIN" </code> <code bash> export FLASK_CONF=../configs/production.py export FLASK_APP=powerdnsadmin/__init__.py flask db upgrade yarn install --pure-lockfile flask assets build </code> <code bash> ./run.py </code> <code bash> tee /etc/systemd/system/powerdns-admin.service<<EOF [Unit] Description=PowerDNS-Admin Wants=network.target After=network.target mysqld.service mariadb.service [Service] PIDFile=/run/powerdns-admin/pid User=www-data Group=root WorkingDirectory=/opt/web/powerdns-admin ExecStart=/opt/web/powerdns-admin/venv/bin/gunicorn --pid /run/powerdns-admin/pid --workers 2 --bind '0.0.0.0:9191' 'powerdnsadmin:create_app()' ExecReload=/bin/kill -s HUP $MAINPID ExecStop=/bin/kill -s TERM $MAINPID PrivateTmp=true Restart=on-failure RestartSec=10 StartLimitInterval=0 [Install] WantedBy=multi-user.target EOF </code> <code bash> mkdir -p /etc/systemd/system/powerdns-admin.service.d/ tee /etc/systemd/system/powerdns-admin.service.d/override.conf<<EOF [Service] Environment="FLASK_CONF=../configs/production.py" EOF </code> <code bash> echo 'd /run/powerdns-admin 0755 www-data root -' > /etc/tmpfiles.d/powerdns-admin.conf mkdir -p /run/powerdns-admin chown -R www-data:root /run/powerdns-admin chown -R www-data:root /opt/web/powerdns-admin </code> <code bash> systemctl daemon-reload systemctl enable powerdns-admin systemctl restart powerdns-admin systemctl status powerdns-admin </code> <code bash> nano /etc/powerdns/pdns.d/api.conf </code> <code bash> webserver-port=8081 api=yes api-key=changemechangemechangeme </code> <code bash> chown -R pdns:root /etc/powerdns/ systemctl restart pdns </code> Visit PowerDNS-Admin web interface. http://your-host-ip:9191/ Click “Create an account” button and Register a user. The first user will be in the Administrator role. Provide PowerDNS API connection information before PowerDNS-Admin can query your PowerDNS data. This is done under Settings > PDNS ===== Нотатки ===== [[https://www.ylsoftware.com/news/712|Установка DNSCrypt-сервера]] [[https://dnslookup.online/ptr.html]] [[https://github.com/ngoduykhanh/PowerDNS-Admin/wiki]] [[https://repo.powerdns.com/]] [[https://fossies.org/linux/pdns-dnsdist/pdns/dnsdistdist/docs/advanced/snmp.rst]] pdnsutil create-zone example.com ns1.example.com /etc/init.d/pdns-recursor restart rec_control wipe-cache /etc/init.d/pdns-recursor status debian/pdns_server.txt Востаннє змінено: 11/10/2022 13:19повз Method Увійти