> ## Documentation Index
> Fetch the complete documentation index at: https://docs.futurex.com/llms.txt
> Use this file to discover all available pages before exploring further.

# System Preparation

> Instructions to prepare the system (package updates, firewall, tools) for BIND integration.

## Update the system and configure firewall

Update all system packages and configure the firewall to allow **DNS** traffic on **port 53**:

<Steps>
  <Step>
    Update system packages:

    ```bash expandable lines wrap title="Bash" theme={null}
    dnf update -y
    ```
  </Step>

  <Step>
    Configure firewall rules to permit DNS traffic:

    ```bash expandable lines wrap title="Bash" theme={null}
    sudo firewall-cmd --permanent --add-service=dns
    sudo firewall-cmd --reload
    ```
  </Step>
</Steps>

**Result:** The system is updated and configured to accept incoming DNS queries.

## Install build tools and development libraries

BIND 9 and pkcs11-provider require compilation from source. Install the necessary compilers, build tools, and development libraries:

<Steps>
  <Step>
    Install the EPEL repository and enable the CRB (CodeReady Builder) repository for additional development packages:

    ```bash expandable lines wrap title="Bash" theme={null}
    dnf install -y dnf-plugins-core 
    dnf config-manager --set-enabled crb 
    dnf install -y epel-release 
    dnf makecache
    ```
  </Step>

  <Step>
    Install OpenSC for PKCS#11 utilities:

    ```bash expandable lines wrap title="Bash" theme={null}
    dnf install -y opensc
    ```
  </Step>

  <Step>
    Install core build tools and libraries required for BIND compilation:

    ```bash expandable lines wrap title="Bash" theme={null}
    dnf install -y \ 
    git gcc gcc-c++ make autoconf automake libtool \ 
    openssl-devel libxml2-devel json-c-devel libuv-devel \
    libnghttp2-devel pkgconf-pkg-config meson ninja-build 
    ```
  </Step>
</Steps>

**Result:** The system has all tools necessary to compile BIND 9 with PKCS#11 support.
