6.9 KiB
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
Перед каждым запуском:
- Откройте скрипт (
vim zadanie1/isp.sh) — заполните блок «ПЕРЕМЕННЫЕ» в начале файла (адреса, интерфейсы, имена пакетов по заданиям). - Скрипт сам проверит заполнение и перечислит пустые переменные.
- Запускайте от root:
sudo bash zadanie1/hq-rtr.sh(или bash от root). - Все скрипты можно запускать повторно — конфиги перезаписываются, строки не дублируются.
Порядок в заданиях 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, поставь пояс места экзамена.