Автор оригинала: shai ben shalom.
Работа с проблемами с сетью может быть очень сложной задачей.
Пакет, отправленный от клиента на сервер (или наоборот), может быть отброшен в различных местах и по разным причинам. Некоторые из наиболее распространенных случаев являются —
- Брандмауэр, который блокирует пакет. Это может быть брандмауэр на стороне сервера, на стороне клиента или на любом брандмауэре по пути между сервером и клиентом. Блокировка может быть основана на IP (источник и/или место назначения), портам (в случае TCP/UDP) или любых других критериев 3,4 уровня.
- Отсутствие подключения слоя 2.
- Конфигурации маршрутизации, которые не устанавливаются правильно.
К счастью, инструменты командной строки Linux поставляют значительную информацию, которая может помочь нам сузить проблему.
Из моего опыта в качестве инженера сетевого инженера — это мои лучшие 8 инструментов, которые помогут вам преодолеть проблемы с сетью.
Пинг Это самая фундаментальная команда при устранении неисправностей проблемы с сетью. Команда Ping проверит сетевую подключение между вашим хостом и сервером. Это определенно первая команда для использования при подозрении без подключения к сети.
ifconfig ifconfig позволит вам просматривать и настроить сетевые интерфейсы. Вы можете просмотреть свои сетевые интерфейсы и IP-адреса, назначенные им. Вы можете просмотреть статистику сети для каждого сетевого интерфейса (стоит смотреть на счетчики сброшенных или ошибок пакетов). Вы можете просмотреть состояние сетевого интерфейса (вверх/вниз).
TCPDUMP TCPDUMP распечатает содержимое пакетов, которые получают или передаются сетевым интерфейсом (или всеми сетевыми интерфейсами). Это мощный Util из-за его способности давать полный вид на сетевые трафик и его возможности фильтрации, которые позволяют нам фильтровать трафик по слою 3 и 4 свойства. Например, чтобы просмотреть все трафик на ETH0, переданный в порт 80 или получен портом 80 —
Netstat Netstat распечатает сетевые соединения, таблицы маршрутизации, статистики интерфейса, Masquerade Connections и Multicast. Я хочу сосредоточиться на умении NetStat предоставить информацию о прослушивании сокетов. При установлении подключения TCP от клиента на сервер на конкретном порте сервера. Сервер должен иметь запущенную программу, которую «слушает» на этом конкретном порту. Использование команды NetStat (на стороне сервера) мы можем проверить, что действительно программа имеет разъем на прослушивании на этом конкретном порту и, на котором IP-адреса он принимает соединения.
IP правило, IP маршрут Я намеренно помещаю эти 2 команды вместе, поскольку они связаны. Обычно, когда мы хотим взглянуть на нашу настроенную таблицу маршрутизации, мы вводим команду IP-маршрута —
Вывод, видимый на экране, является основной таблицей маршрутизации. Linux имеет несколько встроенных таблиц маршрутизации, включая пользовательские таблицы маршрутизации, которые можно настроить. Чтобы понять поток пакета системы, мы должны знать базу данных политики маршрутизации. IP-правило дает нам эту информацию —
С вывода мы видим, что в этой системе есть 4 таблицы маршрутизации. Первая таблица маршрутизации, которая будет искать соответствующий маршрут, является локальная таблица, вторая таблица 3 и третий — главная таблица. В этом примере была определена маршрутизация на основе источника. Все пакеты, источник IP IP 2.2.2.2 и не имел матч маршрута в локальной таблице, будет маршрутизирован на основе таблицы 3, а не на основе основной таблицы! .the. Ниже скриншот показывает содержание таблицы маршрутизации № 3.
Поэтому при поиске проблем маршрутизации всегда проверяйте сначала база данных маршрутизации, используя правило IP, а затем осмотрите правильную таблицу маршрутизации, используя IP-маршрутную таблицу [ИМЯ]
iptables IPTables — это инструмент администрирования для фильтрации пакетов IPv4 и Nat. Это в основном служит брандмауэром. IPTables имеет 4 столы с предопределенными цепями. Обычно мы проверим фильтрованный стол. Таблица фильтра — это таблица по умолчанию, отображаемая при наборе iptables -l и вся фильтрация определена в этой таблице.
Стоит проводить время обучения iptables от одного из многих учебных пособий в Интернете. Использование iptables можно проверить определенные правила, которые предотвращают установку соединения (в приведенных выше скриншотах, которые исходят из источника IP 1.2.3.4 с исходным полем 80). iptables также дает журнальную инфраструктуру, поэтому правило может быть добавлено с действием журнала (скорее падение или принять), поэтому, если мы ожидаем увидеть пакет в определенной цепочке, мы можем просто войти в систему и убедиться, что пакет действительно прибыл туда, где это должно быть.
IP сосед Эта команда печатает на экран таблицы ARP. Всегда помните, что перед отправкой IP-пакета с одной точки на другой — MAC-адрес назначения должен быть известен отправителю (это на самом деле MAC-адрес шлюза в большинстве случаев, когда 2 конечных точка не подключены напрямую). Поэтому всегда стоит проверить таблицу ARP для проблем подключения к слое 2, прежде чем проверять сеть или транспортный слой.
Конклюк Конклюк предоставит вам информацию о всей связи, их состояние и некоторую другую полезную информацию.
Чтобы увидеть все соединения TCP
Каждый вход линии Conntrack показывает 2 направления пакета: исходное направление (пакет, который инициировал соединение) и направление ответа. Инструмент Conntrack может быть очень полезен в отладочных вытесных соединениях, при изучении состояния соединения TCP осмотрите количество соединений в системе (достижение максимального количества соединений, предотвращающуюся в будущих соединениях) и намного больше.
В заключение, есть почти бесконечные различные типы сетевых проблем, которые вы можете столкнуться, решая эти проблемы не всегда легко, однако овладевание тем инструментам, которые я упомянул, будет значительно увеличить ваши шансы для решения многих из этих вопросов.
Оригинал: «https://www.codementor.io/@shaibenshalom/linux-command-line-tools-for-detecting-networking-issues-in-layers-2-3-4-rzf06hki3»