Linux не пингует IP

Обновлено: 21.11.2024

В Unix-подобных операционных системах команда ping отправляет пакеты ICMP ECHO_REQUEST сетевым узлам.

Эта страница посвящена версии ping для Linux.

Описание

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

Утилита ping использует обязательную дейтаграмму ECHO_REQUEST протокола ICMP для получения ICMP ECHO_RESPONSE от хоста или шлюза. Дейтаграммы ECHO_REQUEST ("пинги") имеют заголовок IP и ICMP, за которым следует struct timeval, а затем произвольное количество байтов "заполнения", используемых для заполнения пакета.

Синтаксис

Параметры

< td>Остановить после отправки count пакетов ECHO_REQUEST. С опцией крайнего срока ping ожидает пакетов ECHO_REPLY count, пока не истечет время ожидания.
-a Звуковой сигнал.
-A Адаптивный пинг. Интервал между пакетами адаптируется к времени приема-передачи, так что фактически в сети присутствует не более одного (или более, если установлена ​​предварительная загрузка) неотвеченных зондов. Минимальный интервал составляет 200 мс для любого пользователя, кроме суперпользователя. В сетях с низким RTT (время приема-передачи) этот режим практически эквивалентен режиму лавинной рассылки (см. -f ниже).
-b Разрешить пинговать широковещательный адрес.
-B Не разрешать пингу изменять исходный адрес зондов. Адрес привязывается к адресу, выбранному при запуске ping.
-m mark Использовать mark помечать исходящие пакеты. Это полезно по ряду причин в ядре, таких как использование политик маршрутизации для выбора конкретной исходящей обработки.
-c count
-d Установите SO_DEBUG вариант используемого сокета. Эта опция сокета не используется ядром Linux.
-f Flood ping. Для каждого отправленного ECHO_REQUEST печатается точка (""."), а для каждого полученного ECHO_REPLY печатается backspace. Это обеспечивает быстрое отображение количества отброшенных пакетов. Если интервал не указан (см. -i ниже), он устанавливает интервал равным нулю и выводит пакеты с той же скоростью, с какой они возвращаются, или сто раз в секунду, в зависимости от того, что более. Только суперпользователь может использовать эту опцию с нулевым интервалом.
-i interval Подождите интервал секунд между отправкой каждого пакета. По умолчанию между каждым пакетом обычно ожидается одна секунда, или вообще не ждать в режиме лавинной рассылки (см. -f выше). Только суперпользователь может установить интервал менее 0,2 секунды.
-I interface-address Установить исходный адрес равным указанный адрес интерфейса. Аргументом может быть числовой IP-адрес или имя устройства. Эта опция обязательна при эхо-тестировании локальных адресов IPv6.
-l preload If preload< /i>, ping отправляет такое количество пакетов, не ожидающих ответа. Только суперпользователь может выбрать предварительную загрузку более 3.
-L Подавить замыкание на себя многоадресных пакетов. Этот флаг применяется только в том случае, если адресатом ping является многоадресный адрес.
-N noption Отправить запросы информации об узле ICMPv6 ( RFC 4620) вместо эхо-запросов. noption может быть одним из следующих:

Примечания

При использовании ping для локализации сбоев сначала следует запустить его на локальном хосте, чтобы убедиться, что локальный сетевой интерфейс запущен и работает. Затем хосты и шлюзы все дальше и дальше должны быть «пингованы». Рассчитывается время приема-передачи и статистика потери пакетов. Если получены повторяющиеся пакеты, они не включаются в расчет потери пакетов, хотя время прохождения этих пакетов туда и обратно используется при расчете минимального/среднего/максимального времени прохождения туда и обратно. Когда заданное количество пакетов отправлено (и получено) или если программа завершается сигналом SIGINT, отображается сводка. Более короткую текущую статистику можно получить без остановки процесса по сигналу SIGQUIT.

Если команда ping вообще не получает ответных пакетов, она завершится с кодом 1. Если указано количество пакетов и крайний срок, а к моменту истечения крайнего срока получено меньше пакетов, чем count прибыл, он также завершается с кодом 1. При другой ошибке он завершается с кодом 2. В противном случае он завершается с кодом 0. Это позволяет использовать код выхода, чтобы увидеть, жив хост или нет.

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

Сведения о пакете ICMP

Заголовок IP без параметров занимает 20 байт.Пакет ICMP ECHO_REQUEST содержит дополнительные 8 байтов заголовка ICMP, за которыми следует произвольное количество данных. Когда указывается размер пакета, это указывает на размер этого дополнительного фрагмента данных (по умолчанию 56). Таким образом, объем данных, полученных внутри IP-пакета типа ICMP ECHO_REPLY, всегда на 8 байт больше, чем запрошенное пространство данных (заголовок ICMP).

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

Дубликаты и поврежденные пакеты

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

Поврежденные пакеты являются серьезной причиной для беспокойства и часто указывают на неисправное оборудование где-то на пути ping-пакета (в сети или на хостах).

Испытание различных шаблонов данных

Сетевой (межсетевой) уровень никогда не должен обрабатывать пакеты по-разному в зависимости от данных, содержащихся в части данных. К сожалению, известно, что проблемы, связанные с данными, проникают в сети и остаются незамеченными в течение длительного периода времени. Во многих случаях конкретный шаблон, имеющий проблемы, — это то, что не имеет достаточного количества «переходов», например, всех единиц или всех нулей, или шаблон прямо на краю, например, почти все нули. Не обязательно указывать шаблон данных, состоящий из всех нулей (например) в командной строке, потому что интересующий шаблон находится на уровне канала передачи данных, и отношение между тем, что вы вводите, и тем, что передают контроллеры, может быть сложный.

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

Сведения о сроке жизни

Значение TTL (время жизни) IP-пакета представляет собой максимальное количество IP-маршрутизаторов, через которые может пройти пакет, прежде чем он будет отброшен. На практике можно ожидать, что каждый маршрутизатор в Интернете будет уменьшать поле TTL ровно на единицу.

В спецификации TCP/IP указано, что поле TTL для пакетов TCP должно быть установлено на 60, но многие системы используют меньшие значения (4.3 BSD использует 30, 4.2 использует 15).

Максимально возможное значение этого поля — 255, и в большинстве систем Unix для поля TTL пакетов ICMP ECHO_REQUEST установлено значение 255. Вот почему вы обнаружите, что можете пропинговать некоторые хосты, но не можете связаться с ними по telnet или ftp.

В обычном режиме ping печатает значение ttl из полученного пакета. Когда удаленная система получает пакет ping, она может сделать одно из трех действий с полем TTL в своем ответе:

  • Не изменять его; это то, что системы Berkeley Unix делали до выпуска 4.3 BSD Tahoe. В этом случае значение TTL в полученном пакете будет равно 255 минус количество маршрутизаторов на пути туда и обратно.
  • Установите значение 255; это то, что делают современные системы Berkeley Unix. В этом случае значение TTL в полученном пакете будет равно 255 минус количество маршрутизаторов на пути от удаленной системы до проверяющего хоста.
  • Установите другое значение. Некоторые машины используют для пакетов ICMP то же значение, что и для пакетов TCP, например, 30 или 60. Другие могут использовать совершенно дикие значения.

Дополнительные примечания

  • Многие хосты и шлюзы игнорируют параметр RECORD_ROUTE.
  • Максимальная длина IP-заголовка слишком мала, чтобы такие параметры, как RECORD_ROUTE, могли быть полностью полезными, хотя с этим мало что можно сделать.
  • Флоуд-пинг в целом не рекомендуется, а флуд-пинг широковещательного адреса должен выполняться только в строго контролируемых условиях.

Примеры

Дополнительная информация

Связанные команды

host — преобразование имени хоста в IP-адрес и наоборот.
ifconfig — просмотр или изменение конфигурации сетевых интерфейсов.
netstat — вывод информации о сетевых подключениях, таблицах маршрутизации, статистике интерфейсов, маскараде. подключения и членство в многоадресной рассылке.
rpcinfo – отчет об удаленных вызовах процедур.
traceroute – отслеживание маршрута, по которому пакеты проходят к удаленному хосту.

Если кажется, что ваш сервер Linux отключен или недоступен по какой-либо иной причине, вы всегда сможете войти в систему с помощью веб-консоли на панели управления UpCloud или через соединение VNC.После входа в систему проверьте интернет-соединение вашего сервера с помощью ping и общедоступного IP-адреса, такого как общедоступный DNS-сервер Google, который, скорее всего, ответит, если ваше интернет-соединение работает.

Вывод должен выглядеть примерно так:

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

Проверьте конфигурацию вашей сети

Убедитесь, что сетевые интерфейсы, такие как eth0, включены. Чтобы просмотреть все настроенные интерфейсы, используйте эту команду.

Вывод команды покажет состояние каждого сетевого интерфейса на сервере с «состоянием UP» или «состоянием DOWN», например, как показано ниже.

Включите все отключенные интерфейсы с помощью следующей команды.

Здесь имя интерфейса является одним из имен, перечисленных в выводе команды ip addr, например eth0, eth1 или eth2< /tt>.

Когда все сетевые интерфейсы будут включены, попробуйте снова использовать команду ping. Если проблема не устранена, убедитесь, что сетевым интерфейсам назначены IP-адреса, и они совпадают с информацией в разделе «Сеть» панели управления UpCloud.

Попробуйте перезапустить любой проблемный интерфейс с помощью следующих команд.

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

Если перезапуск сетевого интерфейса устранил проблему, отлично! Если нет, продолжайте устранение неполадок.

Проверьте файл конфигурации сети

Linux обычно хранит сетевые настройки в определенных файлах и считывает их, например, при загрузке или при использовании команды ifup. Чтобы внести изменения в конфигурацию сети, вам нужно открыть нужный файл в текстовом редакторе. В дистрибутивах на основе Debian и Ubuntu это можно сделать с помощью

В большинстве случаев файл interfaces должен содержать как минимум следующие интерфейсы.

В CentOS и других вариантах Red Hat эти конфигурации разделены на отдельные файлы для каждого сетевого интерфейса и хранятся в /etc/sysconfig/network-scripts/. Интерфейс по умолчанию для подключения к Интернету обычно называется eth0, откройте соответствующий файл конфигурации.

Файл конфигурации для eth0 должен выглядеть так.

Если файлы конфигурации интерфейсов не соответствуют приведенному здесь примеру, отредактируйте файл, относящийся к вашей системе, чтобы восстановить исходную функциональность. Чтобы любые изменения, внесенные в эти файлы, вступили в силу, необходимо перезапустить интерфейсы, к которым применяются изменения, как описано ранее с помощью команд ifdown и ifup.

Проверьте DNS-записи серверов

Если ping с IP-адресом работает, но обычное соединение по-прежнему не работает, попробуйте вместо этого проверить связь с доменным именем. Например, вы можете пропинговать домен UpCloud таким образом.

Если домен не отвечает, проблема, скорее всего, связана с тем, как ваш сервер преобразует доменные имена в IP-адреса. Проверьте записи DNS вашего сервера.

Список должен содержать как минимум 1 сервер имен. Все резолверы DNS по умолчанию в UpCloud имеют одинаковые IP-адреса независимо от зоны доступности. DNS-серверы предоставляются автоматически по протоколу DHCP, поэтому в операционной системе не требуется ручная настройка.

Если ваш сервер имеет общедоступный IPv6-адрес, вы также можете использовать IPv6 со следующими серверами:

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

На серверах Debian, на которых не установлен resolvconf, вы можете напрямую редактировать файл resolv.conf.

Добавьте строки, показанные ниже, в файл, сохраните и выйдите.

Те, у кого установлен resolvconf, в случае, если resolv.conf все еще пуст после команды обновления, вы можете добавить серверы имен в свой файл интерфейсов. Откройте его для редактирования.

Добавьте сервер имен в конец раздела eth0.

После этого сохраните файл и выйдите. Вам также потребуется перезапустить сетевую службу с помощью следующей команды.

В CentOS и других вариантах Red Hat файл resolv.conf заполняется немного по-другому. Если файл пуст, вы можете добавить до двух записей DNS в файл конфигурации сети для сети. интерфейс, отвечающий за публичный IP. Например, откройте ifcfg-eth0 следующей командой.

Отредактируйте файл, чтобы он выглядел следующим образом.

Выйдите из редактора и перезапустите интерфейс, файл конфигурации которого вы только что отредактировали, с помощью команд ifdown и ifup.

Проверьте соединение в обоих направлениях

Попробуйте пропинговать свой сервер через Интернет.Откройте терминал или командную строку на своем компьютере и попробуйте пропинговать общедоступный IP-адрес вашего сервера, который вы можете найти в панели управления UpCloud в разделе «Сеть».

Проверьте подключение к Интернету, отправив эхо-запрос на другой сайт с вашего сервера. Например, используйте следующую команду, чтобы пропинговать общедоступный DNS Google.

Если у вас есть второй сервер, развернутый в вашей учетной записи, и проблема связана с интерфейсом, назначенным с частным IP-адресом, попробуйте выполнить эхо-запрос с другим сервером, используя частные IP-адреса, указанные в панели управления UpCloud.

Если проверка связи не дает ответа, попробуйте перезапустить все сетевые службы вашего сервера. В Debian и Ubuntu 12.04 или более ранней версии используйте приведенную ниже команду.

В CentOS и других системах на базе Red Hat вместо этого перезапустите сеть с помощью приведенной ниже команды.

В Ubuntu 14.04 и новее вам нужно будет запустить команду для каждого сетевого интерфейса отдельно, например, вы можете перезапустить eth0 просто следующим образом.

После перезапуска сетевых служб попробуйте снова запустить ping в обоих направлениях. Если ping работает в одном направлении, но не работает в другом, проверьте настройки брандмауэра.

Узнайте, где происходит сбой соединения

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

Для этой цели на серверах Ubuntu есть сетевой инструмент mtr. Запустите его с помощью следующей команды.

Чтобы выйти, просто нажмите q на клавиатуре.

Чтобы сделать это в системах Debian, где mtr обычно не устанавливается по умолчанию, вы можете вместо этого использовать traceroute.

На серверах CentOS используйте команду tracepath.

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

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

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

Если исходящая трассировка не достигает даже первого узла, проверьте настройки сети и брандмауэр. Брандмауэр также может нести ответственность за отказы в подключении, если трассировка через Интернет до вашего сервера не выполняется непосредственно перед достижением сервера.

Настройки брандмауэра

Убедитесь, что ваше соединение не блокируется брандмауэром. CentOS и некоторые другие дистрибутивы на основе Red Hat по умолчанию имеют строгие правила брандмауэра. Следующая команда выведет список всех правил брандмауэра на стороне сервера в вашей системе.

Iptables — это встроенный в Linux программный брандмауэр, и приведенная выше команда выводит следующее.

Ваша панель управления UpCloud также предоставляет легко настраиваемый брандмауэр в настройках сервера на вкладке Брандмауэр.

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

Информация о статусе хоста

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

Главный редактор и технический писатель в UpCloud с 2015 года. Энтузиаст облачных вычислений, пишущий о серверных технологиях и программном обеспечении.

В принципе, я могу отправить эхо-запрос со своего Linux-сервера на Windows (при отключенном брандмауэре), но не могу выполнить эхо-запрос с Windows на Linux, независимо от того, отключен ли ufw-брандмауэр или нет. Просто не доходит. В моей Ubuntu также используется адаптер сетевого моста.

IP-адрес Linux-сервера:

IP-адрес Windows (Wi-Fi):

Из-за этого, я думаю, я не могу подключиться к серверу linux также с помощью SSH. Брандмауэр не может быть проблемой, потому что я отключил их оба.

Я уже говорил об этом в разделе комментариев ниже, но могу повторить и здесь. Нет, SSH не работает. Выдает известную ошибку: «Ошибка сети: время ожидания подключения истекло», и я до сих пор не смог решить эту проблему.

Да, мой хост Ubuntu находится на виртуальной машине (VirtualBox). Я просто пытаюсь подключить свой сервер Ubuntu (который находится на виртуальной машине) к моему хосту Windows через SSH. Но это не работает. Поскольку это не сработало, я попытался пропинговать два, и один из двух прошел успешно, что странно.Если проблема связана с адаптером сетевого моста, что вы предлагаете мне предпринять? Кроме того, я уже использовал SSH, и это сработало. Только сейчас, через пару месяцев, снова пытаюсь зайти по SSH, и теперь по какой-то странной причине не получается. Должен ли я попытаться изменить IP-адрес моего Ubuntu?

Это сервер Ubuntu. Вот два соответствующих конфигурационных файла моего сервера:

Вы пробовали использовать SSH? Ping — это один из тех странных протоколов, когда вещи не обязательно отвечают так, как должны, или фильтруются на маршрутизаторе между подсетями, поэтому иногда SSH (tcp) будет работать, а Ping (ICMP) — нет.

Вы можете установить Wireshark в Windows и tcpdump в Linux, чтобы увидеть фактические пакеты. Судя по всему, здесь задействовано еще одно устройство, WiFi-роутер?

У меня уже есть Wireshark, но что именно мне нужно искать при устранении неполадок в этом конкретном случае? Я вижу, что 4 пинга не работают, но на самом деле это не дает мне информации, с которой я знаю, как с ней справиться. Любые подробности? А что касается «Шарада Гаутама», что такое «nmap»? Лично никогда об этом не слышал.

1 Ответ 1

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

1) Компьютеры Windows и Linux должны находиться в одной локальной сети.

