# 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. Какие переменные обязательны Адресация вычисляется автоматически по схеме из `tools/subnets.py` — вверху файлов настроек остаётся одна (или две) переменных: | Файлы | Переменная | Описание | |---|---|---| | `zadanie1/hq-*.sh` | `HQ_BASE="10.10.100.0/24"` | базовая сеть HQ: VLAN100=+0/27, VLAN200=+32/28, VLAN999=+48/29; роутер=+1, сервер=+2 | | `zadanie1/br-*.sh` | `BR_BASE="10.10.200.0/24"` | базовая сеть BR: BR-SRV=+0/28, линк к BR-FW=+32/30; BR-FW=+1, BR-SRV=+2, BR-RTR=+1 на линке | | `zadanie1/hq-srv.sh` | `HQ_CLI_IP=""` | единст­венную непрогнозируемую: адрес HQ-CLI после выдачи DHCP (вписать потом) | | `zadanie1/isp.sh` | `HOSTNAME_FQDN` | имя ISP — уже проставлено типовое `isp.au-team.irpo` | Константы заданий (не править без нужды): линки ISP 172.16.1.0/28 и 172.16.2.0/28 (ISP=.1, роутер=.2), туннель GRE 10.10.10.0/30 (.1/.2), DNS 8.8.8.8, порт SSH 2027, пароли P@ssw0rd, часовой пояс Asia/Yekaterinburg. Интерфейсы: enp0s3=1-й NIC (WAN/к-ISP/серверные), enp0s8/enp0s9 = LAN. Проверить свою схему можно командой: ``` python3 tools/subnets.py hq 10.10.100.0/24 && python3 tools/subnets.py br 10.10.200.0/24 ``` ## 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 <скрипт>` — проверка синтаксиса правок, которую вы делаете при заполнении переменных. - `check/<машинa>.sh` — полный отчёт (см. раздел 5). ## 8. Как я (ассистент) могу посмотреть состояние ваших машин Двух путей — по выбору: - **SSH-доступ** (проще всего, напрямую): машины должны быть доступны с этой рабочей станции по сети (пароль/ключ). Тогда я смогу запускать скрипты и читать вывод как на месте. - **Без SSH, через git (достаточно для проверки):** запускаете check-скрипт на машине, логи `check_<машина>_<задание>.txt` складываете в папку `reports/` в репо и коммитите; я прочитаю их здесь и скажу, что чинить. Быстро: `git add reports && git commit -m "логи проверки" && git push`. ## 9. Если что-то не работает - Сначала 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 — приложить как доказательство.