# Установка DNS-сервиса

### Установка BIND DNS

<p class="callout info">**Примечание.** Если в окружении нет DNS-резолвера, можно установить локальную службу BIND DNS.</p>

Шаги ниже необходимо выполнить на сервере SMP, участвующем в установке XDR.

**1.** Обновите индекс пакетов:

```bash
sudo apt-get update
```

**2.** Установите BIND9 и DNS-инструменты:

```bash
sudo apt-get install -y bind9 bind9utils dnsutils
```

**3.** Включите и запустите службу BIND9:

```bash
sudo systemctl enable --now bind9
```

**4.** Создайте каталог для файлов зон:

```bash
sudo mkdir -p /etc/bind/zones
```

**5.** Получите короткое имя хоста этого сервера:

```bash
HOST=$(hostname -s)
```

**6.** Убедитесь, что файл конфигурации локальных зон существует:

```bash
sudo touch /etc/bind/named.conf.local
```

**7.** Задайте путь к файлу зоны и добавьте определение зоны (только если оно ещё не добавлено). Вместо `example.local` используйте свой домен для SMP.

```bash
ZFILE="/etc/bind/zones/db.example.local"
grep -q "zone \"example.local\"" /etc/bind/named.conf.local || sudo tee -a /etc/bind/named.conf.local >/dev/null <<EOF

zone "example.local" {
 type master;
 file "example.local";
};
EOF
```

**8.** Создайте файл зоны с A-записями для вашего домена:

<p class="callout info">Здесь `example.local` - домен OSMP, `xdr.example.local` - имя физического сервера OSMP, `10.10.20.96` - адрес шлюза k8s, `10.10.20.208` - адрес физического сервера OSMP. Замените эти данные на ваши значения.</p>

```bash
SERIAL=$(date +%Y%m%d01)
sudo tee "/etc/bind/zones/db.example.local" >/dev/null <<EOF
\$TTL 604800
@ IN SOA ns.example.local. admin.example.local. (
 $SERIAL
 604800
 86400
 2419200
 604800 )
@ IN NS ns.example.local.
ns IN A 10.10.20.208
api IN A 10.10.20.96
kuma IN A 10.10.20.96

*.kuma IN A 10.10.20.96
monitoring IN A 10.10.20.96
admsrv IN A 10.10.20.96
console IN A 10.10.20.96

agentserver IN A 10.10.20.96

updater IN A 10.10.20.96
xdr.example.local IN A 10.10.20.208
EOF
```

**9.** Проверьте синтаксис конфигурации BIND:

```bash
sudo named-checkconf
```

**10.** Проверьте файл зоны (замените `example.local` на имя вашего домена):

```bash
sudo named-checkzone "example.local" "/etc/bind/zones/db.example.local"
```

**11.** Перезапустите BIND9:

```bash
sudo systemctl restart bind9
```

**12.** Проверьте разрешение имён на DNS-сервере (замените `example.local` на имя вашего домена):

```bash
nslookup console.example.local
nslookup kuma.example.local
nslookup api.example.local
nslookup admsrv.example.local
nslookup monitoring.example.local
nslookup updater.example.local
```

**13.** Запросите DNS-сервер напрямую с помощью dig (замените `example.local` на имя вашего домена):

```bash
dig @10.10.20.208 api.example.local +short
dig @10.10.20.96 console.example.local +short
dig @10.10.20.96 kuma.example.local +short
```

**14.** Не забудьте настроить все остальные машины на использование этого DNS (замените example.local и 10.10.20.208 на ваши значения):

```bash
IFACE=$(ip route | awk '/default/ {print $5; exit}')
sudo resolvectl dns "$IFACE" 10.10.20.208
sudo resolvectl domain "$IFACE" example.local
```