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