Поиск по сайту:

Как установить PowerDNS и PowerAdmin на Rocky Linux


На этой странице

  1. Предпосылки
  2. Установка и настройка сервера базы данных MariaDB
  3. Установка и настройка PowerDNS
  4. Установка PowerDNS-Admin
    1. Установка зависимостей пакетов
    2. Настройка виртуальной среды Python
    3. Установка зависимостей Python
    4. Настройка PowerDNS-Admin с базой данных MariaDB
    5. Создание схемы базы данных и создание статических файлов

    PowerDNS — это бесплатное программное обеспечение DNS-сервера с открытым исходным кодом. Его можно использовать в качестве авторитетного сервера имен и рекурсора DNS. PowerDNS написан на C++ и поддерживает несколько операционных систем, включая BSD, Linux и macOS.

    PowerDNS — это высококачественный и высокопроизводительный DNS-сервер, который поддерживает несколько типов бэкэндов, таких как BIND, и бэкенды СУБД, такие как MySQL/MariaDB, PostgreSQL и базы данных Oracle.

    Сервер PowerDNS является высокопроизводительным, он может обрабатывать десятки тысяч одновременных запросов, поддерживает DNSSEC и обеспечивает высокий уровень сценариев с помощью Lua.

    В этом руководстве мы покажем вам, как установить PowerDNS и PowerDNS-Admin в системе Rocky Linux. Мы запустим PowerDNS с базой данных MySQL/MariaDB и настроим PowerDNS-Admin, который будет использоваться в качестве веб-инструмента управления сервером PowerDNS.

    В этом руководстве также показана установка пакетов Python для проектов на основе Flask и настройка Nginx и Gunicorn, которые будут использоваться в качестве обратного прокси-сервера для веб-приложения PowerDNS-Admin.

    Предпосылки

    Чтобы начать работу с этим руководством, вам потребуются следующие требования:

    • Сервер Rocky Linux. Вы можете использовать сервер Rocky Linux v8 или v9.
    • Пользователь без полномочий root с правами администратора sudo/root.

    Установка и настройка сервера базы данных MariaDB

    PowerDNS — это масштабируемое программное обеспечение DNS-сервера, которое поддерживает несколько бэкэндов, таких как PostgreSQL, MariaDB/MySQL и SQLite. Для больших развертываний вам следует рассмотреть возможность использования PostgreSQL или MySQL/MariaDB в качестве серверной части базы данных.

    Теперь вы начнете с установки и настройки базы данных MariaDB на сервере Rocky Linux. Вы настроите PowerDNS с MariaDB в качестве серверной части базы данных.

    Репозиторий Rocky Linux по умолчанию предоставляет несколько версий серверных пакетов MariaDB. Запустите приведенную ниже команду dnf, чтобы установить сервер базы данных MariaDB.

    sudo dnf install mariadb-server

    При запросе подтверждения введите y для подтверждения и нажмите ENTER для продолжения.

    После установки сервера MariaDB выполните приведенную ниже команду systemctl, чтобы запустить и включить службу MariaDB.

    sudo systemctl start mariadb
    sudo systemctl enable mariadb

    Теперь сервер MariaDB должен быть запущен и включен. Запустите приведенную ниже команду, чтобы проверить службу MariaDB и убедиться, что служба работает.

    sudo systemctl status mariadb

    Вы увидите следующий вывод: Служба MariaDB запущена и включена, что означает, что служба будет запускаться автоматически при загрузке.

    Теперь, когда сервер MariaDB запущен, вы затем настроите и защитите установку MariaDB с помощью инструмента командной строки mysql_secure_installation.

    Выполните следующую команду, чтобы начать защиту развертывания сервера MariaDB.

    sudo mysql_secure_installation

    Затем вас попросят указать некоторые конфигурации сервера MariaDB.

    • Настроить корневой пароль MariaDB? Введите y для подтверждения и введите новый пароль для вашего сервера MariaDB, затем повторите пароль.
    • Отключить удаленный вход для привилегированного пользователя MariaDB? Введите y, чтобы подтвердить и отключить его.
    • Удалить анонимного пользователя по умолчанию из базы данных MariaDB? Введите Y для подтверждения.
    • Удалить тест базы данных по умолчанию из MariaDB? Введите y еще раз для подтверждения.
    • Наконец, перезагрузить права доступа к таблицам, чтобы применить новые изменения? Введите y для подтверждения, и MariaDB перезагрузит все привилегии и применит новые настройки.

    Теперь, когда вы защитили развертывание MariaDB, вы затем настроите новую базу данных MariaDB и пользователя для PowerDNS.

    Для начала выполните приведенную ниже команду mysql, чтобы войти в оболочку MariaDB в качестве пользователя root MariaDB.

    sudo mysql -u root -p

    Когда вас попросят ввести пароль, введите пароль вашего root-пользователя MariaDB.

    Затем выполните следующие запросы, чтобы создать новую базу данных и пользователя MariaDB. В этом примере вы создадите новую базу данных pdns с пользователем pdnsadmin и паролем password.

    CREATE DATABASE pdns;
    GRANT ALL ON pdns.* TO IDENTIFIED BY 'password';
    FLUSH PRIVILEGES;

    Теперь выполните следующие запросы, чтобы проверить права пользователя MariaDB [email .

    SHOW GRANTS FOR ;

    Вы увидите следующий вывод: пользователь MariaDB [email имеет права доступа к pdns базы данных PowerDNS.

    Теперь введите quit, чтобы выйти из оболочки MariaDB.

    При работающем сервере MariaDB вы затем установите и настроите сервер PowerDNS с серверной частью базы данных MariaDB.

    Установка и настройка PowerDNS

    После установки сервера базы данных MariaDB вы теперь установите сервер PowerDNS и настроите PowerDNS с серверной частью базы данных MariaDB.

    Для операционных систем на основе RHEL PowerDNS доступны в репозитории EPEL. Итак, перед установкой PowerDNS вы должны добавить репозиторий EPEL в свою систему.

    Запустите следующую команду dnf, чтобы установить репозиторий EPEL.

    sudo dnf install epel-release -y

    После добавления репозитория EPEL выполните следующую команду dnf, чтобы установить серверную часть PowerDNS и PowerDNS MySQL.

    sudo dnf install pdns pdns-backend-mysql

    При запросе подтверждения введите y для подтверждения и нажмите ENTER для продолжения.

    После завершения установки PowerDNS выполните следующую команду mysql, чтобы импортировать схему базы данных для PowerDNS. Следующая команда импортирует схему базы данных через пользователя pdnsadmin в MariaDB в базу данных pdns.

    sudo mysql -u pdnsadmin -p pdns < /usr/share/doc/pdns/schema.mysql.sql

    Введите пароль для пользователя pdnsadmin и нажмите ENTER для подтверждения и продолжения.

    Затем отредактируйте конфигурацию PowerDNS /etc/pdns/pdns.conf, используя следующую команду редактора nano.

    sudo nano /etc/pdns/pdns.conf

    Раскомментируйте конфигурацию бэкэнда MariaDB и измените имя базы данных, пользователя и пароль. Обязательно используйте правильные данные базы данных MariaDB, которые вы создали.

    #################################
    # launch        Which backends to launch and order to query them in
    #
    launch=gmysql

    gmysql-host=localhost
    gmysql-user=pdnsadmin
    gmysql-password=password
    gmysql-dbname=pdns

    Затем раскомментируйте API и измените значение на yes. Затем раскомментируйте параметр api-key и измените ключ по умолчанию. Следующий PowerDNS API будет использоваться для управления сервером PowerDNS через веб-приложение PowerDNS-Admin.

    #################################
    # api   Enable/disable the REST API (including HTTP listener)
    #
    api=yes

    #################################
    # api-key       Static pre-shared authentication key for access to the REST API
    #
    api-key=CHANGEME

    Сохраните файл и выйдите из редактора, когда закончите.

    После настройки сервера PowerDNS выполните следующую команду, чтобы проверить конфигурацию PowerDNS.

    pdns_server --daemon=no --guardian=no --loglevel=9

    Вы увидите вывод, подобный следующему: подключение PowerDNS к серверной части базы данных MariaDB выполнено успешно, теперь вы можете нажать Ctrl+c, чтобы завершить процесс.

    Теперь выполните следующую команду systemctl, чтобы запустить и включить службу PowerDNS.

    sudo systemctl start pdns
    sudo systemctl enable pdns

    Наконец, проверьте службу PowerDNS, чтобы убедиться, что PowerDNS запущен и включен.

    sudo systemctl status pdns

    В приведенном ниже выводе вы увидите, что текущий статус службы PowerDNS запущен и включен, что означает, что она будет запускаться автоматически в процессе загрузки.

    На этом вы завершили установку сервера PowerDNS. Затем вы начнете установку PowerDNS-Admin, которая будет использоваться в качестве интерфейса веб-интерфейса для управления сервером PowerDNS.

    Установка PowerDNS-администратора

    Теперь, когда PowerDNS запущен, вы установите и настроите PowerDNS-Admin на сервере Rocky Linux. PowerDNS-Admin — это веб-приложение на основе Python Flask, поэтому установка PowerDNS-Admin полностью аналогична установке веб-фреймворка Flask.

    Ниже приведены некоторые шаги, которые необходимо выполнить для установки PowerDNS-Admin в Rocky Linux.

    • Установка зависимостей пакетов
    • Настройка виртуальной среды Python
    • Установка зависимостей Python
    • Настройка PowerDNS-Admin с базой данных MariaDB
    • Создание схемы базы данных и создание статических файлов

    Теперь давайте начнем установку PowerDNS-Admin.

    Установка зависимостей пакетов

    Первым шагом для установки PowerDNS-Admin является установка зависимостей пакетов, таких как Python3, Pip, Node.js и Yarn.

    Прежде чем начать, запустите приведенную ниже команду dnf, чтобы включить репозиторий powertools в вашей системе Rocky Linux.

    sudo dnf config-manager --set-enabled powertools

    После включения репозитория powertools установите пакеты Python с помощью команды dnf ниже.

    sudo dnf install python3 python3-devel python3-pip python3-xmlsec gcc git mariadb-devel openldap-devel xmlsec1-devel xmlsec1-openssl libtool-ltdl-devel

    При запросе подтверждения введите y и нажмите ENTER, чтобы продолжить.

    Затем добавьте репозитории Node.js и Yarn в вашу систему с помощью приведенной ниже команды. Пакет Node.js и Yarn будет использоваться для создания статических файлов для веб-приложения PowerAdmin. В этом примере используется Node.js v16.

    curl -sL https://rpm.nodesource.com/setup_16.x | bash -
    curl -sL https://dl.yarnpkg.com/rpm/yarn.repo -o /etc/yum.repos.d/yarn.repo

    После добавления репозиториев запустите приведенную ниже команду dnf, чтобы установить диспетчер пакетов Node.js и Yarn.

    sudo dnf install nodejs yarn

    Введите y и нажмите ENTER, когда появится запрос на установку.

    Кроме того, когда будет предложено подтвердить ключ GPG, введите y и нажмите ENTER.

    Затем выполните приведенную ниже команду pip3, чтобы обновить пакет pip Python и установить virtualenv в свою систему.

    pip3 install -U pip
    pip3 install -U virtualenv

    Пип Python и virtualenv теперь будут установлены в каталоге /usr/local/bin. Добавьте каталог /usr/local/bin в системную переменную среды PATH с помощью приведенной ниже команды.

    echo "export PATH="/usr/local/bin:$PATH"" >> ~/.bashrc

    Теперь примените новые изменения в файле ~/.bashrc с помощью приведенной ниже команды. Теперь вы должны запустить команды pip и virtualenv.

    source ~/.bashrc

    Настройка виртуальной среды Python

    Установив зависимости пакетов, вы теперь загрузите исходный код PowerDNS-Admin и настроите виртуальную среду Python для PowerDNS-Admin.

    Скопируйте исходный код PowerDNS-Admin в каталог /opt/powerdns-admin с помощью следующей команды git.

    git clone https://github.com/ngoduykhanh/PowerDNS-Admin.git /opt/powerdns-admin

    После загрузки исходного кода переместите рабочий каталог в /opt/powerdns-admin и создайте новую виртуальную среду Python flask.

    cd /opt/powerdns-admin
    virtualenv -p python3 flask

    Теперь активируйте виртуальную среду Python flask с помощью приведенной ниже команды.

    source flask/bin/activate

    После активации вы должны увидеть, что приглашение стало таким, как (flask) [[email  /directory/path]#.

    Отсюда ваша рабочая среда всегда должна находиться в виртуальной среде Python flask.

    Установка зависимостей Python

    После настройки виртуальной среды Python и ее катетеризации вы затем установите зависимости Python с помощью команды pip.

    Выполните следующую команду pip, чтобы установить зависимости Python для PowerDNS-Admin.

    pip install python-dotenv
    pip install -r requirements.txt

    Теперь начнется установка. Это установит зависимости Python, необходимые для PowerDNS-Admin, которые хранятся в файле requirements.txt.

    Теперь, когда у вас установлены зависимости Python, вы готовы установить и настроить PowerDNS-Admin с базой данных MariaDB.

    Настройка PowerDNS-Admin с базой данных MariaDB

    Установив зависимости Python, вы теперь настроите PowerDNS-Admin с базой данных MariaDB. Детали базы данных для PowerDNS-Admin будут той же базой данных, что и сервер PowerDNS.

    Теперь отредактируйте файл /opt/powerdns-admin/powerdnsadmin/default_config.py, используя следующую команду редактора nano.

    nano /opt/powerdns-admin/powerdnsadmin/default_config.py

    Измените конфигурацию, как показано ниже.

    SALT = 'RANDOM-GENERATED'
    SECRET_KEY = 'RANDOM-GENERATED'
    BIND_ADDRESS = '0.0.0.0'
    PORT = 9191
    HSTS_ENABLED = False
    OFFLINE_MODE = False

    SQLA_DB_USER = 'pdnsadmin'
    SQLA_DB_PASSWORD = 'password'
    SQLA_DB_HOST = '127.0.0.1'
    SQLA_DB_NAME = 'pdns'
    SQLALCHEMY_TRACK_MODIFICATIONS = True

    Сохраните файл и выйдите из редактора, когда закончите.

    Создание схемы базы данных и создание статических файлов

    После настройки базы данных MariaDB в PowerDNS-Admin вы затем перенесете базу данных и создадите статические файлы для PowerDNS-Admin.

    Сначала выполните следующую команду, чтобы перенести базу данных PowerDNS-Admin. Это добавит новую схему базы данных в базу данных, которая будет использоваться для PowerDNS-Admin.

    export FLASK_APP=powerdnsadmin/__init__.py
    flask db upgrade

    Ниже приведен вывод, который вы получите, когда миграция базы данных будет завершена.

    После завершения миграции базы данных выполните следующую команду, чтобы сгенерировать статические файлы для PowerDNS-Admin.

    yarn install --pure-lockfile
    flask assets build

    Ниже вы можете увидеть установку некоторых зависимостей JavaScript через менеджер пакетов пряжи и процесс создания статических файлов для PowerDNS-Admin.

    При создании статических файлов выполните следующую команду, чтобы деактивировать виртуальную среду Python.

    deactivate

    На этом вы завершили базовую установку PowerDNS-Admin с сервером базы данных MariaDB. Теперь вы можете запустить приложение PowerDNS-Admin через командную строку, но вы также можете запустить PowerDNS-Admin как службу systemd.

    Настройка службы Systemd для PowerDNS-Admin

    На этом шаге вы настроите новый файл службы systemd для приложения PowerDNS-Admin. Это позволяет вам легко управлять и поддерживать PowerDNS-Admin с помощью команды systemd. Также это упростит настройку PowerDNS-Admin.

    Для начала создайте новый файл службы systemd /etc/systemd/system/powerdns-admin.service, используя следующую команду редактора nano.

    sudo nano /etc/systemd/system/powerdns-admin.service

    Добавьте приведенную ниже конфигурацию в файл. С этой конфигурацией вы будете запускать приложение PowerDNS-Admin через пушку и работать как пользователь и группа pdns. Кроме того, PowerDNS-Admin будет запущен с файлом сокета UNIX /run/powerdns-admin/socket.

    [Unit]
    Description=PowerDNS-Admin
    Requires=powerdns-admin.socket
    After=network.target

    [Service]
    PIDFile=/run/powerdns-admin/pid
    User=pdns
    Group=pdns
    WorkingDirectory=/opt/powerdns-admin
    ExecStartPre=+mkdir -p /run/powerdns-admin/
    ExecStartPre=+chown pdns:pdns -R /run/powerdns-admin/
    ExecStart=/usr/local/bin/gunicorn --pid /run/powerdns-admin/pid --bind unix:/run/powerdns-admin/socket 'powerdnsadmin:create_app()'
    ExecReload=/bin/kill -s HUP $MAINPID
    ExecStop=/bin/kill -s TERM $MAINPID
    PrivateTmp=true

    [Install]
    WantedBy=multi-user.target

    Сохраните файл и выйдите из редактора, когда закончите.

    Затем создайте новый файл сокета systemd для PowerDNS-Admin /etc/systemd/system/powerdns-admin.socket, используя приведенный ниже редактор nano.

    sudo nano /etc/systemd/system/powerdns-admin.socket

    Добавьте следующую конфигурацию в файл.

    [Unit]
    Description=PowerDNS-Admin socket

    [Socket]
    ListenStream=/run/powerdns-admin/socket

    [Install]
    WantedBy=sockets.target

    Сохраните файл и выйдите из редактора, когда закончите.

    Теперь создайте новый файл конфигурации /etc/tmpfiles.d/powerdns-admin.conf, используя приведенную ниже команду редактора nano.

    sudo nano /etc/tmpfiles.d/powerdns-admin.conf

    Добавьте следующую конфигурацию в файл.

    d /run/powerdns-admin 0755 pdns pdns -

    Сохраните файл и выйдите из редактора, когда закончите.

    После добавления нового служебного файла systemd и новой конфигурации выполните следующую команду, чтобы перезагрузить диспетчер systemd и применить новые служебные файлы в systemd.

    sudo systemctl daemon-reload

    Теперь запустите и включите службу PowerDNS-Admin с помощью следующей команды systemctl. Теперь PowerDNS-Admin должен работать с gunicorn и открывать файл сокета, который находится в каталоге /run/powerdns-admin/.

    sudo systemctl start powerdns-admin.socket powerdns-admin.service
    sudo systemctl enable powerdns-admin.socket powerdns-admin.service

    Наконец, выполните следующую команду, чтобы проверить службу PowerDNS-Admin и убедиться, что служба работает.

    sudo systemctl status powerdns-admin.service powerdns-admin.socket

    В приведенном ниже выводе powerdns-admin.service и powerdns-admin.socket запущены, и оба включены. Обе службы будут запускаться автоматически при запуске системы.

    Установка Nginx в качестве обратного прокси для PowerDNS-Admin

    На этом этапе вы настроите Nginx в качестве обратного прокси-сервера для PowerDNS-Admin.

    Запустите следующую команду dnf, чтобы установить Nginx на ваш сервер Rocky Linux. При появлении запроса введите y для подтверждения и нажмите ENTER для продолжения.

    sudo dnf install nginx

    Затем создайте новый блок сервера Nginx /etc/nginx/conf.d/pdns.conf, используя следующий редактор nano.

    sudo nano /etc/nginx/conf.d/pdns.conf

    Добавьте следующую конфигурацию в файл и обязательно измените имя домена. В этом примере используется домен pdns.hwdomain.io для PowerDNS-Admin.

    server {
            listen                  80;
            server_name             pdns.hwdomain.io;
            return 301 https://$http_host$request_uri;
    }

    server {
            listen                  443 ssl http2;
            server_name              pdns.hwdomain.io;
            index                   index.html index.htm;
            error_log               /var/log/nginx/error_powerdnsadmin.log error;
            access_log              off;

            ssl_certificate                 /etc/letsencrypt/live/pdns.hwdomain.io/fullchain.pem;
            ssl_certificate_key             /etc/letsencrypt/live/pdns.hwdomain.io/privkey.pem;
            #ssl_dhparam                     path_to_your_dhparam.pem;
            ssl_prefer_server_ciphers       on;
            ssl_ciphers                     'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';
            ssl_session_cache               shared:SSL:10m;

            client_max_body_size            10m;
            client_body_buffer_size         128k;
            proxy_redirect                  off;
            proxy_connect_timeout           90;
            proxy_send_timeout              90;
            proxy_read_timeout              90;
            proxy_buffers                   32 4k;
            proxy_buffer_size               8k;
            proxy_set_header                Host $http_host;
            proxy_set_header                X-Scheme $scheme;
            proxy_set_header                X-Real-IP $remote_addr;
            proxy_set_header                X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header                X-Forwarded-Proto $scheme;
            proxy_headers_hash_bucket_size  64;

            location ~ ^/static/  {
                    include         mime.types;
                    root            /opt/powerdns-admin/powerdnsadmin;
                    location        ~* \.(jpg|jpeg|png|gif)$ { expires 365d; }
                    location        ~* ^.+.(css|js)$ { expires 7d; }
            }

            location ~ ^/upload/  {
                    include         mime.types;
                    root            /opt/powerdns-admin;
                    location        ~* \.(jpg|jpeg|png|gif)$ { expires 365d; }
                    location        ~* ^.+.(css|js)$ { expires 7d; }
            }

            location / {
                    proxy_pass              http://unix:/run/powerdns-admin/socket;
                    proxy_read_timeout      120;
                    proxy_connect_timeout   120;
                    proxy_redirect          http:// $scheme://;
            }
    }

    Сохраните файл и выйдите из редактора, когда закончите.

    Затем выполните следующую команду, чтобы проверить конфигурацию Nginx и убедиться, что конфигурация верна. Вы должны увидеть выходное сообщение, такое как синтаксис в порядке - проверка прошла успешно.

    sudo nginx -t

    Теперь выполните следующую команду systemctl, чтобы запустить и включить службу Nginx.

    sudo systemctl start nginx
    sudo systemctl enable nginx

    Наконец, проверьте службу Nginx с помощью следующей команды, чтобы убедиться, что служба работает.

    sudo systemctl status nginx

    Вы должны увидеть вывод о том, что служба nginx запущена и включена. При этом служба Nginx будет запускаться автоматически при запуске системы.

    Доступ к установке PowerDNS-Admin

    Откройте веб-браузер и перейдите на доменное имя вашей установки PowerDNS-Admin (например, https://pdns.hwdomain.io), и вы должны получить страницу входа в PowerDNS-Admin.

    Щелкните ссылку Создать учетную запись, чтобы настроить нового пользователя-администратора для PowerDNS-Admin.

    Теперь введите данные нового пользователя, адрес электронной почты и пароль. Затем нажмите Зарегистрироваться для подтверждения.

    После создания пользователя-администратора вы снова будете перенаправлены на страницу входа в PowerDNS-Admin. Войдите в систему с новым именем пользователя и паролем, затем нажмите Войти.

    Теперь вы должны получить панель управления PowerDNS-Admin. PowerDNS-Admin работает, но еще не подключен к серверу PowerDNS.

    Чтобы настроить сервер PowerDNS с помощью PowerDNS-Admin, вы должны добавить ключ API, который вы настроили через сервер PowerDNS, в PowerDNS-Admin.

    Введите данные API сервера PowerDNS в раздел «Настройки PDNS» и нажмите «Обновить».

    Когда PowerDNS-Admin и сервер PowerDNS подключены через API, ваша панель управления должна выглядеть так, как показано на следующем снимке экрана.

    Отсюда теперь вы можете легко добавлять новые записи DNS или легко изменять существующие записи DNS через панель управления PowerDNS-Admin.

    Заключение

    В этом руководстве вы узнали, как установить сервер PowerDNS с базой данных MySQL/MariaDB на сервер Rocky Linux. Вы также узнали об основах развертывания базы данных MariaDB в Rocky Linux. Наконец, вы научились устанавливать и настраивать PowerDNS-Admin, который будет использоваться в качестве веб-инструмента управления сервером PowerDNS. PowerDNS-Admin работает с Nginx в качестве обратного прокси-сервера и базой данных MariaDB.

    Теперь, когда сервер PowerDNS и PowerDNS-Admin запущены, вы можете управлять своим DNS-сервером через панель веб-администрирования. Вы можете добавлять, редактировать или удалять записи DNS через панель администрирования PowerDNS-Admin.