2) Сервер Linux не является виртуальной машиной.

3) Вы используете мостовые соединения на своем компьютере с Windows, чтобы совместно использовать его беспроводное соединение с сервером Linux через Ethernet. (Вы соединили беспроводную сеть и Ethernet в Windows, чтобы получить соединение с Linux.)

Тогда проблема, скорее всего, в вашем сетевом мосту. Ваш маршрутизатор назначил компьютеру Windows локальный IP-адрес 192.168.0.110, и это обычная подсеть для локальных сетей.

Проблема в том, что ваш Linux-сервер имеет IP-адрес 10.88.77.111, который является совершенно другой подсетью. Это означает, что он, вероятно, неправильно получил адрес от вашего маршрутизатора, и из-за этого Windows не может пропинговать сервер Linux.

Я бы удалил сетевой мост, проверил все ваши настройки и попытался создать его снова. Изменили ли вы какие-либо параметры по умолчанию при создании моста, например, задали статические адреса в свойствах «Протокол Интернета версии 4 (TCP/IPv4)»?

Изменить:

Поскольку ваш сервер Linux является виртуальной машиной, приведенная выше информация не относится к вашей настройке.

Изменяли ли вы какие-либо сетевые настройки при первоначальной настройке виртуальной машины?

Подождите секунду, этот адрес, на который настроен ваш сервер, очень похож на адрес, который назначает VirtualBox, когда сетевые настройки находятся в режиме NAT. Вы уверены, что он находится в режиме моста, например, вот так:

