# 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 (эксплуатация инфраструктуры) check/ скрипты проверки стенда после каждого задания QUESTIONS.md что проверить на стенде (имена пакетов/служб и т.д.) TROUBLESHOOT.md шпаргалка: частые проблемы и способы их решения MANUAL.md шаги, которые выполняются вручную tasks.md текст заданий (КИМ) example.sh старый пример стиля — можно игнорировать ``` ## 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. Если что-то не работает - Сначала check-скрипт соответствующей машины — он покажет, что именно FAIL. - Затем откройте `TROUBLESHOOT.md` — частые проблемы и решения по темам (сеть, GRE, OSPF, NAT, DHCP, SSH, DNS, mdadm, NFS, chrony, docker, nginx, samba, fail2ban, сертификаты). - Журналы службы: `journalctl -eu <служба> --no-pager | tail -30`. - Имена пакетов/служб, которые могут отличаться на РЕД ОС 8 — смотри `QUESTIONS.md`; соответствующие значения вынесены в переменные. - Часовой пояс — везде переменная `EXAM_TZ`, поставь пояс места экзамена. - Перед сдачей отчёта: `check_<машина>_<задание>.txt` из папки check — приложить как доказательство.