diff --git a/TROUBLESHOOT.md b/TROUBLESHOOT.md new file mode 100644 index 0000000..eb02997 --- /dev/null +++ b/TROUBLESHOOT.md @@ -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 `; `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 `; при необходимости добавить 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 `, рестарт 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 `, затем `docker compose up -d` | +| 8080 не отвечает | контейнер упал | `docker ps -a`, `docker logs `, `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 " > /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`) и поиском по этому +файлу — похожие симптомы.