debian:pdns_server

Це стара версія документу!


PowerDNS Server

Розгортаємо високопродуктивний безкоштовний авторитарний DNS-сервер для тримання власних зон доменів

All we do from sudo user!!!

sudo su

В репозиторіях є зазвичай, застаріла версія, тому заглянемо на сайт https://repo.powerdns.com/

Там знаходимо стабільну версію програми і застосовуємо зміни в списку репозиторіїв

sh -c 'echo "deb [arch=amd64] http://repo.powerdns.com/debian bullseye-auth-46 main" > /etc/apt/sources.list.d/pdns.list'
tee /etc/apt/preferences.d/pdns<<EOF
Package: pdns-*
Pin: origin repo.powerdns.com
Pin-Priority: 600
EOF
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/*
apt-get update 
apt-get install -y pdns-server pdns-backend-mysql
nano /etc/powerdns/pdns.conf 
setgid=pdns
setuid=pdns
local-address=127.0.0.1
local-port=53
include-dir=/etc/powerdns/pdns.d
launch=
mysql -u root -p
CREATE DATABASE powerdns;
GRANT ALL ON powerdns.* TO 'powerdns'@'localhost' IDENTIFIED BY 'strongpassword';
FLUSH PRIVILEGES;
quit;

Якщо це нове встановлення, то створимо структуру бази даних

mysql powerdns < /usr/share/pdns-backend-mysql/schema/schema.mysql.sql

Інакше, відновимо структуру з вашої резервної копії

mysql powerdns < /tmp/backup_powerdns.sql

Після відновлення з резервної копії, перевіряємо наявність змін структури

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"

Якщо вони є, застосовуємо всі почерзі, починаючи з версії з резервної копії, наприклад з 4.1.0

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

Підключимо нашу базу даних

nano /etc/powerdns/pdns.d/pdns.local.gmysql.conf
# 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=
systemctl restart pdns
netstat -tap | grep pdns
dig mydomain.local @127.0.0.1
dig @127.0.0.1

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

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
curl -sL https://deb.nodesource.com/setup_18.x | bash -
apt-get update && apt install -y nodejs
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
mysql
CREATE DATABASE poweradmin CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
GRANT ALL PRIVILEGES ON poweradmin.* TO 'pdnsadmin'@'%' IDENTIFIED BY 'p4ssw0rd';
FLUSH PRIVILEGES;
quit
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
cp /opt/web/powerdns-admin/configs/development.py /opt/web/powerdns-admin/configs/production.py
nano /opt/web/powerdns-admin/configs/production.py
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')
nft add rule ip filter input ct state new tcp dport 9191 counter accept comment "PDNS_ADMIN"
export FLASK_CONF=../configs/production.py
export FLASK_APP=powerdnsadmin/__init__.py
flask db upgrade
 
yarn install --pure-lockfile
flask assets build
./run.py
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
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
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
systemctl daemon-reload
systemctl start powerdns-admin
systemctl enable powerdns-admin
systemctl daemon-reload
systemctl enable powerdns-admin
systemctl restart powerdns-admin
systemctl status powerdns-admin
nano /etc/powerdns/pdns.d/api.conf
webserver-port=8081
api=yes
api-key=changemechangemechangeme
systemctl restart pdns

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</code>

Цей сайт використовує кукі. Перебуваючи тут, ви погоджуєтеся з їх зберіганням на вашому комп'ютері. Також ви підтверджуєте, що прочитали і зрозуміли нашу Політику конфіденційності. Якщо ви не згодні - покиньте сайт.Більше інформації про куки
  • debian/pdns_server.1665311711.txt.gz
  • Востаннє змінено: 09/10/2022 10:35
  • повз Method