Диагностика сети [109.3]

Рейтинг: 75.8% · 12 голосов
Полный курс LPIC-1 (экзамены 101-500 и 102-500): архитектура, загрузка, пакеты, команды и текст, ФС и права, шелл-скрипты, пользователи, сервисы, сеть, безопасность. Debian и RHEL.
Ответить
Аватара пользователя
Sergey_Sysadmin
Сообщения: 134
Зарегистрирован: 11 май 2026, 05:31

Диагностика сети [109.3]

Сообщение Sergey_Sysadmin »

Оглавление курса (41)
  1. Введение в LPIC-1 и как устроен путь администратора
  2. Железо, устройства и модули ядра [101.1]
  3. Загрузка системы: от BIOS до systemd [101.2]
  4. systemd, цели и уровни выполнения [101.3]
  5. План разметки диска и swap [102.1]
  6. Загрузчик GRUB 2 [102.2]
  7. Разделяемые библиотеки [102.3]
  8. Управление пакетами в Debian: dpkg и apt [102.4]
  9. Управление пакетами RPM, DNF и Zypper [102.5]
  10. Linux как гость виртуализации [102.6]
  11. Командная строка Bash [103.1]
  12. Обработка текста фильтрами [103.2]
  13. Базовое управление файлами [103.3]
  14. Потоки, конвейеры и перенаправление [103.4]
  15. Процессы: создание, мониторинг, сигналы [103.5]
  16. Приоритеты выполнения процессов [103.6]
  17. Регулярные выражения [103.7]
  18. Редактор vi и vim [103.8]
  19. Разделы и создание файловых систем [104.1]
  20. Целостность и обслуживание ФС [104.2]
  21. Монтирование файловых систем [104.3]
  22. Урок 21. Права доступа и владение: rwx, chmod, umask и специальные биты
  23. Жёсткие и символические ссылки
  24. FHS и поиск файлов в системе [104.7]
  25. Окружение и кастомизация оболочки [105.1]
  26. Урок 25. Написание простых bash-скриптов [105.2]
  27. Графика, рабочие столы и доступность
  28. Учётные записи пользователей и групп
  29. Автоматизация задач: cron, at, таймеры [107.2]
  30. Локализация и интернационализация [107.3]
  31. Системное время и синхронизация [108.1]
  32. Системное логирование [108.2]
  33. Основы почтового агента (MTA) [108.3]
  34. Печать и CUPS [108.4]
  35. Основы интернет-протоколов [109.1]
  36. Постоянная конфигурация сети [109.2]
  37. Диагностика сети [109.3] (вы здесь)
  38. DNS на стороне клиента [109.4]
  39. Задачи администрирования безопасности [110.1]
  40. Настройка безопасности хоста [110.2]
  41. Шифрование данных: SSH и GnuPG [110.3]
Урок 36. Диагностика сети [109.3]

Сеть либо работает, либо нет, и в момент аварии админу нужно быстро ответить на вопрос: на каком уровне сломалось. Есть линк? Назначен ли адрес? Есть ли маршрут до шлюза? Доходят ли пакеты? Отвечает ли нужный порт? В этом уроке разбираем набор iproute2 (ip), инструменты проверки связности (ping, traceroute, tracepath, mtr), просмотр сокетов (ss), проверку портов через netcat и низкоуровневую диагностику интерфейса через ethtool. Главное - не тыкать команды наугад, а идти по слоям модели снизу вверх.

Изображение

Как это работает

Сетевая проблема почти всегда локализуется на одном из уровней. Физика и канал (L1/L2): есть ли электрический линк, поднят ли интерфейс, видит ли ядро MAC соседа. Сетевой уровень (L3): назначен ли IP, есть ли маршрут, доходят ли ICMP-пакеты. Транспорт и приложение (L4/L7): слушает ли сервис нужный порт, не режет ли его firewall. Диагностика - это движение по этой лестнице: бессмысленно проверять порт веб-сервера, если у машины нет даже IP-адреса.

Старый пакет net-tools (ifconfig, route, netstat, arp) в современных дистрибутивах не ставится по умолчанию и считается устаревшим. Его заменил iproute2 с единой утилитой ip, которая работает напрямую через netlink-сокет и показывает то, чего ifconfig не умел: несколько адресов на интерфейсе, политики маршрутизации, namespace. Запоминать стоит именно ip.

Ключевой момент про ICMP. ping и traceroute опираются на ICMP-сообщения, а многие хосты и firewall их фильтруют. Поэтому пропавший ping еще не значит, что узел мертв - возможно, просто запрещен ICMP. Для проверки конкретного TCP-порта надежнее netcat или ss, а не пинг.

Команды и примеры

Сначала L2/L3 - адреса, линк, маршруты, соседи (ARP/NDP):

Код: Выделить всё

ip addr show           # адреса на всех интерфейсах (короче: ip a)
ip -br addr            # компактная сводка: имя, состояние, адрес
ip link show eth0      # состояние линка, MAC, MTU
ip route               # таблица маршрутов, ищем строку default
ip route get 8.8.8.8   # через какой маршрут и интерфейс пойдет пакет
ip neigh               # кэш соседей: IP -> MAC (замена arp)
В выводе ip link смотрите на флаги. state UP и LOWER_UP - линк есть. state DOWN с NO-CARRIER - интерфейс поднят, но кабеля/сигнала нет. Поднять интерфейс и добавить адрес на лету (до перезагрузки):

Код: Выделить всё

ip link set eth0 up
ip addr add 192.168.1.50/24 dev eth0
ip route add default via 192.168.1.1
Эти изменения временные. Постоянная конфигурация различается по дистрибутивам: в Debian 13 и Ubuntu 24.04 это обычно Netplan (YAML в /etc/netplan/) поверх systemd-networkd или NetworkManager; в RHEL 10 и Fedora 41+ - NetworkManager, управляемый через nmcli, с профилями в /etc/NetworkManager/system-connections/. Файлы /etc/sysconfig/network-scripts уже почти не используются.

Проверка связности по слоям. ping проверяет L3 до узла, traceroute показывает путь по хопам:

Код: Выделить всё

ping -c4 192.168.1.1        # 4 пакета и стоп
ping6 -c4 fe80::1%eth0      # IPv6, для link-local нужен %интерфейс
traceroute 8.8.8.8          # путь по UDP (по умолчанию)
traceroute -I 8.8.8.8       # тот же путь, но ICMP-эхо
tracepath example.com       # как traceroute, но без root, плюс PMTU
mtr 8.8.8.8                 # traceroute + ping в реальном времени
mtr - лучший инструмент для непостоянных потерь: он непрерывно опрашивает каждый хоп и показывает процент потерь по строкам, сразу видно, на каком участке пропадают пакеты. Для разового отчета удобен mtr --report -c100 host.

Сокеты и порты. ss - современная замена netstat, читает данные из ядра быстрее:

Код: Выделить всё

ss -tlnp     # TCP (t), слушающие (l), без резолва (n), процессы (p)
ss -tunap    # TCP+UDP, все состояния, с PID/именем процесса
ss -s        # сводная статистика по сокетам
ss -t state established '( dport = :443 )'   # фильтр по состоянию/порту
Расшифровка ключей: -t TCP, -u UDP, -l только слушающие, -n не резолвить порты в имена, -p показать процесс (нужен root для чужих). netstat -tlnp дает похожий вывод, но пакет net-tools часто не установлен - привыкайте к ss.

Проверка порта снаружи через netcat (в RHEL/Fedora команда обычно ncat из пакета nmap-ncat, в Debian/Ubuntu - nc из netcat-openbsd):

Код: Выделить всё

nc -zv 10.0.0.5 22          # -z только проверка, -v подробно
nc -zv 10.0.0.5 20-25       # диапазон портов
nc -zvu 10.0.0.5 53         # UDP-порт
Низкий уровень - ethtool для физики медного линка:

Код: Выделить всё

ethtool eth0                # скорость, дуплекс, наличие линка
ethtool -S eth0             # счетчики ошибок и дропов на NIC
ethtool -i eth0             # драйвер и версия прошивки
Строка Link detected: yes/no - это и есть ответ есть ли вообще сигнал в кабеле, самый нижний уровень диагностики.

Частые грабли
  • Считать, что нет ответа на ping - значит узел недоступен. ICMP часто блокируют; проверяйте нужный порт через nc или ss.
  • Искать ifconfig, route, netstat, arp - в свежих системах их нет. Ставить net-tools ради привычки не нужно, есть ip и ss.
  • ping IPv6 link-local адреса без указания интерфейса (fe80::1) - будет ошибка, нужен суффикс %eth0.
  • Менять адрес через ip addr и удивляться, что после перезагрузки все откатилось - это runtime-настройка, правьте Netplan или nmcli.
  • nc -z с диапазоном работает только для TCP; для UDP результат часто ложноположительный, так как ответа нет.
  • Смотреть ss без -n и тормозить на DNS-резолве портов и адресов; в диагностике почти всегда нужен -n.
  • Путать tracepath и traceroute: tracepath не требует root и показывает PMTU, но не умеет выбирать протокол так гибко.
Мини-лаба
  • Выведите ip -br addr и ip -br link, запишите состояние и адрес своего основного интерфейса.
  • Удалите default-маршрут (ip route del default), убедитесь через ip route get 8.8.8.8, что наружу пути нет, верните маршрут обратно.
  • Запустите ping -c4 до шлюза и до 8.8.8.8; затем mtr 8.8.8.8 на 20 секунд и найдите хоп с потерями, если он есть.
  • Поднимите тестовый слушатель: nc -l 8080 в одном терминале, в другом проверьте nc -zv 127.0.0.1 8080.
  • Через ss -tlnp найдите процесс, который держит этот порт, сверьте PID.
  • Выполните ethtool на проводном интерфейсе и найдите Speed, Duplex и Link detected.
  • Сравните ip neigh до и после ping соседа в локальной сети - увидите, как заполняется кэш.
Контрольные вопросы
  • Какая команда iproute2 покажет, через какой интерфейс и шлюз уйдет пакет к конкретному адресу?
  • Чем mtr принципиально удобнее обычного traceroute при диагностике плавающих потерь?
  • Какие ключи ss нужны, чтобы увидеть слушающие TCP-порты с именами процессов и без резолва?
  • Почему успешный ping не гарантирует, что нужный сервис доступен, и чем это проверить правильно?
  • Что означает состояние интерфейса NO-CARRIER в выводе ip link и на каком уровне модели это проблема?
  • Как с помощью netcat проверить, открыт ли TCP-порт 443 на удаленном хосте, не передавая данных?
👍3 ❤️2 🔥2 😄 🤔2
Аватара пользователя
jaason
Сообщения: 1
Зарегистрирован: 08 июн 2026, 22:49

Re: Диагностика сети [109.3]

Сообщение jaason »

А зачем nc, если ss уже показывает порты? Доходит: ss смотрит ИЗНУТРИ хоста, что слушается, а nc проверяет СНАРУЖИ, не режет ли firewall по пути. Разные точки зрения.
👍 ❤️ 🔥 😄 🤔
Аватара пользователя
vaultops
Сообщения: 1
Зарегистрирован: 26 май 2026, 03:39

Re: Диагностика сети [109.3]

Сообщение vaultops »

Долго не мог понять плавающие потери до шлюза провайдера. mtr --report -c200 показал, что теряет ровно один хоп в середине, а не у меня. Сразу стало с чем идти в поддержку.
👍 ❤️ 🔥 😄 🤔
Ответить
← Предыдущая глава
Постоянная конфигурация сети [109.2]
Следующая глава →
DNS на стороне клиента [109.4]

Все главы курса «LPIC-1: администратор Linux (101 + 102)»

Поделиться темой: ✈ Telegram VK

Вернуться в «LPIC-1: администратор Linux»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей