#!/bin/bash # ============================================================ # ЗАДАНИЕ 2. Настройка ISP (Linux / РЕД ОС 8) # Служба сетевого времени chrony: сервер, стратум 5. # Клиенты по заданию: HQ-SRV, HQ-CLI, BR-RTR, BR-SRV (их сети # разрешаем командой allow). Учитывается: сети HQ-RTR и BR-RTR # за NAT у ISP не видны как адреса клиентов — клиент подключается # с адреса маршрутизатора после SNAT, разрешаем обе сети линков. # ============================================================ # --- Проверка прав root --- if [[ $EUID -ne 0 ]]; then echo "Запустите скрипт с правами root (sudo bash isp.sh)" exit 1 fi # ================= ПЕРЕМЕННЫЕ (заполните перед запуском) ================= # ПРОВЕРИТЬ на РЕД ОС 8: имя конфига chrony и имя службы CHRONY_CONF="/etc/chrony.conf" CHRONY_PACKAGE="chrony" CHRONY_SERVICE="chronyd" ISO_UPSTREAM="ru.pool.ntp.org" # вышестоящий NTP-сервер (на выбор по заданию; # здесь имя, а не адрес — не адресация стенда) STRATUM="5" # стратум сервера по заданию ALLOW_NETS="172.16.1.0/28 172.16.2.0/28" # сети линков к роутерам (по заданию) EXAM_TZ="Asia/Yekaterinburg" # по заданию — Екатеринбург # ============ Проверка заполнения переменных ============ MISSING=() for NAME in ALLOW_NETS EXAM_TZ; do [[ -z "${!NAME}" ]] && MISSING+=("$NAME") done if [[ ${#MISSING[@]} -gt 0 ]]; then echo "Заполните переменные в начале скрипта: ${MISSING[*]}" exit 1 fi echo "=== Настройка chrony-сервера на ISP (стратум $STRATUM) ===" dnf install -y "$CHRONY_PACKAGE" || echo "ПРОВЕРИТЬ: пакет $CHRONY_PACKAGE не установился" # Добавляем только отсутствующие строки — повторный запуск не дублирует. add_line_once () { if ! grep -qx "$1" "$CHRONY_CONF" 2>/dev/null; then echo "$1" >> "$CHRONY_CONF" echo "Добавлено: $1" else echo "Уже есть: $1" fi } add_line_once "local stratum $STRATUM" for NET in $ALLOW_NETS; do add_line_once "allow $NET" done systemctl enable --now "$CHRONY_SERVICE" \ || { echo "ПРОВЕРИТЬ: служба $CHRONY_SERVICE не запустилась"; systemctl status "$CHRONY_SERVICE" --no-pager; } timedatectl set-timezone "$EXAM_TZ" echo "" echo "=== Самопроверка на ISP ===" echo "chronyc tracking (стролбик Stratum)" chronyc tracking 2>/dev/null || echo "(проверить chronyc tracking)" echo "" echo "sudo tail -5 $CHRONY_CONF" echo "" echo "Дополнительные проверки вручную:" echo " ss -uln | grep ':123' (NTP слушает?)" echo " chronyc sources (смотрим на upstream)" echo " с HQ-SRV/HQ-CLI/BR-RTR/BR-SRV: chronyc sources (source = адрес ISP)"