From 6f0908b6159e28c264c451fd3c92a9082877ffd8 Mon Sep 17 00:00:00 2001 From: kimoi Date: Fri, 6 Nov 2026 16:39:10 +0500 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=BA=D1=83=D0=BC=D0=B5=D0=BD?= =?UTF-8?q?=D1=82=D0=B0=D1=86=D0=B8=D1=8F:=20README,=20QUESTIONS,=20MANUAL?= =?UTF-8?q?,=20TROUBLESHOOT?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- MANUAL.md | 114 ++++++++++++++++++++++++++++++++++++++++ QUESTIONS.md | 104 +++++++++++++++++++++++++++++++++++++ README.md | 109 ++++++++++++++++++++++++++++++++++++++ TROUBLESHOOT.md | 135 ++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 462 insertions(+) create mode 100644 MANUAL.md create mode 100644 QUESTIONS.md create mode 100644 README.md create mode 100644 TROUBLESHOOT.md diff --git a/MANUAL.md b/MANUAL.md new file mode 100644 index 0000000..b7cbd35 --- /dev/null +++ b/MANUAL.md @@ -0,0 +1,114 @@ +# MANUAL.md — шаги, которые нельзя (или не нужно) автоматизировать + +Пополняется по мере работы над заданиями 2 и 3. + +## Задание 1 + +### BR-FW — если оказался НЕ Linux +1. Смотрим, какая система стоит на ВМ BR-FW (например EcoRouter или другой МСЭ). +2. Настраиваем по логике из zadanie1/br-fw.sh: + - имя br-fw.au-team.irpo; + - интерфейс к BR-RTR: адрес из сети /30 (адресация — из таблицы 2); + - маршрут по умолчанию через адрес BR-RTR (в сети /30); + - интерфейс к BR-SRV: адрес BR-FW в сети ≤16 адресов; + - OSPF: соседство с BR-RTR, рекламируем сети линка и сети BR-SRV; + - протокол OSPF разрешаем ТОЛЬКО на интерфейсе к BR-RTR; + - часовой пояс по месту экзамена. +3. Отчёт: заполняем раздел «коммутация/маршрутизация офиса BR». + +### Таблица 2 и таблица 3 +- Заполняются вручную из вывода tools/subnet-calc.sh и из ip -4 -br address + на машинах (см. README.md, порядок запуска). + +## Задание 2 + +### HQ-CLI: ввод в домен samba-DC +Команде join нужен пароль администратора домена, нельзя автоматизировать +без секрета в файле. Делается вручную: +1. Проверить DNS: адрес BR-SRV должен резолвиться (DNS BR-SRV в /etc/resolv.conf). + Проверка: `realm discover au-team.irpo` (если используется realmd) либо + `smbclient -L //br-srv.au-team.irpo -U administrator`. +2. Ввести в домен одним из способов (уточнить на стенде, какой стек стоит + на HQ-CLI: realmd+sssd или winbind): + - realmd: `realm join au-team.irpo -U administrator` (пароль спросит); + - sssd/winbind вручную: настроить krb5.conf, затем + `net ads join -U administrator`. +3. Включить вход доменных пользователей: pam/winbind/sss настроить + (`/etc/nsswitch` и sssd.conf), перезапустить службы, проверить: + `getent passwd hquser1`. +4. Проверяем: `getent passwd hquser1`, затем `su - hquser1` — вход работает. +5. Проверить правило sudo (файл /etc/sudoers.d/hq_group от hq-cli.sh): + `su - hquser1 -c 'sudo cat /etc/hostname'` и убедиться, что другие команды + (например `sudo vim`) под пользователем группы hq НЕ работают. + +## Задание 2: Ansible — ключи на машины +После br-srv.sh ключ сгенерирован, его надо раскидать вручную (пароль +запрашивается интерактивно, автоматизации по ТЗ нет): +``` +ssh-copy-id sshuser@<адрес HQ-SRV> +ssh-copy-id sshuser@<адрес HQ-CLI> +ssh-copy-id net_admin@<адрес HQ-RTR> +ssh-copy-id net_admin@<адрес BR-RTR> +``` +Затем на BR-SRV: `ansible all -m ping` — все четыре машины должны ответить +`pong`. Если машина отвечает, а модуль не находит python — установить +python3: `dnf install -y python3`. + +### HQ-CLI: Яндекс Браузер +- Если пакет есть в репозитории РЕД ОС 8: `dnf install -y yandex-browser` + (уточнить точное имя пакета). +- Если нет — скачать rpm из Образца/Additional.iso/локальной сети и + `dnf localinstall`. Отметить в отчёте действие установки. + +## Задание 3 + +### Кибер Бэкап (HQ-SRV и агент на HQ-CLI) +Графический продукт, автоматизации через конфиги нет: +1. Устанавливаем сервер управления на HQ-SRV (пакет с ISO/сети — уточнить + источник, где именно дистрибутив). +2. В веб-интерфейсе создаём подразделение `irpo`, пользователя + `irpoadmin` с паролем `P@ssw0rd` (значения берём из задания 3 п. 9). +3. На HQ-CLI ставим агент с функциями узла хранилища, подключаем к серверу. +4. На HQ-CLI создаём директорию /backup, выбираем её устройством хранения. +5. Создаём план «копирование /etc и всех поддиректорий» для HQ-SRV. +6. Запускаем план, показываем результат, снимаем скриншоты для отчёта. + +## Задание 3 + +### HQ-SRV: HTTPS на реверс-прокси (доставка сертификатов) +Сертификаты выпущены hq-srv.sh (zadanie3) в /etc/CA. Их надо вручную доставить: +1. На ISP скопировать сертификат web/docker-домена и ключ: + `scp /etc/CA/веб_домен.crt root@<адрес ISP>:/etc/nginx/` + (аналогично ключ .key). +2. На ISP поправить пути в zadanie3/isp.sh (TLS_CERT_FILE/TLS_KEY_FILE) + и запустить скрипт повторно — он перенастроит прокси на 443. +3. На HQ-CLI скопировать root.crt и запустить zadanie3/hq-cli.sh + (укажите CA_ROOT_FILE) — доверие установится, браузер без предупреждений. +4. Проверить в браузере HQ-CLI (если GUI есть) либо curl: `curl -v https://...` + +### HQ-SRV: Кибер Бэкап 18 (или аналог) +1. Установить сервер управления (источник — Additional.iso/локальный + репозиторий, точка задания 3 п. 9; ПрИл_6 содержит точные шаги). +2. В веб-интерфейсе создать подразделение «irpo», пользователя + «irpoadmin» с паролем P@ssw0rd. +3. На HQ-CLI установить агент с функциями узла хранилища, подключить + агент к серверу HQ-SRV. +4. На узел HQ-CLI выбрать/создать директорию /backup как устройство + хранения в консоли сервера. +5. Создать план резервного копирования: HQ-SRV, директория /etc со всеми + поддиректориями, целевой узел хранения — HQ-CLI /backup. +6. Запустить план, проверить архив в хранилище. Отметить шаги в отчёте. + +### HQ-CLI: подключение pdf-принтера (если CLI без CUPS) +lpadmin/lpoptions из zadanie3/hq-cli.sh должны работать в консоли. Если +на стенде требуется GUI-подключение (GUI может отсутствовать) — сделать +через system-config-printer или настройки окружения, отметить в отчёте способ. + +### Импорт пользователей через import.sh (задание 3, п. 1) +1. Монтируем Additional.iso в каталог (переменная ISO_DIR=/mnt/iso в + скриптах задания 3). +2. Запускаем файл с образа: `bash /mnt/iso/import.sh` — скрипт сам запросит + путь к источнику, вводим `/mnt/iso/users.csv`. Импорт идёт со всеми + атрибутами. Повторно допустимо (см. задание 3 п. 1). +3. Проверка: `samba-tool user list` на BR-SRV; пользователи должны + логиниться на HQ-CLI вручную (`su - имя_пользователя`). Результат в отчёт. diff --git a/QUESTIONS.md b/QUESTIONS.md new file mode 100644 index 0000000..71fbec9 --- /dev/null +++ b/QUESTIONS.md @@ -0,0 +1,104 @@ +# QUESTIONS.md — что нужно уточнить на стенде / у экзаменатора + +Список пополняется по мере работы с заданиями 2 и 3. + +## HQ-SW (задание 1) +- По tasks.md HQ-SW — виртуальный коммутатор; кто и чем его настраивает (это + отдельная ВМ? EcoRouter? встроенный коммутатор гипервизора?) — уточнить. +- Что от него требуется по заданию 1 (что тренировать руками): + - порт в сторону HQ-SRV — access VLAN 100; + - порт в сторону HQ-CLI — access VLAN 200; + - порт в сторону HQ-RTR — trunk с VLAN 100, 200 и 999 (HQ-RTR маршрутизирует + все VLAN через ОДИН адаптер, п. 4 задания 1); + - управление в VLAN 999: IP управления HQ-SW должен быть из сети VLAN 999 + (не более 8 адресов по заданию). +- Часовой пояс на HQ-SW НЕ настраивается (п. 11 задания 1). + +## РЕД ОС 8 — менеджер сети и имена пакетов/служб (ПРОВЕРИТЬ на стенде) +- Сетевой менеджер: NetworkManager с keyfiles + (/etc/NetworkManager/system-connections/*.nmconnection)? Или + netplan/ifup? Все скрипты задания 1 написаны под NetworkManager. +- Пакет/служба для сохранения iptables: iptables (пакет iptables-services, + служба iptables)? Если используется firewalld или nftables — обсудить + с экзаменатором, поменять подход NAT. +- OSPF-демон: frr (пакет frr, конфиг /etc/frr/frr.conf, служба frr) или + quagga? В скриптах — frr, файл /etc/frr/daemons правится sed'ом + (zebra=yes, ospfd=yes) — проверить, что файл такой существует. +- Пакет DHCP-сервера: dhcp-server (служба dhcpd, конфиг /etc/dhcp/dhcpd.conf)? + Или kea/dnsmasq? В zadanie1/hq-rtr.sh — dhcp. +- DNS-сервер на HQ-SRV выбран dnsmasq (простой, A-записи через hosts-файл). + PTR-записи: dnsmasq должен отдавать обратные записи по записям hosts — + ПРОВЕРИТЬ на стенде (dig -x адрес). Если экзаменатор требует полноценный + bind — переделать hq-srv.sh. +- SELinux на РЕД ОС 8: если Enforcing, для порта SSH 2027 нужен + semanage (пакет policycoreutils-python-utils) — проверено в скриптах, + но имена пакетов ПРОВЕРИТЬ. + +## BR-FW +- Тип системы неизвестен (УТОЧНИТЬ). zadanie1/br-fw.sh написан под Linux. + Если это не Linux (EcoRouter/другой МСЭ) — настройки OSPF-соседа и + интерфейсов делаются по-своему, взять логику из скрипта как чек-лист. + +## HQ-CLI +- Графика: по предварительным данным HQ-CLI — только терминал. Пункты + задания 2 (Яндекс Браузер) и задания 3 (Кибер Бэкап GUI, принтер в GUI) + делаем через консоль где возможно, остальное — MANUAL.md/вручную. +- Установлен ли на РЕД ОС 8 репозиторий с Яндекс Браузером (dnf)? Если нет — + rpm-пакет с флешки/ISO — уточнить, откуда брать пакет. + +## Задание 2 (уточнения по ходу) +- chrony: путь конфига (/etc/chrony.conf?) и имя службы (chronyd?) на РЕД ОС 8. +- NFS: имя пакета (nfs-utils) и службы (nfs-server) на РЕД ОС 8. +- mdadm: имя файла конфигурации (/etc/mdadm.conf по заданию; RHEL-вариант + /etc/mdadm.conf может дополняться переменными mdadm.conf.d). +- Веб-приложение: пользователь службы apache на РЕД ОС 8 (apache или httpd?), + также формат данных для подключения БД в index.php — смотреть файл из ISO. +- Samba: точное имя пакета samba-dc и путь samba-tool; команда для порога + блокировки (--lockout-attempt / --lockout-threshold, зависит от версии); + имя администратора домена (administrator?). +- Ansible: пакет ansible-core vs ansible; пользователи SSH для каждой машины + (из задания 1: sshuser на серверах, net_admin на роутерах). +- Docker: пакет (docker-engine / docker-ce / podman?), имена файлов образов + в Additional.iso (site_latest, mariadb_latest — тары или директории?), + содержимое compose.yaml (маппинг портов на 8080?). +- Autofs: пакет autofs, служба autofs на РЕД ОС 8. +- Ввод HQ-CLI в домен: realmd+sssd или winbind — заранее выяснить стек. +- Подтверждение «пользователи группы hq имеют право аутентифицироваться на + HQ-CLI»: как проверять (sssd getent / su - hquser1). +- Яндекс Браузер: имя пакета в репозитории РЕД ОС 8 (yandex-browser-stable?) + или источник rpm. +- Проброс 8080 наружу: на какую сеть идут DNAT-правила (интерфейс ISP), и что + разрешён прохождение пакетов в цепочке FORWARD (политика ACCEPT). + +## Проверки (папка check/) +- chrony: имя службы (chronyd?), формат вывода `samba-tool domain passwordsettings show` + (точные строки "minimum password length" и "bad password count/lockout") — + если на стенде слова другие, поправить grep в check/zadanie2/br-srv.sh. +- Лизинг DHCP у NM: /var/lib/NetworkManager/*.lease — файлы есть на РЕД ОС 8? + (check/zadanie1/hq-cli.sh). +- `trust list` (p11-kit) доступен на РЕД ОС 8 для проверки CA (check/zadanie3/hq-cli.sh). +- atop: параметр интервала (INTERVAL/LOGINTERVAL) и путь конфига — в check/zadanie3/hq-srv.sh это переменная. +- Кибер Бэкап: имя service unit на стенде (переменная BACKUP_SERVICE_PATTERN). +- curl на ISP: если nginx уже в https-режиме, HTTP-запрос вернёт 301 (норма); + подробности в check/zadanie3/isp.sh. + +## Задание 3 (уточнения по ходу) +- ЦС «отечественные алгоритмы»: обычный openssl RSA/EC — гост-подписи не умеет. + Уточнить у экзаменатора, оправдывает ли RSA критерий (или требуется + ГОСТ-пакет, например crypto-pro/ViPNet — что доступно на стенде?). +- nginx: пакет и наличие рестаров ok (ПРОВЕРИТЬ на РЕД ОС 8). +- Обратный прокси: HQ-SRV/BR-SRV резолвятся с ISP только через статические + маршруты (office nets за маршрутизаторами) — с ISP curl пробовать до запуска. +- atop: какой конфиг-файл читает служба на РЕД ОС 8 (/etc/sysconfig/atop? + /etc/atop/atop.conf?) и как называется параметр интервала. +- cups-pdf: есть ли пакет в репозитории РЕД ОС 8; имя pdf-принтера по умолчанию + (обычно pdf); доступность порта 631 извне (файрвол/SELinux). +- fail2ban: доступен ли пакет на РЕД ОС 8 (нужен EPEL?), формат порта в jail + (2027) и backend systemd. +- Кибер Бэкап 18: откуда брать дистрибутив на стенде (ISO/файл-сервер). +- Плейбук из Additional.iso/playbook: какие переменные/инвентарь ожидает, + где создаёт отчёты PC-INFO (path в плейбуке может отличаться). +- import.sh: точно интерактивен? Если использует свой механизм вопросов — + подготовить ответы заранее (cat answers | import.sh) — изучить на стенде. +- HQ-CLI: update-ca-trust на РЕД ОС 8; есть ли поддержка ipp-подключения + принтера без GUI (lpadmin/lpoptions). diff --git a/README.md b/README.md new file mode 100644 index 0000000..3518675 --- /dev/null +++ b/README.md @@ -0,0 +1,109 @@ +# exam-net — скрипты подготовки к ДЭ 09.02.06 (Сетевое и системное администрирование) + +Автоматизация настройки стенда по заданиям 1–3 (источник — `tasks.md`). +Скрипты запускаются на соответствующих машинах (ISP, HQ-RTR, BR-RTR, BR-FW, +HQ-SRV, BR-SRV, HQ-CLI), все решения по адресации вынесены в переменные +в начале каждого скрипта. + +Структура: +``` +tools/subnet-calc.sh калькулятор подсетей (python3) +zadanie1/ скрипты задания 1 (сетевая инфраструктура) +zadanie2/ скрипты задания 2 (администрирование ОС) +zadanie3/ скрипты задания 3 (эксплуатация инфраструктуры) +QUESTIONS.md что проверить на стенде (имена пакетов/служб и т.д.) +MANUAL.md шаги, которые выполняются вручную +``` + +## 1. Как скопировать репозиторий на машину + +На любой Linux-машине стенда (РЕД ОС 8): +```bash +dnf install -y git # если git ещё нет +git clone https://git.belmpk.ru/kioroglo2410/net.git +cd net +``` + +## 2. Калькулятор подсетей + +```bash +bash tools/subnet-calc.sh 172.16.0.0/16 hq_srv=32 hq_cli=16 mgmt=8 br_srv=16 br_link=2h tunnel=2h +``` + +- Числа — это АДРЕСА (включая адрес сети и broadcast). Суффикс `h` — число хостов + (`br_link=2h` → маска /30 для линка и туннеля). +- Вывод: минимальный префикс, адрес сети, маска, первый/последний адрес хоста, + broadcast — таблицей для отчёта и для заполнения переменных скриптов. + +## 3. Порядок запуска скриптов + +Задание 1: +``` +isp.sh -> HQ-RTR -> BR-RTR -> BR-FW -> HQ-SRV -> BR-SRV -> HQ-CLI +``` + +**Перед каждым запуском:** +1. Откройте скрипт (`vim zadanie1/isp.sh`) — заполните блок «ПЕРЕМЕННЫЕ» + в начале файла (адреса, интерфейсы, имена пакетов по заданиям). +2. Скрипт сам проверит заполнение и перечислит пустые переменные. +3. Запускайте от root: `sudo bash zadanie1/hq-rtr.sh` (или bash от root). +4. Все скрипты можно запускать повторно — конфиги перезаписываются, + строки не дублируются. + +Порядок в заданиях 2 и 3 зависит от связей; ориентировочно: +- задание 2: `br-srv.sh` (samba/policy) -> `hq-srv.sh` (RAID/NFS/web) -> + `hq-cli.sh` (NFS/chrony) -> `isp.sh` (chrony-сервер) -> роутеры (DNAT). + Перед этим вручную — ввод HQ-CLI в домен (MANUAL.md) и ssh-copy-id для ansible. +- задание 3: `hq-srv.sh` (ЦС, atop, cups, fail2ban) -> доставка сертификатов + (MANUAL.md) -> `isp.sh` (реверс-прокси, HTTPS после доставки cert) -> + `hq-cli.sh` (доверие CA, принтер) -> `br-srv.sh` (import.sh, плейбук). + +## 4. Какие переменные обязательны + +Каждый скрипт в начале содержит блок переменных с комментариями. Пустые +(`""`) при запуске приведут к сообщению «Заполните переменные...» и exit 1. +Универсальные, которые заполняются на почти всех машинах: +- `*_IF` — имя сетевого интерфейса (`ip -br link` чтобы посмотреть); +- `*_ADDR`, `*_NET` — адреса из вашего расчёта (формат `адрес/префикс`); +- `*_GW` — шлюзы (адреса соседних роутеров); +- в задании 3 в `isp.sh` — `TLS_CERT_FILE`/`TLS_KEY_FILE` после доставки + сертификатов (MANUAL.md). +Порядок заполнения адресов: сначала `tools/subnet-calc.sh`, потом скрипты +в порядке раздела 3. + +## 5. Скрипты проверки (check/) + +После каждого задания запускайте на соответствующей машине проверку: +``` +check/zadanie1/hq-rtr.sh # и т.п. — имя машины == машина, где запускаем +``` +- Скрипт только читает состояние (искл. — временный файл в NFS в одной + проверке). Вывод `[OK]/[FAIL]/[ПРОПУЩЕНО]` сохраняется в + `check_<машина>_<задание>.txt` рядом — приложите к отчёту. +- Заполните переменные в начале (адреса/интерфейсы); пустая переменная → + пункт `[ПРОПУЩЕНО]`, скрипт не падает. +- Код возврата не 0, если есть FAIL. +- Отдельные пункты требуют root (sshd -T, iptables, vtysh, samba-tool) — + видят `[ПРОПУЩЕНО (нужен root)]` без него. + +## 6. Что собой представляет ручной шаг + +Не всё автоматизируется честно (пароль админа домена, интерактивные установщики, +GUI). Такие места помечены в скриптах `ДЕЛАЕТСЯ ВРУЧНУЮ` и подробно описаны +в `MANUAL.md`. Порядок сохраняется вручную, а команды самопроверки — в конце +каждого скрипта. + +## 7. Проверка результата + +- Каждый скрипт заканчивает блоком «=== Самопроверка ... ===» — там и в + интерактиве печатаются команды проверки (ping, dig, chronyc, lpstat, + fail2ban-client status, docker ps и т.д.). +- `bash -n <скрипт>` — проверка синтаксиса правок, которую вы делаете + при заполнении переменных. + +## 8. Проверить частые неточности + +- РЕД ОС 8: имена пакетов/служб могут отличаться от указанных по умолчанию + (dnsmasq? frr? dhcp? nfs-utils?) — по пунктам смотри QUESTIONS.md; + соответствующие значения вынесены в переменные. +- Часовой пояс — везде переменная `EXAM_TZ`, поставь пояс места экзамена. diff --git a/TROUBLESHOOT.md b/TROUBLESHOOT.md new file mode 100644 index 0000000..eb02997 --- /dev/null +++ b/TROUBLESHOOT.md @@ -0,0 +1,135 @@ +# TROUBLESHOOT.md — шпаргалка: частые проблемы и решения + +Правило работы: сначала запустите check-скрипт своей машины (он скажет, ЧТО +сломано), затем откройте соответствующий раздел ниже. Все команды безопасны, +кроме отмеченных ОСТОРОЖНО. + +## 0. Универсальная диагностика (всегда начинать с этого) +``` +ip -4 -br a && ip route # адреса и маршруты +ping -c2 <адрес соседа> # линк жив? +ss -tlnp # что слушает по TCP (нужен root) +ss -ulnp # что слушает по UDP (нужен root) +systemctl status <служба> --no-pager # прямая сводка о службе +journalctl -eu <служба> --no-pager | tail -30 # почему служба упала +``` + +## 1. Сеть / NetworkManager +| Симптом | Причина | Решение | +|---|---|---| +| «Connection activation failed» | нет кабеля, пустой блок [connection], конфликт профилей | `nmcli con show`, `nmcli dev status`; перезаписать профиль и `nmcli con up <имя>` | +| NM не видит файл .nmconnection | права файла не 600 | `chmod 600 <файл>`, затем `nmcli con reload` | +| Адрес есть, пингов нет | не туда воткнуто; нет маршрута по умолчанию; VLAN-порт не в trunk | проверять `ip route`; на HQ-SW порт к роутеру должен быть trunk с VLAN 100/200/999 | +| Резолвинг не работает | пустой resolv.conf / недоступен DNS | `cat /etc/resolv.conf`, `ping `; `systemctl restart NetworkManager` после смены | + +## 2. GRE +| Симптом | Причина | Решение | +|---|---|---| +| Туннель есть, пинга нет | в remote указан не тот адрес (нужен адрес роутера в сети ISP) | на ОБЕИХ сторонах `ip tunnel show`; сверить remote/local | +| Пинг от роутера к роутеру есть, от сервера нет | нет маршрутов к офисным сетям | пропишите офисные сети в OSPF (network + passive-interface) или статикой | +| Не переживает перезагрузку | профиль без autoconnect | `nmcli con modify gre1 connection.autoconnect yes` | + +## 3. OSPF (frr) +| Симптом | Причина | Решение | +|---|---|---| +| Сосед есть, но офиса не видны | забыли `network <офисная_сеть> area 0` | `vtysh -c 'show running-config'` — сравнить со списком сетей | +| Сосед в 2WAY, не Full | обычной broadcast-сети DR/BDR; в point-to-point туннеле | проще на gre: `ip ospf network point-to-point` на обеих сторонах | +| Соседей нет совсем | network-предложение не совпадает с реальной сетью; интерфейс в passive | проверить network-записи; `passive-interface default` НЕ должен включать туннель | +| MD5 не работает | другой пароль/номер ключа/нет ip ospf authentication | на обоих: `ip ospf authentication message-digest` и ОДИНАКОВЫЙ ключ+пароль | +| OSPF не слушает frr | не включены демоны | ПРОВЕРИТЬ /etc/frr/daemons: zebra=yes, ospfd=yes, `systemctl restart frr` | + +## 4. NAT / Интернет +| Симптом | Причина | Решение | +|---|---|---| +| Пинг IP 77.88.8.7 не идёт из офиса | нет MASQUERADE; ip_forward=0 | `iptables -t nat -L POSTROUTING -nv`; `cat /proc/sys/net/ipv4/ip_forward` | +| После reboot правила NAT пропали | iptables не сохранён | `iptables-save > /etc/sysconfig/iptables`, `systemctl enable iptables` (ПРОВЕРИТЬ имя) | +| Пинг IP есть, имена не резолвятся | нет DNS / NAT-адресации | `ping ya.ru`; проверка DNS-конфигурации (раздел 7) | + +## 5. DHCP +| Симптом | Причина | Решение | +|---|---|---| +| Клиент не получает адрес | служба dhcpd не активна; client не в нужной сети; range заполнен | `systemctl status dhcpd` (ПРОВЕРИТЬ имя), `nmcli con up <интерфейс>` снова | +| dhcpd не стартует | ошибка конфига (range вне сети, нет subnet) | `dhcpd -t`; `journalctl -eu dhcpd` | + +## 6. SSH (порт 2027) +| Симптом | Причина | Решение | +|---|---|---| +| Connection refused | sshd не перезапущен после смены порта; SELinux; firewall | `ss -tlnp \| grep 2027`; `getenforce` → `semanage port -a -t ssh_port_t -p tcp 2027`; `firewall-cmd --add-port=2027/tcp --permanent && firewall-cmd --reload` | +| Permission denied | AllowUsers не содержит пользователя; MaxAuthTries? | `sudo sshd -T | grep -E 'port|allowusers|maxauthtries|banner'` | +| Баннер не показывается | баннер-файл не существует/путь другой | путь в `sshd -T` должен существовать с текстом | + +## 7. DNS (dnsmasq) +| Симптом | Причина | Решение | +|---|---|---| +| dig пустой / REFUSED | служба/ports/listen-address | `systemctl status dnsmasq`; `ss -ulnp \| grep 53`; listen-address должен включать 127.0.0.1 и адрес сервера | +| A есть, PTR нет | dnsmasq не выдаёт reverse по hosts | `dig -x `; при необходимости добавить reverse-зону явно (см. QUESTIONS.md) | +| Внешние имена не резолвятся | нет `server=<адрес>` (форвардер) | `dig +short ya.ru @127.0.0.1`; добавить server-строку, рестарт | + +## 8. RAID/mdadm +| Симптом | Причина | Решение | +|---|---|---| +| после reboot нет md0 | нет ARRAY-строки в /etc/mdadm.conf; initramfs старый | строка ARRAY по UUID, затем `dracut -f` | +| mdadm: device busy | диски смонтированы/грязные | размонтировать; `wipefs -a /dev/vdX` ОСТОРОЖНО (только array-диски!) | +| /raid не монтируется | неверный UUID в fstab | `blkid /dev/md0`; сверить с fstab; `mount -a` покажет ошибку | + +## 9. NFS +| Симптом | Причина | Решение | +|---|---|---| +| mount: access denied | сеть клиента не в exports | `exportfs -v`; поправить строку; `exportfs -ra` | +| mount: connection refused | службы rpcbind/nfs-server не активны | `systemctl enable --now rpcbind nfs-server` (ПРОВЕРИТЬ имена); `ss -tlnp \| grep 2049` | +| Permission denied при записи | права ФС каталога | `ls -l /raid/nfs`, выставить владельца/права | + +## 10. chrony +| Симптом | Причина | Решение | +|---|---|---| +| Stratum 10 | нет синхронизации с upstream | `chronyc sources -v`; доступен ли upstream; порт 123/udp | +| Клиенты не синхронизируются | нет allow <сеть> на сервере; firewall | добавить `allow `, рестарт chronyd | + +## 11. Docker +| Симптом | Причина | Решение | +|---|---|---| +| docker: command not found | пакет не установлен (или podman alias) | `dnf list installed \| grep -i dock`; соответствие пакету РЕД ОС 8 (ПРОВЕРИТЬ) | +| permission denied | docker требует root | `sudo docker ...` | +| compose: no such image | образ не загружен | `docker load -i `, затем `docker compose up -d` | +| 8080 не отвечает | контейнер упал | `docker ps -a`, `docker logs `, `ss -tlnp | grep 8080` | + +## 12. Nginx / apache / mariadb +| Симптом | Причина | Решение | +|---|---|---| +| nginx -t: [emerg] ... строка X | ошибка в exam-proxy.conf | поправить строку X; после правки `systemctl reload nginx` | +| 502 Bad Gateway | бэкенд недоступен с ISP (маршруты!) | `curl -v <бэкенд-IP:порт>` с ISP; если нет — статические маршруты или OSPF | +| 401 всё время | битый htpasswd | `printf "%s:%s\n" WEB "$(openssl passwd -apr1 'P@ssw0rd')" > файл` | +| виртуальный хост показывает дефолт | нет Host-маршрутизации | проверять server_name и какой блок ловит (nginx -t покажет; curl -H "Host: ...") | +| страница 500 | ошибки PHP/подключения к БД | `tail /var/log/httpd/error_log` (ПРОВЕРИТЬ путь на РЕД ОС 8); сверить учётные данные БД в index.php | + +## 13. Samba DC +| Симптом | Причина | Решение | +|---|---|---| +| user create: password policy | пароль короче/проще политики | `samba-tool domain passwordsettings show`; ИСПОЛЬЗОВАТЬ пароль под политику | +| realm join fails | DNS BR-SRV не прописан на клиенте | `echo "nameserver " > /etc/resolv.conf`; тест `dig <домен>` | +| getent passwd hquser1 пусто | sssd/winbind не настроен/внизу | `systemctl status sssd`; логи; соглашение о формате имён группы ('hq' vs 'hq@домен') | +| sudo файл игнорируется | права не 440 / неверное имя группы | `chmod 440 /etc/sudoers.d/...`; имя группы сверить с getent | + +## 14. fail2ban +| Симптом | Причина | Решение | +|---|---|---| +| не запускается | backend не видит журнал | в jail: `backend = systemd` (если используете journald) | +| IP не банится | maxretry/bantime не применились, jail не active | `sudo fail2ban-client status sshd`; проверьте порт 2027 в jail; `fail2ban-client reload` | + +## 15. Сертификаты / https +| Симптом | Причина | Решение | +|---|---|---| +| certificate expired / not yet valid | уехало системное время | `timedatectl`; chrony должен тянуть время (задание 2) | +| unable to verify | клиент не доверяет корневому CA | root.crt в /etc/pki/ca-trust/source/anchors, `update-ca-trust` | +| браузер: CERT_AUTHORITY_INVALID | нет SAN или не доверие к CA | `openssl x509 -in cert -noout -ext subjectAltName`; домен ДОЛЖЕН быть в SAN | + +## 16. Прочее +- Перезагрузка после большинства скриптов улучшает сходимость (особенно VLAN + и туннели). Ловить проблемы после reboot — пройтись check-скриптами. +- git clone падает по сертификату — на экзамене допустимо + `git config --global http.sslVerify false` (временно) или scp репозитория. +- Пустой DISPLAY? — всё по консоли, виртуальности GUI отсутствуют. + +Если что-то сломалось не из этого списка: запустите check-скрипт машины, +посмотрите журналы (`journalctl -eu <служба> | tail -30`) и поиском по этому +файлу — похожие симптомы.