diff --git a/README.md b/README.md new file mode 100644 index 0000000..db141f2 --- /dev/null +++ b/README.md @@ -0,0 +1,94 @@ +# 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. Что собой представляет ручной шаг + +Не всё автоматизируется честно (пароль админа домена, интерактивные установщики, +GUI). Такие места помечены в скриптах `ДЕЛАЕТСЯ ВРУЧНУЮ` и подробно описаны +в `MANUAL.md`. Порядок сохраняется вручную, а команды самопроверки — в конце +каждого скрипта. + +## 6. Проверка результата + +- Каждый скрипт заканчивает блоком «=== Самопроверка ... ===» — там и в + интерактиве печатаются команды проверки (ping, dig, chronyc, lpstat, + fail2ban-client status, docker ps и т.д.). +- `bash -n <скрипт>` — проверка синтаксиса правок, которую вы делаете + при заполнении переменных. + +## 7. Проверить частые неточности + +- РЕД ОС 8: имена пакетов/служб могут отличаться от указанных по умолчанию + (dnsmasq? frr? dhcp? nfs-utils?) — по пунктам смотри QUESTIONS.md; + соответствующие значения вынесены в переменные. +- Часовой пояс — везде переменная `EXAM_TZ`, поставь пояс места экзамена.