Go to file
2026-11-06 16:39:10 +05:00
check Задание 3: скрипты настройки и проверки 2026-11-06 16:39:10 +05:00
tools Задание 1: скрипты настройки и проверки 2026-11-06 16:39:10 +05:00
zadanie1 Задание 1: скрипты настройки и проверки 2026-11-06 16:39:10 +05:00
zadanie2 Задание 2: скрипты настройки и проверки 2026-11-06 16:39:10 +05:00
zadanie3 Задание 3: скрипты настройки и проверки 2026-11-06 16:39:10 +05:00
example.sh Добавить задание КИМ (tasks.md) 2026-11-06 10:20:30 +05:00
MANUAL.md Документация: README, QUESTIONS, MANUAL, TROUBLESHOOT 2026-11-06 16:39:10 +05:00
QUESTIONS.md Документация: README, QUESTIONS, MANUAL, TROUBLESHOOT 2026-11-06 16:39:10 +05:00
README.md Документация: README, QUESTIONS, MANUAL, TROUBLESHOOT 2026-11-06 16:39:10 +05:00
tasks.md Добавить задание КИМ (tasks.md) 2026-11-06 10:20:30 +05:00
TROUBLESHOOT.md Документация: README, QUESTIONS, MANUAL, TROUBLESHOOT 2026-11-06 16:39:10 +05:00

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):

dnf install -y git          # если git ещё нет
git clone https://git.belmpk.ru/kioroglo2410/net.git
cd net

2. Калькулятор подсетей

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, поставь пояс места экзамена.