Поиск по сайту:
Хорошее начало — половина дела (Платон).

Отладка сетевых проблем с помощью tcpdump

06.05.2024
Рис. 1: Показаны доступные интерфейсы с использованием tcpdump

Системные администраторы регулярно сталкиваются с сетевыми проблемами при развертывании и обслуживании программных приложений на серверах Linux. Решение этих проблем может быть сложным и отнимать много времени из-за нескольких факторов, включая сложность приложений, параллельные процессы и службы, запущенные на сервере, или даже наличие нескольких процессов, которые выполняются одновременно на одном процессоре.

Мы обсудим один из самых мощных инструментов для решения сетевых проблем: tcpdump. Но прежде чем мы приступим к отладке, мы должны сначала понять основы сети. Начнем с модели TCP/IP.

 

Модель TCP/IP

Модель TCP/IP (сокращение от Transmission Control Protocol/Internet Protocol) объединяет четыре различных протокола, развернутых в сетях. Эти протоколы представляют собой четыре уровня в модели TCP/IP:

  • Прикладной уровень: Самый верхний уровень модели TCP/IP; он позволяет пользователям взаимодействовать со службами в сети.
  • Транспортный уровень: Третий уровень в модели TCP/IP; как следует из названия, этот уровень отвечает за передачу пакетов данных между сетями источника и назначения.
  • Уровень Интернета: Второй уровень в модели; он отвечает за обработку любых ошибок, которые могут возникнуть во время передачи данных от источника к получателю в сети.
  • Уровень сетевого интерфейса: Самый низкий уровень в режиме TCP/IP; он обрабатывает связь между компьютерами и сетевой системой через протоколы, такие как Ethernet, и аппаратные устройства, такие как маршрутизаторы.

 

Шаги по отладке

Когда дело доходит до сложных сетевых проблем, рассмотрите возможность разбиения шагов, чтобы лучше понять процесс отладки.

Изолировать и сузить проблемы

Начните с понимания проблемы. Отладка усложняется из-за внутренней сложности сетей и приложений, использующих сетевые системы. Вам нужно точно определить уровень, на котором возникает проблема, и вам нужно понять ее механизм — когда и в каком контексте это происходит.

Читать  Команда Fdisk в Linux (Создание разделов диска)

Например, один из ваших тестировщиков заметил, что загрузка файла из приложения теперь занимает примерно на 20% больше времени: время загрузки увеличилось с обычных 30 секунд до 36 секунд. Это сильный индикатор того, что где-то в сети действительно есть проблема.

В этом сценарии, чтобы изолировать и сузить проблему, вам следует сначала дважды проверить скорость сетевого интернет-соединения. Если скорость сети в порядке, вам следует исключить другие проблемы, такие как перегрузка сети, программные ошибки или проблемы безопасности.

Сформулируйте гипотезу

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

В гипотетическом сценарии команда системного администрирования настроила виртуальную частную сеть (VPN) для тестовой среды веб-приложения. При загрузке файла напрямую с компьютера, использующего применяемую сеть VPN, вы не сталкиваетесь с какими-либо проблемами с производительностью. Однако они возникают при запуске автоматического тестирования загрузки файлов в кластере AWS. Это указывает на проблему с конфигурацией кластера AWS здесь.

Копни глубже и найди доказательства

После проверки пары и использования tcpdump для отладки сети вы обнаруживаете потерю пакета данных при загрузке файла из кластера AWS. Причиной является расстояние: текущий кластер AWS находится в регионе us-east-2, тогда как локальный VPN настроен в Сингапуре.

Кроме того, есть ненужные запросы туда и обратно. Каждый запрос на загрузку отправляется из кластера AWS через общедоступный Интернет, за которым следует локальный VPN; затем он обрабатывается Kong (API gateway) перед окончательным перенаправлением в кластер AWS, где настроена служба загрузки.

Читать  Как использовать Chown в ubuntu

Решить проблему

Измените домен из вашего теста автоматизации на внутренний домен настройки в том же кластере AWS — это позволит запросу на загрузку напрямую поступать к запущенной службе в кластере (вместо прохождения через VPN и последующего возврата обратно в кластер). Время загрузки из кластера AWS теперь должно занимать всего 20 секунд.

 

