12

Сдохла флешка в DNS сервере. Возвращаем к жизни

Перепост моей статьи 2021 года из Дзена. С течением времени, что-то могло поменяться.

Всех приветствую! Решил поделиться с общественностью своим хобби. Эта пилотная статья о насущном и о том, как с этим насущным бороться.

Итак, открыв шкаф после очередного отключения света, я обнаружил, что мой основной DNS на Raspberry Pi 1 не подаёт никаких признаков жизни. Благо, ничего перенастраивать не пришлось - в своё время, позаботился о резервировании.

Первая мысль: опять выгнуло адаптер, щас прижмём. Прижал адаптер, попробовал другой -- безрезультатно. Вставил флешку через USB-кард-ридер в соседний сервер и увидел следующее:

Вывод команды dmesg

Вывод команды dmesg

LSBLK никаких блочных устройств не видит

LSBLK никаких блочных устройств не видит

Стало очевидно - умерла флешка. Ну что ж, будем возвращать сервер в работу.

Берём запасную флешку, идём на сайт Raspberry в раздел Software, выбираем Raspberry Pi OS (он же Raspbian). Записывать флешку я буду утилитой Raspberry Pi Imager.

Ставить будем Raspberry Pi OS Lite. Нажимаем Write и ждем...

После записи образа переподключаем ридер с картой и в разделе boot создаём файл ssh без расширения. Это нужно для того, чтобы при загрузке Raspberry была доступна по SSH.

Подключаем, включаем - вроде заработало. DHCP в моей сети настроен на автоматическую выдачу адреса 192.168.200.10, так что можно сразу подключаться и производить настройку.

Логин и пароль по умолчанию pi:raspberry

Логин и пароль по умолчанию pi:raspberry

Произведём первоначальную настройку через команду raspi-config:

Задаём имя хоста

Задаём имя хоста

Указываем минимально возможный объем видеопамяти

Указываем минимально возможный объем видеопамяти

Проверяем все остальные настройки и перезагружаемся.

Далее - обновляем систему:

sudo apt update

sudo apt dist-upgrade

В качестве сервера будем использовать Pi-Hole. Это фильтрующий DNS-сервер, основанный на BIND. Установка очень простая:

Скрипт сам установит всё, что нужно и применит все настройки.

В процессе установки будет задан вопрос о предпочитаемом DNS-провайдере. Я выбираю Google. Это не принципиально, ибо при синхронизации применятся старые настройки.

Отмечаем, что в сети нет IPv6. На все остальные вопросы отвечаем утвердительно.

После завершения установки меняем пароль от веб-интерфейса

pihole -a -p

Теперь установим скрипт Gravity Sync для синхронизации

export GS_INSTALL=primary && curl -sSL https://gravity.vmstan.com | bash

Для основного сервера

export GS_INSTALL=secondary && curl -sSL https://gravity.vmstan.com | bash

Для резервного(ых) сервера(ов) (он у меня уже установлен)

На основном сервере всё! Подключаемся к резервному. С него мы возьмём настройки и чёрно-белые списки.

Чтобы не было проблем с ключами, удалим папку .ssh из домашней директории, всё равно, по SSH они общаются только друг с другом.

rm -rf .ssh

Заново познакомим основной и резервный сервера

./gravity-sync/gravity-sync.sh config

В процессе настройки у нас попросят данные для удаленного доступа по SSH (IP, логин, пароль).

Теперь можно сравнить две базы:

./gravity-sync/gravity-sync.sh compare

У данного скрипта есть три основных опции синхронизации:

smart - "умная" синхронизация. По сути, чья база свежее, ту и будем синхронизировать.
pull - синхронизируем базу с основного на резервный сервер.
push - синхронизируем с резервного на основной. Вот этот вариант нам и нужен.

./gravity-sync/gravity-sync.sh push

pi@nuke-DNS2:~ $ ./gravity-sync/gravity-sync.sh push

[∞] Initalizing Gravity Sync (3.4.4)

[✓] Loading gravity-sync.conf

[✓] Evaluating arguments: PUSH

[i] Remote Pi-hole: pi@192.168.200.10

[e] Validating OpenSSH client

[e] Validating RSYNC client

[e] Validating Gravity Sync folders on nuke-DNS2

[e] Validating configuration of Pi-hole

[e] Validating configuration of SQLITE3

[✓] Connecting to 192.168.200.10

[✓] Hashing the primary Domain Database

[✓] Comparing to the secondary Domain Database

[!] Differences detected in the Domain Database

[✓] Hashing the primary Local DNS Records

[✓] Comparing to the secondary Local DNS Records

[!] Replication of Pi-hole settings is required

[?] Type FIRE PHOTON TORPEDOS to confirm: FIRE PHOTON TORPEDOS

[✓] Performing backup of primary Domain Database

[✓] Performing backup of secondary Domain Database

[✓] Checking Domain Database backup integrity

[✓] Pulling backup of primary Domain Database

[✓] Pushing the secondary Domain Database

[✓] Setting file ownership on Domain Database

[✓] Setting file permissions on Domain Database

[✓] Performing backup of primary Local DNS Records

[✓] Performing backup of secondary Local DNS Records

[✓] Pulling backup of primary Local DNS Records

[✓] Pushing the secondary Local DNS Records

[✓] Setting file ownership on Local DNS Records

[✓] Local DNS Records

[i] Inverting tachyon pulses

[✓] Updating primary FTLDNS configuration

[✓] Reloading primary FTLDNS services

[i] Performing replicator diagnostics

[e] Rehashing the primary Domain Database

[e] Recomparing to the secondary Domain Database

[e] Rehashing the primary Local DNS Records

[e] Recomparing to the secondary Local DNS Records

[✓] Purging redundant backups on secondary Pi-hole instance

[i] 3 days of backups remain (628M)

[✓] Saving the updated hashes from this replication

[✓] Logging successful PUSH

Теперь проверим результат

Основной сервер

Основной сервер

Резервный сервер

Резервный сервер

./gravity-sync/<!--noindex--><a href="https://pikabu.ru/story/sdokhla_fleshka_v_dns_servere_vozvrashchaem_k_zhizni_12041060?u=http%3A%2F%2Fgravity-sync.sh&t=gravity-sync.sh&h=ab7337555d672618982b4d7b6a3cc33526632d2a" title="http://gravity-sync.sh" target="_blank" rel="nofollow noopener">gravity-sync.sh</a><!--/noindex--> compare - репликация не требуется.

./gravity-sync/gravity-sync.sh compare - репликация не требуется.

Gоследний штрих - автоматизация синхронизации.

./gravity-sync/gravity-sync.sh automate

Указываем время в минутах между синхронизациями (5, 10, 15, 30 минут на выбор; 0 - отключить автоматическую синхронизацию). Я выбираю 30 потому что нечасто вношу изменения в базу, а маленькое время увеличит нагрузку на основной сервер из-за постоянного хэширования.

Вот и всё! Пишите в комментариях, продолжать ли дальше рассказывать о своих приключениях с техникой?

Я из 2024: Gravity Sync не работает с Pi-Hole, начиная с версии 6. В качестве альтернативы, на просторах интернета есть проект Nebula Sync. Сам я давно уже не использую Pi-Hole. Хватает Dnsmasq с кастомным конфигом на роутере.

1
Автор поста оценил этот комментарий

В своё время, позаботился о резервировании

Позаботился о резервировании - это когда взял новую флешку, раскатал на неё предусмотрительно снятый образ, воткнул - и всё снова заработало. Связь телодвижений в посте с резервированием решительно непонятна.

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества

Недвижимость и ремонт

Теги

Популярные авторы

Сообщества