Если он находится в режиме моста, а не NAT, задайте в файле /etc/network/interfaces автоматическое получение IP-адреса. Скорее всего, он будет больше похож на Windows. Если автоматический адрес, который он вам дает, работает, настройте статический IP-адрес так, чтобы он был вам автоматически предоставлен.

Я посвятил свою карьеру созданию сетей и серверов, их развертыванию, устранению неполадок и обслуживанию приложений. Когда возникает проблема с сетью, будь то перебои в работе или неудачное развертывание (или вам просто интересно, как все работает), на ум приходят три простых инструмента: ping , traceroute и netstat .

Дополнительные ресурсы по Linux

Команда ping — один из самых известных доступных инструментов. Проще говоря, ping отправляет запрос «ты здесь?» сообщение удаленному хосту. Если хост действительно находится там, ping возвращает сообщение «ага, я здесь». Он делает это с помощью протокола, известного как ICMP или протокол управляющих сообщений Интернета. ICMP был разработан как протокол сообщений об ошибках и имеет множество применений, которые мы не будем здесь рассматривать.

Ping использует два типа сообщений ICMP: тип 8 (эхо-запрос) и тип 0 (эхо-ответ). Когда вы запускаете команду ping, источник отправляет эхо-запрос ICMP получателю. Если пункт назначения доступен и ему разрешено отвечать, он отвечает эхо-ответом ICMP. Как только сообщение возвращается к источнику, команда ping отображает сообщение об успешном выполнении, а также время приема-передачи (RTT).RTT может быть индикатором задержки между источником и получателем.