Зачем использовать tcpdump?

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

Если вы застряли во время отладки, несмотря на то, что перепробовали множество различных инструментов, tcpdump может выполнить эту работу. Он поставляется с различными полезными возможностями, от отображения доступных сетевых интерфейсов до анализа захваченных пакетов, относящихся к определенному файлу.

Например, мы можем получить список сетевых интерфейсов, доступных в системе, выполнив:

 tcpdump -D

 

Рис. 1: Показаны доступные интерфейсы с использованием tcpdump

Рис. 1: Показаны доступные интерфейсы с использованием tcpdump

 

Затем мы можем перехватывать пакеты данных, проходящие через сетевой интерфейс eth0, и сохранять их в файл.

sudo tcpdump -w test.pcap -i eth0

 

Рис. 2. Захват сетевых пакетов, проходящих через eth0 интерфейс

Рис. 2. Захват сетевых пакетов, проходящих через eth0 интерфейс

Далее, чтобы подробно просмотреть данные, полученные из сохраненного файла test.pcap, мы выполним следующее:

tcpdump -r test.pcap

 

Рис. 3. Считывание данных сетевых пакетов из test.pcap файла с помощью tcpdump

Рис. 3. Считывание данных сетевых пакетов из test.pcap файла с помощью tcpdump

 

TCP-флаги

Флаги TCP показывают текущее состояние TCP-соединения и помещаются в заголовок TCP. Например, чтобы проверить, завершил ли запрос отправку данных на сервер, мы можем выполнить фильтрацию по флагу FIN в заголовке TCP. Обычно используются следующие флаги:

  • SYN: Он инициирует запрос на сетевое подключение.
  • ACK: Используется для подтверждения того, что определенное действие в сети одобрено.
  • RST: Это показывает, что соединение было прервано из-за того, что сервисная сеть отключена или больше не принимает никаких запросов.
  • FIN: Это указывает на завершение запроса.
Читать  Решить проблему: неверная замена Bash

 

Преимущества использования расширенных фильтров tcpdump

Флаги TCP полезны для устранения неполадок в сети. Однако реализация инструмента для сбора флагов TCP сложна и требует много работы. К счастью, tcpdump поставляется с мощной функцией фильтрации, которая позволяет легко находить пакеты с определенным TCP-флагом или комбинацией TCP-флагов. Более того, мы даже можем фильтровать пакеты по IP-адресу, сетевому протоколу или источнику.

Например, мы можем фильтровать TCP-пакеты по IP хоста:

tcpdump -r test.pcap host 169.254.169.123

 

Рис. 4: tcpdump фильтрация сетевых пакетов по IP-адресу их хоста

Рис. 4: tcpdump фильтрация сетевых пакетов по IP-адресу их хоста

 

В качестве альтернативы мы можем фильтровать только готовые пакеты:

tcpdump -r test.pcap “tcp[tcpflags] & (tcp-syn)!=0”

 

Рис. 5: tcpdump Опция фильтрации для TCP-флага, отображающая только готовые пакеты

Рис. 5: tcpdump Опция фильтрации для TCP-флага, отображающая только готовые пакеты

 

Заключение

Устранение неполадок в сети может быть сложной и отнимающей много времени задачей. В этой статье мы обсудили распространенные проблемы, с которыми системные администраторы сталкиваются в сетевых системах, и продемонстрировали, как использование tcpdump передовых методов, таких как фильтрация TCP-флагов, может ускорить процесс отладки.

Устранение неполадок в реальном мире может быть довольно сложным, поскольку в сетевой системе запущено множество различных служб и процессов. Ключом к эффективному решению этих сетевых проблем является определение потенциальных проблем и отладка каждой из них до тех пор, пока не будет обнаружена их первопричина.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (1 оценок, среднее: 5,00 из 5)
Загрузка...
Поделиться в соц. сетях:


0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

**ссылки nofollow

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

Это может быть вам интересно


Рекомендуемое
Сфера SEO постоянно развивается, и 2024 год не станет исключением.…

Спасибо!

Теперь редакторы в курсе.