net/README.md

110 lines
6.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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. Скрипты проверки (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`, поставь пояс места экзамена.