Примечание. ICMP обычно является протоколом с низким приоритетом, а это означает, что ICMP RTT не гарантирует соответствия RTT для протокола с более высоким приоритетом, такого как TCP.

По завершении команды ping отображается сводка сеанса ping. Эта сводка сообщает вам, сколько пакетов было отправлено и получено, сколько пакетов было потеряно, а также статистические данные о RTT трафика. Ping — отличный первый шаг для определения того, является ли пункт назначения «активным». Однако имейте в виду, что некоторые сети блокируют трафик ICMP, поэтому отсутствие ответа не является гарантией того, что адресат не в сети.

Вот пример:

Одна вещь, которую следует отметить в отношении приведенных выше выходных данных и утилиты ping в целом, заключается в том, что ping — это исключительно инструмент IPv4. Если вы проводите тестирование в сети IPv6, вам потребуется использовать утилиту ping6. Ping6 ведет себя примерно так же, как утилита ping, за исключением того, что она использует IPv6.

Трассировка

Traceroute — привередливый зверь. Этот инструмент предназначен для определения пути между источником и пунктом назначения. Реальность в основном верна, с парой оговорок. Начнем с объяснения того, как работает traceroute:

Думайте о traceroute как о строке команд ping. На каждом этапе пути traceroute идентифицирует IP-адрес прыжка, а также задержку для этого прыжка. Но как он находит каждый прыжок? Оказывается, здесь используется небольшая хитрость.

