Инструменты Linux для диагностики сети и устранения непола... | Вопросы для собеседования | Skilio
/s/public
Сеть Новичок Опубликовано
Инструменты Linux для диагностики сети и устранения неполадок в бэкенде
Вопрос:

Какие инструменты Linux можно использовать для устранения неполадок и определения состояния сети? Можно ограничиться стандартными или широко инзвестными консольными утилитами.

Объясните, как эти инструменты могут помочь в отладке проблем с бэкенд-системой.

Подсказки:

  • Какие есть инструменты для проверки сетевых интерфейсов, маршрутизации, соединений и анализа пакетов?
  • Пример, как вы бы устранили неполадку в сценарии, где ваш бэкенд-сервис не может подключиться к базе данных или внешнему API?
  • Некоторые распространенные инструменты включают ifconfig/ip, netstat, tcpdump и curl.

Обязательные знания:

  • Знание инструментов: ifconfig, netstat, telnet, whois, host

Выше ожиданий:

  • Использование netcat (nc) для проверки TCP/UDP-соединений
  • Использование dig для прямых запросов DNS
  • curl и ssh для проверки протоколов с SSL
  • Понимание Wireshark для глубокого анализа пакетов
  • Знание о таблицах сетевой маршрутизации с помощью route или ip route
  • Знание использования tcpdump с выражениями фильтрации для изоляции определенных шаблонов трафика для выгрузки сетевого трафика для исследования
Ответ:

Инструменты для получения информации о сети

  • ifconfig/ip: Отображение конфигурации сетевых интерфейсов. Команда ifconfig eth0 показывает IP-адрес, MAC-адрес и статистику трафика для интерфейса eth0. Команда ip addr предоставляет аналогичную функциональность с дополнительными возможностями.

  • netstat: Отображение сетевых подключений, таблиц маршрутизации и статистики интерфейсов. Используйте netstat -tuln, чтобы получить список всех открытых TCP/UDP портов, что полезно при проверке работоспособности приложения.

  • ss (выше ожиданий): Современная замена netstat с более широкими возможностями и лучшей производительностью. ss -tuln быстрее перечисляет открытые порты, чем netstat.

  • host/dig: Запрос информации DNS. host example.com возвращает IP-адреса для домена, а dig example.com предоставляет подробную информацию о DNS записях, включая время запроса и авторитетные сервера.

  • whois: Поиск информации о регистрации домена. Полезно для определения владельца внешних сервисов или расследования подозрительных доменов.

Инструменты для тестирования соединений

  • ping: Тестирование базовой связи с узлом. ping database.internal может проверить, доступен ли сервер базы данных на сетевом уровне.

  • traceroute/tracepath (выше ожиданий): Отображение сетевого пути к конечному IP, показывая каждый промежуточный узел по пути. Помогает определить, где возникают задержки или блокировки сети.

  • telnet: Тестирование соединения на конкретный порт. telnet redisserver.internal 6379 проверяет доступность сервиса кэширования Redis. То есть открыт ли порт и что он не закрыт фаерволом.

  • nc (netcat) (выше ожиданий): Универсальная сетевая утилита для сканирования портов, передачи файлов и тестирования соединений:

    # Проверка открытости порта 5432 на сервере базы данных
    nc -zv db.internal 5432
    
  • curl: Выполнение HTTP/HTTPS запросов для тестирования эндпоинтов API и веб-сервисов:

    # Тестирование конечной точки API с аутентификацией
    curl -v -H "Authorization: Bearer token123" https://api.example.com/status
    

Продвинутый анализ сети (выше ожиданий)

  • tcpdump: Запись и анализ сетевых пакетов. Необходим для глубокой диагностики, когда логи приложений и данные мониторинга не предоставляют достаточной информации:

    # Запись HTTP-трафика на порту 80
    tcpdump -i eth0 port 80 -w capture.pcap
    
  • Wireshark: Графический анализатор пакетов (может анализировать записи tcpdump). Предоставляет подробный анализ протоколов для сложных проблем.

  • iptraf: Мониторинг сетевой статистики в режиме реального времени, отображая использование пропускной способности по интерфейсу и протоколу.

  • route/ip route: Отображение и изменение таблиц IP-маршрутизации. ip route get 8.8.8.8 показывает, какой интерфейс будет использоваться для достижения определённого IP-адреса.

Отладка проблем с бэкендом

Когда бэкенд-сервис не может подключиться к базе данных:

  1. Используйте ping, чтобы проверить базовую сетевую доступность.
  2. Используйте telnet database-host {port} или nc -zv database-host {port}, чтобы проверить доступность конкретного порта.
  3. Проверьте на хосте базы данных netstat -tuln or netstat -nap | grep {port}, чтобы убедиться, что база данных прослушивает ожидаемый порт.
  4. Проверить, что фаервол на самом хосте БД iptables -L -v -n | grep {port}
  5. (ADVANCED) Проверьте маршрутизацию с помощью ip route get database-ip, чтобы убедиться, что трафик проходит через правильный интерфейс.
  6. (ADVANCED) Используйте tcpdump, чтобы записать фактические попытки подключения для подробного анализа.
  7. (ADVANCED) Проверить размер MTU для соединения ping -M do -s {SIZE} {database-host}

При устранении проблем с подключением бэкенда к базе данных, помните о необходимости проверки как сетевых проблем, так и конфигурации приложения.

0
© Skilio, 2025
Условия использования
Политика конфиденциальности
Мы используем файлы cookie, для персонализации сервисов и повышения удобства пользования сайтом. Если вы не согласны на их использование, поменяйте настройки браузера.