debian:pdns_server

Розбіжності

Тут показані розбіжності між вибраною ревізією та поточною версією сторінки.

Посилання на цей список змін

Порівняння попередніх версій Попередня ревізія
Наступна ревізія
Попередня ревізія
debian:pdns_server [08/10/2022 20:35] Methoddebian:pdns_server [11/10/2022 13:19] (поточний) – [Install PowerDNS server] Method
Рядок 10: Рядок 10:
 </WRAP> </WRAP>
  
 +  sudo su
 ===== Install MariaDB ===== ===== Install MariaDB =====
-{{section>debian:mariadb&mariadb&noheader}} +[[debian:mariadb|Install MariaDB]]
-===== Install apache2 php phpMyAdmin ===== +
-{{section>debian:apache&noheader}} +
-{{section>debian:phpmyadmin&noheader}}+
  
 +За бажанням можна встановити apache2 та phpMyAdmin для доступу до бази даних через веб панель керування
 +
 +[[debian:apache|Install apache2]]
 +
 +[[debian:phpmyadmin|Install phpMyAdmin]]
  
-[[https://repo.powerdns.com/]] 
  
 ===== Install PowerDNS server ===== ===== Install PowerDNS server =====
 +
 +В репозиторіях є зазвичай, застаріла версія, тому заглянемо на сайт [[https://repo.powerdns.com/]]
 +
 +Там знаходимо стабільну версію програми і застосовуємо зміни в списку репозиторіїв
 +
 <code bash> <code bash>
-apt-get update  +sh -c 'echo "deb [arch=amd64] http://repo.powerdns.com/debian bullseye-auth-46 main" > /etc/apt/sources.list.d/pdns.list'
-apt-get install -y pdns-server pdns-backend-mysql +
-nano /etc/powerdns/pdns.d/pdns.local.gmysql.conf +
 </code> </code>
  
 <code bash> <code bash>
-# MySQL Configuration +tee /etc/apt/preferences.d/pdns<<EOF 
-# Launch gmysql backend +Package: pdns-* 
-launch+=gmysql +Pin: origin repo.powerdns.com 
-# gmysql parameters +Pin-Priority: 600 
-gmysql-host=localhost +EOF
-gmysql-port=3306 +
-gmysql-dbname=powerdns +
-gmysql-user=powerdns +
-gmysql-password=strongpassword +
-gmysql-dnssec=yes +
-# gmysql-socket=+
 </code> </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> <code bash>
-nano /etc/powerdns/pdns.conf +apt-get update  
 +apt-get install -y pdns-server pdns-backend-mysql 
 +cp -r /etc/powerdns/ /etc/powerdns.orig/
 </code> </code>
  
 <code bash> <code bash>
 +tee /etc/powerdns/pdns.conf<<EOF
 setgid=pdns setgid=pdns
 setuid=pdns setuid=pdns
Рядок 53: Рядок 58:
 include-dir=/etc/powerdns/pdns.d include-dir=/etc/powerdns/pdns.d
 launch= launch=
 +EOF
 </code> </code>
- 
 ===== prepeare mysql db ===== ===== prepeare mysql db =====
 <code bash> <code bash>
Рядок 74: Рядок 79:
 Інакше, відновимо структуру з вашої резервної копії  Інакше, відновимо структуру з вашої резервної копії 
 <code bash> <code bash>
-mysql powerdns < /usr/share/pdns-backend-mysql/schema/schema.mysql.sql+mysql powerdns < /tmp/backup_powerdns.sql
 </code> </code>
  
Рядок 87: Рядок 92:
 Якщо вони є, застосовуємо всі почерзі, починаючи з версії з резервної копії, наприклад з 4.1.0 Якщо вони є, застосовуємо всі почерзі, починаючи з версії з резервної копії, наприклад з 4.1.0
 <code bash> <code bash>
-mysql powerdns < /usr/share/pdns-backend-mysql/4.1.0_to_4.2.0_schema.mysql.sql +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/4.2.0_to_4.3.0_schema.mysql.sql+mysql powerdns < /usr/share/pdns-backend-mysql/schema/4.2.0_to_4.3.0_schema.mysql.sql
 </code> </code>
  
 +Підключимо нашу базу даних 
 +  nano /etc/powerdns/pdns.d/pdns.local.gmysql.conf
 <code bash> <code bash>
-systemctl start pdns+# 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 netstat -tap | grep pdns
 </code> </code>
  
 <code bash> <code bash>
-dig mydomain.local @127.0.0.1 -p 5300+dig mydomain.local @127.0.0.1
 dig @127.0.0.1 dig @127.0.0.1
 </code> </code>
Рядок 106: Рядок 127:
  
 [[https://github.com/PowerDNS-Admin/PowerDNS-Admin/wiki/Running-PowerDNS-Admin-on-Ubuntu-or-Debian]] [[https://github.com/PowerDNS-Admin/PowerDNS-Admin/wiki/Running-PowerDNS-Admin-on-Ubuntu-or-Debian]]
 +
  
 <code bash> <code bash>
-apt-get install -python3-dev libmysqlclient-dev libsasl2-dev libldap2-dev libssl-dev libxml2-dev libxslt1-dev +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
-libxmlsec1-dev libffi-dev pkg-config apt-transport-https virtualenv build-essential +
-apt-get install nodejs+
 </code> </code>
  
 <code bash> <code bash>
-curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg apt-key add - +curl -sL https://deb.nodesource.com/setup_18.bash 
-echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list +apt-get update && apt install -y nodejs
-apt-get update -y +
-apt-get install -y yarn+
 </code> </code>
  
 <code bash> <code bash>
-git clone https://github.com/ngoduykhanh/PowerDNS-Admin.git /opt/web/powerdns-admin +curl -sL https://dl.yarnpkg.com/debian/pubkey.gpg | gpg --dearmor | sudo tee /usr/share/keyrings/yarnkey.gpg >/dev/null 
-cd /opt/web/powerdns-admin +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 
-cp config_template.py config.py +apt-get update && apt-get install yarn 
-mysql -u root -p+</code> 
 + 
 +<code bash> 
 +mysql
 </code> </code>
  
 <code mysql> <code mysql>
-CREATE DATABASE pda+CREATE DATABASE poweradmin CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci
-GRANT ALL PRIVILEGES ON pda.* TO 'pda'@'127.0.0.1' IDENTIFIED BY 'changeme';+GRANT ALL PRIVILEGES ON poweradmin.* TO 'pdnsadmin'@'%' IDENTIFIED BY 'p4ssw0rd';
 FLUSH PRIVILEGES; FLUSH PRIVILEGES;
 quit quit
Рядок 135: Рядок 156:
  
 <code bash> <code bash>
-nano /opt/web/powerdns-admin/config.py+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>
  
 <code bash> <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' 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>
  
 <code bash> <code bash>
-virtualenv -p python3 flask +nft add rule ip filter input ct state new tcp dport 9191 counter accept comment "PDNS_ADMIN"
-source ./flask/bin/activate +
-pip install -r requirements.txt +
-pip install python-dotenv +
-export FLASK_APP=app/__init__.py +
-flask db migrate -m "Init DB" +
-flask db upgrade+
 </code> </code>
  
 <code bash> <code bash>
 +export FLASK_CONF=../configs/production.py
 +export FLASK_APP=powerdnsadmin/__init__.py
 +flask db upgrade
 +
 yarn install --pure-lockfile yarn install --pure-lockfile
 flask assets build flask assets build
Рядок 158: Рядок 215:
  
 <code bash> <code bash>
-/etc/init.d/pdns restart +./run.py
-/etc/init.d/pdns status+
 </code> </code>
- 
- 
-<code bash> 
-nano /etc/systemd/system/powerdns-admin.service 
-</code> 
- 
  
 <code bash> <code bash>
 +tee /etc/systemd/system/powerdns-admin.service<<EOF
 [Unit] [Unit]
 Description=PowerDNS-Admin Description=PowerDNS-Admin
-After=network.target+Wants=network.target 
 +After=network.target mysqld.service mariadb.service
  
 [Service] [Service]
-User=root+PIDFile=/run/powerdns-admin/pid 
 +User=www-data
 Group=root Group=root
 WorkingDirectory=/opt/web/powerdns-admin WorkingDirectory=/opt/web/powerdns-admin
-#ExecStart=/opt/web/powerdns-admin/flask/bin/gunicorn --workers 2 --bind unix:/opt/web/powerdns-admin/powerdns-admin.sock app:app +ExecStart=/opt/web/powerdns-admin/venv/bin/gunicorn --pid /run/powerdns-admin/pid --workers 2 --bind '0.0.0.0:9191' 'powerdnsadmin:create_app()' 
-ExecStart=/opt/web/powerdns-admin/flask/bin/gunicorn --workers 2 --bind 0.0.0.0:9191 app:app+ExecReload=/bin/kill -s HUP $MAINPID 
 +ExecStop=/bin/kill -s TERM $MAINPID 
 +PrivateTmp=true 
 +Restart=on-failure 
 +RestartSec=10 
 +StartLimitInterval=0
  
 [Install] [Install]
 WantedBy=multi-user.target WantedBy=multi-user.target
 +EOF
 </code> </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> <code bash>
 systemctl daemon-reload systemctl daemon-reload
-systemctl start powerdns-admin 
 systemctl enable powerdns-admin systemctl enable powerdns-admin
 +systemctl restart powerdns-admin
 +systemctl status powerdns-admin
 </code> </code>
- 
  
 <code bash> <code bash>
Рядок 197: Рядок 270:
  
 <code bash> <code bash>
 +webserver-port=8081
 api=yes api=yes
-api-key=changeme+api-key=changemechangemechangeme
 </code> </code>
- 
  
 <code bash> <code bash>
-/etc/init.d/pdns restart+chown -R pdns:root /etc/powerdns/ 
 +systemctl restart pdns
 </code> </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
  
 ===== Нотатки ===== ===== Нотатки =====
-History <details> 
-<code bash> 
-___________WSGI________ 
-apt install apache2-dev 
-sudo apt-get install uwsgi uwsgi-plugin-python 
-pip3 install mod-wsgi 
-mod_wsgi-express install-module > /etc/apache2/mods-available/wsgi.load 
-a2enmod wsgi 
-sudo a2enmod wsgi 
-systemctl restart apache2 
-nano /etc/apache2/sites-available/powerdns-admin.conf 
-nano /opt/web/powerdns-admin/powerdnsadmin.wsgi 
-uwsgi /opt/web/powerdns-admin/powerdnsadmin.wsgi 
-wsgi /opt/web/powerdns-admin/powerdnsadmin.wsgi 
-uwsgi powerdnsadmin.wsgi 
-sudo a2dissite 000-default.conf 
-sudo a2ensite powerdns-admin.conf 
-sudo apache2ctl configtest 
-systemctl restart apache2 
-systemctl status apache2 
- 
-nano /etc/systemd/system/powerdns-admin.service 
-systemctl daemon-reload 
-systemctl start powerdns-admin 
-systemctl enable powerdns-admin 
-sudo ufw allow 9191/tcp 
-sudo ufw reload 
-systemctl status powerdns-admin 
-nano /etc/systemd/system/powerdns-admin.service 
-/usr/bin/gunicorn-3.6 --workers 4 --log-level info --pid /run/powerdns-admin/pid --bind unix:/run/powerdns-admin/socket "powerdnsadmin:create_app(config='config.py')" 
-/opt/web/powerdns-admin/flask/bin/gunicorn --workers 2 --bind 0.0.0.0:9191 "powerdnsadmin:create_app(config='config.py')" 
-[Unit] 
-Description=PowerDNS-Admin 
-Requires=powerdns-admin.socket 
-Wants=network.target 
-After=network.target mysqld.service slapd.service mariadb.service 
-[Service] 
-PIDFile=/run/powerdns-admin/pid 
-User=www-data 
-Group=www-data 
-WorkingDirectory=/opt/web/powerdns-admin 
-#ExecStart=/opt/web/powerdns-admin/flask/bin/gunicorn --workers 4 --log-level info --pid /run/powerdns-admin/pid --bind unix:/run/powerdns-admin/socket "powerdnsadmin:create_app(config='config.py')" 
-ExecStart=/opt/web/powerdns-admin/flask/bin/gunicorn --workers 4 --log-level info --pid /run/powerdns-admin/pid --bind 0.0.0.0:9191 "powerdnsadmin:create_app(config='config.py')" 
-ExecReload=/bin/kill -s HUP $MAINPID 
-ExecStop=/bin/kill -s TERM $MAINPID 
-PrivateTmp=true 
-Restart=on-failure 
-RestartSec=10 
-StartLimitInterval=0 
-[Install] 
- 
-systemctl daemon-reload 
-systemctl enable powerdns-admin 
-systemctl restart powerdns-admin 
-nano /etc/systemd/system/powerdns-admin.socket 
-systemctl restart powerdns-admin 
-chmod /run/powerdns-admin 0755 www-data www-data - 
-chown  www-data:www-data /run/powerdns-admin 
-nano /etc/tmpfiles.d/powerdns-admin.conf 
-sudo systemctl daemon-reload; sudo systemctl start powerdns-admin.socket; sudo systemctl enable powerdns-admin.socket 
- 
-nano /etc/systemd/system/powerdns-admin.socket 
-nano /etc/systemd/system/powerdns-admin.service 
-systemctl disable powerdns-admin 
-systemctl enaable powerdns-admin 
-systemctl restart powerdns-admin 
-systemctl status powerdns-admin 
-systemctl status powerdns-admin 
-nano /etc/systemd/system/powerdns-admin.service 
-systemctl disable powerdns-admin 
-systemctl enaable powerdns-admin 
-systemctl restart powerdns-admin 
-systemctl status powerdns-admin 
-nano /etc/systemd/system/powerdns-admin.service 
-systemctl restart powerdns-admin 
-systemctl status powerdns-admin 
-/opt/web/powerdns-admin/flask/bin/gunicorn --workers 4 --log-level info --pid /run/powerdns-admin/pid --bind 0.0.0.0:9191 "powerdnsadmin:create_app(config='config.py')" 
-nano /etc/systemd/system/powerdns-admin.service 
-systemctl disable powerdns-admin 
-sudo systemctl daemon-reload; 
-systemctl restart powerdns-admin 
-systemctl enable powerdns-admin 
-systemctl restart powerdns-admin 
-systemctl stop powerdns-admin 
-nano /etc/systemd/system/powerdns-admin.service 
-systemctl disable powerdns-admin 
-sudo systemctl daemon-reload; 
-systemctl enable powerdns-admin 
-systemctl restart powerdns-admin 
-systemctl disable powerdns-admin 
-nano /etc/systemd/system/powerdns-admin.service 
-nano /etc/systemd/system/powerdns-admin.service 
-systemctl daemon-reload 
-systemctl start powerdns-admin 
-systemctl enable powerdns-admin 
-systemctl start powerdns-admin 
-systemctl status powerdns-admin 
-systemctl stop powerdns-admin 
-systemctl stop powerdns-admin.socket 
-systemctl stop powerdns-admin.socket 
-systemctl stop powerdns-admin 
-/opt/web/powerdns-admin/flask/bin/gunicorn --pid /run/powerdns-admin/pid --bind 0.0.0.0:9191 powerdnsadmin:create_app() 
-/opt/web/powerdns-admin/flask/bin/gunicorn  --bind 0.0.0.0:9191 powerdnsadmin:create_app() 
-/opt/web/powerdns-admin/flask/bin/gunicorn  --bind 0.0.0.0:9191 powerdnsadmin:create_app() 
-/opt/web/powerdns-admin/flask/bin/gunicorn  --bind 0.0.0.0:9191 "powerdnsadmin:create_app()" 
-/opt/web/powerdns-admin/flask/bin/gunicorn --pid /run/powerdns-admin/pid --bind 0.0.0.0:9191 "powerdnsadmin:create_app()" 
-nano /etc/systemd/system/powerdns-admin.service 
-systemctl daemon-reload 
-systemctl stop powerdns-admin.socket 
-systemctl stop powerdns-admin 
-systemctl enable powerdns-admin 
-systemctl start powerdns-admin 
-systemctl status powerdns-admin 
-nano /etc/systemd/system/powerdns-admin.service 
-systemctl daemon-reload 
-systemctl enable powerdns-admin 
-systemctl restart powerdns-admin 
-systemctl status powerdns-admin 
-nano /etc/apache2/sites-available/powerdns-admin.conf 
-sudo apache2ctl configtest 
-mod_proxy 
-sudo a2enmod proxy 
-systemctl restart apache2 
-sudo apache2ctl configtest 
-nano /etc/apache2/sites-available/powerdns-admin.conf 
-sudo apache2ctl configtest 
-systemctl restart apache2 
-nano /etc/apache2/sites-available/powerdns-admin.conf 
-sudo apache2ctl configtest 
-systemctl restart apache2 
-history 
-</code> 
-</details> 
  
 [[https://www.ylsoftware.com/news/712|Установка DNSCrypt-сервера]] [[https://www.ylsoftware.com/news/712|Установка DNSCrypt-сервера]]
  
 [[https://dnslookup.online/ptr.html]] [[https://dnslookup.online/ptr.html]]
- 
-<wrap hi>new version [[https://kifarunix.com/easily-install-and-setup-powerdns-admin-on-ubuntu-20-04/]] 
-</wrap> 
  
 [[https://github.com/ngoduykhanh/PowerDNS-Admin/wiki]] [[https://github.com/ngoduykhanh/PowerDNS-Admin/wiki]]
Рядок 356: Рядок 297:
  
 [[https://fossies.org/linux/pdns-dnsdist/pdns/dnsdistdist/docs/advanced/snmp.rst]] [[https://fossies.org/linux/pdns-dnsdist/pdns/dnsdistdist/docs/advanced/snmp.rst]]
- 
- 
- 
-  sh -c 'echo "deb [arch=amd64] http://repo.powerdns.com/debian buster-rec-master main" > /etc/apt/sources.list.d/pdns.list' 
- 
-  nano /etc/apt/preferences.d/pdns 
- 
-  Package: pdns-* 
-  Pin: origin repo.powerdns.com 
-  Pin-Priority: 600 
- 
-  curl https://repo.powerdns.com/CBC8B383-pub.asc | sudo apt-key add - && 
-  sudo apt-get update && 
-  sudo apt-get install pdns-recursor 
-   
- 
  
   pdnsutil create-zone example.com ns1.example.com   pdnsutil create-zone example.com ns1.example.com
  
-   
   /etc/init.d/pdns-recursor restart   /etc/init.d/pdns-recursor restart
   rec_control wipe-cache   rec_control wipe-cache
   /etc/init.d/pdns-recursor status   /etc/init.d/pdns-recursor status
  
  • debian/pdns_server.1665261342.txt.gz
  • Востаннє змінено: 08/10/2022 20:35
  • повз Method