Документация: README, QUESTIONS, MANUAL, TROUBLESHOOT
This commit is contained in:
parent
14b5b2ee95
commit
6f0908b615
114
MANUAL.md
Normal file
114
MANUAL.md
Normal file
|
|
@ -0,0 +1,114 @@
|
|||
# MANUAL.md — шаги, которые нельзя (или не нужно) автоматизировать
|
||||
|
||||
Пополняется по мере работы над заданиями 2 и 3.
|
||||
|
||||
## Задание 1
|
||||
|
||||
### BR-FW — если оказался НЕ Linux
|
||||
1. Смотрим, какая система стоит на ВМ BR-FW (например EcoRouter или другой МСЭ).
|
||||
2. Настраиваем по логике из zadanie1/br-fw.sh:
|
||||
- имя br-fw.au-team.irpo;
|
||||
- интерфейс к BR-RTR: адрес из сети /30 (адресация — из таблицы 2);
|
||||
- маршрут по умолчанию через адрес BR-RTR (в сети /30);
|
||||
- интерфейс к BR-SRV: адрес BR-FW в сети ≤16 адресов;
|
||||
- OSPF: соседство с BR-RTR, рекламируем сети линка и сети BR-SRV;
|
||||
- протокол OSPF разрешаем ТОЛЬКО на интерфейсе к BR-RTR;
|
||||
- часовой пояс по месту экзамена.
|
||||
3. Отчёт: заполняем раздел «коммутация/маршрутизация офиса BR».
|
||||
|
||||
### Таблица 2 и таблица 3
|
||||
- Заполняются вручную из вывода tools/subnet-calc.sh и из ip -4 -br address
|
||||
на машинах (см. README.md, порядок запуска).
|
||||
|
||||
## Задание 2
|
||||
|
||||
### HQ-CLI: ввод в домен samba-DC
|
||||
Команде join нужен пароль администратора домена, нельзя автоматизировать
|
||||
без секрета в файле. Делается вручную:
|
||||
1. Проверить DNS: адрес BR-SRV должен резолвиться (DNS BR-SRV в /etc/resolv.conf).
|
||||
Проверка: `realm discover au-team.irpo` (если используется realmd) либо
|
||||
`smbclient -L //br-srv.au-team.irpo -U administrator`.
|
||||
2. Ввести в домен одним из способов (уточнить на стенде, какой стек стоит
|
||||
на HQ-CLI: realmd+sssd или winbind):
|
||||
- realmd: `realm join au-team.irpo -U administrator` (пароль спросит);
|
||||
- sssd/winbind вручную: настроить krb5.conf, затем
|
||||
`net ads join -U administrator`.
|
||||
3. Включить вход доменных пользователей: pam/winbind/sss настроить
|
||||
(`/etc/nsswitch` и sssd.conf), перезапустить службы, проверить:
|
||||
`getent passwd hquser1`.
|
||||
4. Проверяем: `getent passwd hquser1`, затем `su - hquser1` — вход работает.
|
||||
5. Проверить правило sudo (файл /etc/sudoers.d/hq_group от hq-cli.sh):
|
||||
`su - hquser1 -c 'sudo cat /etc/hostname'` и убедиться, что другие команды
|
||||
(например `sudo vim`) под пользователем группы hq НЕ работают.
|
||||
|
||||
## Задание 2: Ansible — ключи на машины
|
||||
После br-srv.sh ключ сгенерирован, его надо раскидать вручную (пароль
|
||||
запрашивается интерактивно, автоматизации по ТЗ нет):
|
||||
```
|
||||
ssh-copy-id sshuser@<адрес HQ-SRV>
|
||||
ssh-copy-id sshuser@<адрес HQ-CLI>
|
||||
ssh-copy-id net_admin@<адрес HQ-RTR>
|
||||
ssh-copy-id net_admin@<адрес BR-RTR>
|
||||
```
|
||||
Затем на BR-SRV: `ansible all -m ping` — все четыре машины должны ответить
|
||||
`pong`. Если машина отвечает, а модуль не находит python — установить
|
||||
python3: `dnf install -y python3`.
|
||||
|
||||
### HQ-CLI: Яндекс Браузер
|
||||
- Если пакет есть в репозитории РЕД ОС 8: `dnf install -y yandex-browser`
|
||||
(уточнить точное имя пакета).
|
||||
- Если нет — скачать rpm из Образца/Additional.iso/локальной сети и
|
||||
`dnf localinstall`. Отметить в отчёте действие установки.
|
||||
|
||||
## Задание 3
|
||||
|
||||
### Кибер Бэкап (HQ-SRV и агент на HQ-CLI)
|
||||
Графический продукт, автоматизации через конфиги нет:
|
||||
1. Устанавливаем сервер управления на HQ-SRV (пакет с ISO/сети — уточнить
|
||||
источник, где именно дистрибутив).
|
||||
2. В веб-интерфейсе создаём подразделение `irpo`, пользователя
|
||||
`irpoadmin` с паролем `P@ssw0rd` (значения берём из задания 3 п. 9).
|
||||
3. На HQ-CLI ставим агент с функциями узла хранилища, подключаем к серверу.
|
||||
4. На HQ-CLI создаём директорию /backup, выбираем её устройством хранения.
|
||||
5. Создаём план «копирование /etc и всех поддиректорий» для HQ-SRV.
|
||||
6. Запускаем план, показываем результат, снимаем скриншоты для отчёта.
|
||||
|
||||
## Задание 3
|
||||
|
||||
### HQ-SRV: HTTPS на реверс-прокси (доставка сертификатов)
|
||||
Сертификаты выпущены hq-srv.sh (zadanie3) в /etc/CA. Их надо вручную доставить:
|
||||
1. На ISP скопировать сертификат web/docker-домена и ключ:
|
||||
`scp /etc/CA/веб_домен.crt root@<адрес ISP>:/etc/nginx/`
|
||||
(аналогично ключ .key).
|
||||
2. На ISP поправить пути в zadanie3/isp.sh (TLS_CERT_FILE/TLS_KEY_FILE)
|
||||
и запустить скрипт повторно — он перенастроит прокси на 443.
|
||||
3. На HQ-CLI скопировать root.crt и запустить zadanie3/hq-cli.sh
|
||||
(укажите CA_ROOT_FILE) — доверие установится, браузер без предупреждений.
|
||||
4. Проверить в браузере HQ-CLI (если GUI есть) либо curl: `curl -v https://...`
|
||||
|
||||
### HQ-SRV: Кибер Бэкап 18 (или аналог)
|
||||
1. Установить сервер управления (источник — Additional.iso/локальный
|
||||
репозиторий, точка задания 3 п. 9; ПрИл_6 содержит точные шаги).
|
||||
2. В веб-интерфейсе создать подразделение «irpo», пользователя
|
||||
«irpoadmin» с паролем P@ssw0rd.
|
||||
3. На HQ-CLI установить агент с функциями узла хранилища, подключить
|
||||
агент к серверу HQ-SRV.
|
||||
4. На узел HQ-CLI выбрать/создать директорию /backup как устройство
|
||||
хранения в консоли сервера.
|
||||
5. Создать план резервного копирования: HQ-SRV, директория /etc со всеми
|
||||
поддиректориями, целевой узел хранения — HQ-CLI /backup.
|
||||
6. Запустить план, проверить архив в хранилище. Отметить шаги в отчёте.
|
||||
|
||||
### HQ-CLI: подключение pdf-принтера (если CLI без CUPS)
|
||||
lpadmin/lpoptions из zadanie3/hq-cli.sh должны работать в консоли. Если
|
||||
на стенде требуется GUI-подключение (GUI может отсутствовать) — сделать
|
||||
через system-config-printer или настройки окружения, отметить в отчёте способ.
|
||||
|
||||
### Импорт пользователей через import.sh (задание 3, п. 1)
|
||||
1. Монтируем Additional.iso в каталог (переменная ISO_DIR=/mnt/iso в
|
||||
скриптах задания 3).
|
||||
2. Запускаем файл с образа: `bash /mnt/iso/import.sh` — скрипт сам запросит
|
||||
путь к источнику, вводим `/mnt/iso/users.csv`. Импорт идёт со всеми
|
||||
атрибутами. Повторно допустимо (см. задание 3 п. 1).
|
||||
3. Проверка: `samba-tool user list` на BR-SRV; пользователи должны
|
||||
логиниться на HQ-CLI вручную (`su - имя_пользователя`). Результат в отчёт.
|
||||
104
QUESTIONS.md
Normal file
104
QUESTIONS.md
Normal file
|
|
@ -0,0 +1,104 @@
|
|||
# QUESTIONS.md — что нужно уточнить на стенде / у экзаменатора
|
||||
|
||||
Список пополняется по мере работы с заданиями 2 и 3.
|
||||
|
||||
## HQ-SW (задание 1)
|
||||
- По tasks.md HQ-SW — виртуальный коммутатор; кто и чем его настраивает (это
|
||||
отдельная ВМ? EcoRouter? встроенный коммутатор гипервизора?) — уточнить.
|
||||
- Что от него требуется по заданию 1 (что тренировать руками):
|
||||
- порт в сторону HQ-SRV — access VLAN 100;
|
||||
- порт в сторону HQ-CLI — access VLAN 200;
|
||||
- порт в сторону HQ-RTR — trunk с VLAN 100, 200 и 999 (HQ-RTR маршрутизирует
|
||||
все VLAN через ОДИН адаптер, п. 4 задания 1);
|
||||
- управление в VLAN 999: IP управления HQ-SW должен быть из сети VLAN 999
|
||||
(не более 8 адресов по заданию).
|
||||
- Часовой пояс на HQ-SW НЕ настраивается (п. 11 задания 1).
|
||||
|
||||
## РЕД ОС 8 — менеджер сети и имена пакетов/служб (ПРОВЕРИТЬ на стенде)
|
||||
- Сетевой менеджер: NetworkManager с keyfiles
|
||||
(/etc/NetworkManager/system-connections/*.nmconnection)? Или
|
||||
netplan/ifup? Все скрипты задания 1 написаны под NetworkManager.
|
||||
- Пакет/служба для сохранения iptables: iptables (пакет iptables-services,
|
||||
служба iptables)? Если используется firewalld или nftables — обсудить
|
||||
с экзаменатором, поменять подход NAT.
|
||||
- OSPF-демон: frr (пакет frr, конфиг /etc/frr/frr.conf, служба frr) или
|
||||
quagga? В скриптах — frr, файл /etc/frr/daemons правится sed'ом
|
||||
(zebra=yes, ospfd=yes) — проверить, что файл такой существует.
|
||||
- Пакет DHCP-сервера: dhcp-server (служба dhcpd, конфиг /etc/dhcp/dhcpd.conf)?
|
||||
Или kea/dnsmasq? В zadanie1/hq-rtr.sh — dhcp.
|
||||
- DNS-сервер на HQ-SRV выбран dnsmasq (простой, A-записи через hosts-файл).
|
||||
PTR-записи: dnsmasq должен отдавать обратные записи по записям hosts —
|
||||
ПРОВЕРИТЬ на стенде (dig -x адрес). Если экзаменатор требует полноценный
|
||||
bind — переделать hq-srv.sh.
|
||||
- SELinux на РЕД ОС 8: если Enforcing, для порта SSH 2027 нужен
|
||||
semanage (пакет policycoreutils-python-utils) — проверено в скриптах,
|
||||
но имена пакетов ПРОВЕРИТЬ.
|
||||
|
||||
## BR-FW
|
||||
- Тип системы неизвестен (УТОЧНИТЬ). zadanie1/br-fw.sh написан под Linux.
|
||||
Если это не Linux (EcoRouter/другой МСЭ) — настройки OSPF-соседа и
|
||||
интерфейсов делаются по-своему, взять логику из скрипта как чек-лист.
|
||||
|
||||
## HQ-CLI
|
||||
- Графика: по предварительным данным HQ-CLI — только терминал. Пункты
|
||||
задания 2 (Яндекс Браузер) и задания 3 (Кибер Бэкап GUI, принтер в GUI)
|
||||
делаем через консоль где возможно, остальное — MANUAL.md/вручную.
|
||||
- Установлен ли на РЕД ОС 8 репозиторий с Яндекс Браузером (dnf)? Если нет —
|
||||
rpm-пакет с флешки/ISO — уточнить, откуда брать пакет.
|
||||
|
||||
## Задание 2 (уточнения по ходу)
|
||||
- chrony: путь конфига (/etc/chrony.conf?) и имя службы (chronyd?) на РЕД ОС 8.
|
||||
- NFS: имя пакета (nfs-utils) и службы (nfs-server) на РЕД ОС 8.
|
||||
- mdadm: имя файла конфигурации (/etc/mdadm.conf по заданию; RHEL-вариант
|
||||
/etc/mdadm.conf может дополняться переменными mdadm.conf.d).
|
||||
- Веб-приложение: пользователь службы apache на РЕД ОС 8 (apache или httpd?),
|
||||
также формат данных для подключения БД в index.php — смотреть файл из ISO.
|
||||
- Samba: точное имя пакета samba-dc и путь samba-tool; команда для порога
|
||||
блокировки (--lockout-attempt / --lockout-threshold, зависит от версии);
|
||||
имя администратора домена (administrator?).
|
||||
- Ansible: пакет ansible-core vs ansible; пользователи SSH для каждой машины
|
||||
(из задания 1: sshuser на серверах, net_admin на роутерах).
|
||||
- Docker: пакет (docker-engine / docker-ce / podman?), имена файлов образов
|
||||
в Additional.iso (site_latest, mariadb_latest — тары или директории?),
|
||||
содержимое compose.yaml (маппинг портов на 8080?).
|
||||
- Autofs: пакет autofs, служба autofs на РЕД ОС 8.
|
||||
- Ввод HQ-CLI в домен: realmd+sssd или winbind — заранее выяснить стек.
|
||||
- Подтверждение «пользователи группы hq имеют право аутентифицироваться на
|
||||
HQ-CLI»: как проверять (sssd getent / su - hquser1).
|
||||
- Яндекс Браузер: имя пакета в репозитории РЕД ОС 8 (yandex-browser-stable?)
|
||||
или источник rpm.
|
||||
- Проброс 8080 наружу: на какую сеть идут DNAT-правила (интерфейс ISP), и что
|
||||
разрешён прохождение пакетов в цепочке FORWARD (политика ACCEPT).
|
||||
|
||||
## Проверки (папка check/)
|
||||
- chrony: имя службы (chronyd?), формат вывода `samba-tool domain passwordsettings show`
|
||||
(точные строки "minimum password length" и "bad password count/lockout") —
|
||||
если на стенде слова другие, поправить grep в check/zadanie2/br-srv.sh.
|
||||
- Лизинг DHCP у NM: /var/lib/NetworkManager/*.lease — файлы есть на РЕД ОС 8?
|
||||
(check/zadanie1/hq-cli.sh).
|
||||
- `trust list` (p11-kit) доступен на РЕД ОС 8 для проверки CA (check/zadanie3/hq-cli.sh).
|
||||
- atop: параметр интервала (INTERVAL/LOGINTERVAL) и путь конфига — в check/zadanie3/hq-srv.sh это переменная.
|
||||
- Кибер Бэкап: имя service unit на стенде (переменная BACKUP_SERVICE_PATTERN).
|
||||
- curl на ISP: если nginx уже в https-режиме, HTTP-запрос вернёт 301 (норма);
|
||||
подробности в check/zadanie3/isp.sh.
|
||||
|
||||
## Задание 3 (уточнения по ходу)
|
||||
- ЦС «отечественные алгоритмы»: обычный openssl RSA/EC — гост-подписи не умеет.
|
||||
Уточнить у экзаменатора, оправдывает ли RSA критерий (или требуется
|
||||
ГОСТ-пакет, например crypto-pro/ViPNet — что доступно на стенде?).
|
||||
- nginx: пакет и наличие рестаров ok (ПРОВЕРИТЬ на РЕД ОС 8).
|
||||
- Обратный прокси: HQ-SRV/BR-SRV резолвятся с ISP только через статические
|
||||
маршруты (office nets за маршрутизаторами) — с ISP curl пробовать до запуска.
|
||||
- atop: какой конфиг-файл читает служба на РЕД ОС 8 (/etc/sysconfig/atop?
|
||||
/etc/atop/atop.conf?) и как называется параметр интервала.
|
||||
- cups-pdf: есть ли пакет в репозитории РЕД ОС 8; имя pdf-принтера по умолчанию
|
||||
(обычно pdf); доступность порта 631 извне (файрвол/SELinux).
|
||||
- fail2ban: доступен ли пакет на РЕД ОС 8 (нужен EPEL?), формат порта в jail
|
||||
(2027) и backend systemd.
|
||||
- Кибер Бэкап 18: откуда брать дистрибутив на стенде (ISO/файл-сервер).
|
||||
- Плейбук из Additional.iso/playbook: какие переменные/инвентарь ожидает,
|
||||
где создаёт отчёты PC-INFO (path в плейбуке может отличаться).
|
||||
- import.sh: точно интерактивен? Если использует свой механизм вопросов —
|
||||
подготовить ответы заранее (cat answers | import.sh) — изучить на стенде.
|
||||
- HQ-CLI: update-ca-trust на РЕД ОС 8; есть ли поддержка ipp-подключения
|
||||
принтера без GUI (lpadmin/lpoptions).
|
||||
109
README.md
Normal file
109
README.md
Normal file
|
|
@ -0,0 +1,109 @@
|
|||
# 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`, поставь пояс места экзамена.
|
||||
135
TROUBLESHOOT.md
Normal file
135
TROUBLESHOOT.md
Normal file
|
|
@ -0,0 +1,135 @@
|
|||
# TROUBLESHOOT.md — шпаргалка: частые проблемы и решения
|
||||
|
||||
Правило работы: сначала запустите check-скрипт своей машины (он скажет, ЧТО
|
||||
сломано), затем откройте соответствующий раздел ниже. Все команды безопасны,
|
||||
кроме отмеченных ОСТОРОЖНО.
|
||||
|
||||
## 0. Универсальная диагностика (всегда начинать с этого)
|
||||
```
|
||||
ip -4 -br a && ip route # адреса и маршруты
|
||||
ping -c2 <адрес соседа> # линк жив?
|
||||
ss -tlnp # что слушает по TCP (нужен root)
|
||||
ss -ulnp # что слушает по UDP (нужен root)
|
||||
systemctl status <служба> --no-pager # прямая сводка о службе
|
||||
journalctl -eu <служба> --no-pager | tail -30 # почему служба упала
|
||||
```
|
||||
|
||||
## 1. Сеть / NetworkManager
|
||||
| Симптом | Причина | Решение |
|
||||
|---|---|---|
|
||||
| «Connection activation failed» | нет кабеля, пустой блок [connection], конфликт профилей | `nmcli con show`, `nmcli dev status`; перезаписать профиль и `nmcli con up <имя>` |
|
||||
| NM не видит файл .nmconnection | права файла не 600 | `chmod 600 <файл>`, затем `nmcli con reload` |
|
||||
| Адрес есть, пингов нет | не туда воткнуто; нет маршрута по умолчанию; VLAN-порт не в trunk | проверять `ip route`; на HQ-SW порт к роутеру должен быть trunk с VLAN 100/200/999 |
|
||||
| Резолвинг не работает | пустой resolv.conf / недоступен DNS | `cat /etc/resolv.conf`, `ping <DNS>`; `systemctl restart NetworkManager` после смены |
|
||||
|
||||
## 2. GRE
|
||||
| Симптом | Причина | Решение |
|
||||
|---|---|---|
|
||||
| Туннель есть, пинга нет | в remote указан не тот адрес (нужен адрес роутера в сети ISP) | на ОБЕИХ сторонах `ip tunnel show`; сверить remote/local |
|
||||
| Пинг от роутера к роутеру есть, от сервера нет | нет маршрутов к офисным сетям | пропишите офисные сети в OSPF (network + passive-interface) или статикой |
|
||||
| Не переживает перезагрузку | профиль без autoconnect | `nmcli con modify gre1 connection.autoconnect yes` |
|
||||
|
||||
## 3. OSPF (frr)
|
||||
| Симптом | Причина | Решение |
|
||||
|---|---|---|
|
||||
| Сосед есть, но офиса не видны | забыли `network <офисная_сеть> area 0` | `vtysh -c 'show running-config'` — сравнить со списком сетей |
|
||||
| Сосед в 2WAY, не Full | обычной broadcast-сети DR/BDR; в point-to-point туннеле | проще на gre: `ip ospf network point-to-point` на обеих сторонах |
|
||||
| Соседей нет совсем | network-предложение не совпадает с реальной сетью; интерфейс в passive | проверить network-записи; `passive-interface default` НЕ должен включать туннель |
|
||||
| MD5 не работает | другой пароль/номер ключа/нет ip ospf authentication | на обоих: `ip ospf authentication message-digest` и ОДИНАКОВЫЙ ключ+пароль |
|
||||
| OSPF не слушает frr | не включены демоны | ПРОВЕРИТЬ /etc/frr/daemons: zebra=yes, ospfd=yes, `systemctl restart frr` |
|
||||
|
||||
## 4. NAT / Интернет
|
||||
| Симптом | Причина | Решение |
|
||||
|---|---|---|
|
||||
| Пинг IP 77.88.8.7 не идёт из офиса | нет MASQUERADE; ip_forward=0 | `iptables -t nat -L POSTROUTING -nv`; `cat /proc/sys/net/ipv4/ip_forward` |
|
||||
| После reboot правила NAT пропали | iptables не сохранён | `iptables-save > /etc/sysconfig/iptables`, `systemctl enable iptables` (ПРОВЕРИТЬ имя) |
|
||||
| Пинг IP есть, имена не резолвятся | нет DNS / NAT-адресации | `ping ya.ru`; проверка DNS-конфигурации (раздел 7) |
|
||||
|
||||
## 5. DHCP
|
||||
| Симптом | Причина | Решение |
|
||||
|---|---|---|
|
||||
| Клиент не получает адрес | служба dhcpd не активна; client не в нужной сети; range заполнен | `systemctl status dhcpd` (ПРОВЕРИТЬ имя), `nmcli con up <интерфейс>` снова |
|
||||
| dhcpd не стартует | ошибка конфига (range вне сети, нет subnet) | `dhcpd -t`; `journalctl -eu dhcpd` |
|
||||
|
||||
## 6. SSH (порт 2027)
|
||||
| Симптом | Причина | Решение |
|
||||
|---|---|---|
|
||||
| Connection refused | sshd не перезапущен после смены порта; SELinux; firewall | `ss -tlnp \| grep 2027`; `getenforce` → `semanage port -a -t ssh_port_t -p tcp 2027`; `firewall-cmd --add-port=2027/tcp --permanent && firewall-cmd --reload` |
|
||||
| Permission denied | AllowUsers не содержит пользователя; MaxAuthTries? | `sudo sshd -T | grep -E 'port|allowusers|maxauthtries|banner'` |
|
||||
| Баннер не показывается | баннер-файл не существует/путь другой | путь в `sshd -T` должен существовать с текстом |
|
||||
|
||||
## 7. DNS (dnsmasq)
|
||||
| Симптом | Причина | Решение |
|
||||
|---|---|---|
|
||||
| dig пустой / REFUSED | служба/ports/listen-address | `systemctl status dnsmasq`; `ss -ulnp \| grep 53`; listen-address должен включать 127.0.0.1 и адрес сервера |
|
||||
| A есть, PTR нет | dnsmasq не выдаёт reverse по hosts | `dig -x <IP>`; при необходимости добавить reverse-зону явно (см. QUESTIONS.md) |
|
||||
| Внешние имена не резолвятся | нет `server=<адрес>` (форвардер) | `dig +short ya.ru @127.0.0.1`; добавить server-строку, рестарт |
|
||||
|
||||
## 8. RAID/mdadm
|
||||
| Симптом | Причина | Решение |
|
||||
|---|---|---|
|
||||
| после reboot нет md0 | нет ARRAY-строки в /etc/mdadm.conf; initramfs старый | строка ARRAY по UUID, затем `dracut -f` |
|
||||
| mdadm: device busy | диски смонтированы/грязные | размонтировать; `wipefs -a /dev/vdX` ОСТОРОЖНО (только array-диски!) |
|
||||
| /raid не монтируется | неверный UUID в fstab | `blkid /dev/md0`; сверить с fstab; `mount -a` покажет ошибку |
|
||||
|
||||
## 9. NFS
|
||||
| Симптом | Причина | Решение |
|
||||
|---|---|---|
|
||||
| mount: access denied | сеть клиента не в exports | `exportfs -v`; поправить строку; `exportfs -ra` |
|
||||
| mount: connection refused | службы rpcbind/nfs-server не активны | `systemctl enable --now rpcbind nfs-server` (ПРОВЕРИТЬ имена); `ss -tlnp \| grep 2049` |
|
||||
| Permission denied при записи | права ФС каталога | `ls -l /raid/nfs`, выставить владельца/права |
|
||||
|
||||
## 10. chrony
|
||||
| Симптом | Причина | Решение |
|
||||
|---|---|---|
|
||||
| Stratum 10 | нет синхронизации с upstream | `chronyc sources -v`; доступен ли upstream; порт 123/udp |
|
||||
| Клиенты не синхронизируются | нет allow <сеть> на сервере; firewall | добавить `allow <a.b.c.d/prefix>`, рестарт chronyd |
|
||||
|
||||
## 11. Docker
|
||||
| Симптом | Причина | Решение |
|
||||
|---|---|---|
|
||||
| docker: command not found | пакет не установлен (или podman alias) | `dnf list installed \| grep -i dock`; соответствие пакету РЕД ОС 8 (ПРОВЕРИТЬ) |
|
||||
| permission denied | docker требует root | `sudo docker ...` |
|
||||
| compose: no such image | образ не загружен | `docker load -i <tar>`, затем `docker compose up -d` |
|
||||
| 8080 не отвечает | контейнер упал | `docker ps -a`, `docker logs <id>`, `ss -tlnp | grep 8080` |
|
||||
|
||||
## 12. Nginx / apache / mariadb
|
||||
| Симптом | Причина | Решение |
|
||||
|---|---|---|
|
||||
| nginx -t: [emerg] ... строка X | ошибка в exam-proxy.conf | поправить строку X; после правки `systemctl reload nginx` |
|
||||
| 502 Bad Gateway | бэкенд недоступен с ISP (маршруты!) | `curl -v <бэкенд-IP:порт>` с ISP; если нет — статические маршруты или OSPF |
|
||||
| 401 всё время | битый htpasswd | `printf "%s:%s\n" WEB "$(openssl passwd -apr1 'P@ssw0rd')" > файл` |
|
||||
| виртуальный хост показывает дефолт | нет Host-маршрутизации | проверять server_name и какой блок ловит (nginx -t покажет; curl -H "Host: ...") |
|
||||
| страница 500 | ошибки PHP/подключения к БД | `tail /var/log/httpd/error_log` (ПРОВЕРИТЬ путь на РЕД ОС 8); сверить учётные данные БД в index.php |
|
||||
|
||||
## 13. Samba DC
|
||||
| Симптом | Причина | Решение |
|
||||
|---|---|---|
|
||||
| user create: password policy | пароль короче/проще политики | `samba-tool domain passwordsettings show`; ИСПОЛЬЗОВАТЬ пароль под политику |
|
||||
| realm join fails | DNS BR-SRV не прописан на клиенте | `echo "nameserver <BR-SRV>" > /etc/resolv.conf`; тест `dig <домен>` |
|
||||
| getent passwd hquser1 пусто | sssd/winbind не настроен/внизу | `systemctl status sssd`; логи; соглашение о формате имён группы ('hq' vs 'hq@домен') |
|
||||
| sudo файл игнорируется | права не 440 / неверное имя группы | `chmod 440 /etc/sudoers.d/...`; имя группы сверить с getent |
|
||||
|
||||
## 14. fail2ban
|
||||
| Симптом | Причина | Решение |
|
||||
|---|---|---|
|
||||
| не запускается | backend не видит журнал | в jail: `backend = systemd` (если используете journald) |
|
||||
| IP не банится | maxretry/bantime не применились, jail не active | `sudo fail2ban-client status sshd`; проверьте порт 2027 в jail; `fail2ban-client reload` |
|
||||
|
||||
## 15. Сертификаты / https
|
||||
| Симптом | Причина | Решение |
|
||||
|---|---|---|
|
||||
| certificate expired / not yet valid | уехало системное время | `timedatectl`; chrony должен тянуть время (задание 2) |
|
||||
| unable to verify | клиент не доверяет корневому CA | root.crt в /etc/pki/ca-trust/source/anchors, `update-ca-trust` |
|
||||
| браузер: CERT_AUTHORITY_INVALID | нет SAN или не доверие к CA | `openssl x509 -in cert -noout -ext subjectAltName`; домен ДОЛЖЕН быть в SAN |
|
||||
|
||||
## 16. Прочее
|
||||
- Перезагрузка после большинства скриптов улучшает сходимость (особенно VLAN
|
||||
и туннели). Ловить проблемы после reboot — пройтись check-скриптами.
|
||||
- git clone падает по сертификату — на экзамене допустимо
|
||||
`git config --global http.sslVerify false` (временно) или scp репозитория.
|
||||
- Пустой DISPLAY? — всё по консоли, виртуальности GUI отсутствуют.
|
||||
|
||||
Если что-то сломалось не из этого списка: запустите check-скрипт машины,
|
||||
посмотрите журналы (`journalctl -eu <служба> | tail -30`) и поиском по этому
|
||||
файлу — похожие симптомы.
|
||||
Loading…
Reference in a new issue