net/TROUBLESHOOT.md

136 lines
12 KiB
Markdown
Raw Permalink 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.

# 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`) и поиском по этому
файлу — похожие симптомы.