Traceroute использует UDP или ICMP в зависимости от ОС. В типичной системе *nix он использует UDP и по умолчанию отправляет трафик на порт 33434. В системе Windows traceroute использует ICMP. Как и в случае с ping , traceroute можно заблокировать, если он не отвечает на используемый протокол/порт.

При вызове traceroute вы указываете место назначения, к которому пытаетесь добраться. Команда начинается с отправки пакета адресату, но устанавливает время жизни пакета (TTL) равным единице. Это поведение важно, поскольку значение TTL определяет, сколько прыжков пакету разрешено пройти, прежде чем сообщение ICMP Time Exceeded будет возвращено источнику. Хитрость здесь заключается в том, чтобы начать TTL с единицы и увеличить его на единицу после получения сообщения ICMP:

В отношении traceroute есть еще одно предостережение, о котором вам следует знать: Traceroute показывает вам путь от источника к месту назначения, но это не означает, что верно обратное. На самом деле в настоящее время нет способа определить путь от места назначения к источнику, не запуская вторую трассировку от места назначения. Помните об этом при устранении неполадок с путями.

Нетстат

Netstat – незаменимый инструмент, который показывает все сетевые подключения на конечной точке. То есть при вызове netstat на вашем локальном компьютере отображаются все открытые порты и соединения. Эти выходные данные включают соединения, которые не полностью установлены, а также соединения, которые разрываются:

Вышеприведенный вывод показывает несколько разных портов в состоянии прослушивания, а также несколько установленных соединений. Для портов прослушивания, если адрес источника равен 0.0.0.0, он прослушивает все доступные интерфейсы. Если вместо этого есть IP-адрес, то порт открыт только на этом конкретном интерфейсе.

Установленные соединения показывают IP-адреса источника и назначения, а также порты источника и назначения. Поля Recv-Q и Send-Q показывают количество байтов, ожидающих подтверждения в любом направлении. Наконец, поле имени PID/программы показывает идентификатор процесса и имя процесса, ответственного за прослушиваемый порт или соединение.

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

В последние годы команда netstat была заменена командой ss. Дополнительную информацию о команде ss можно найти в этой статье Кена Хесса.

Заключение

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

[ Хотите узнать больше о нетворкинге? Ознакомьтесь со шпаргалкой по работе с сетью в Linux. ]

Читайте также: