Обрыв соединения с сервером. Трассировка и пинг

2018-04-12T10:58:52+00:00Август 1st, 2017|Блог|

«Ааа, помогите, все пропало!» – если ваш внутренний голос реагирует на обрыв соединения с сервером примерно так, этот материал точно для вас. :) Безусловно, со своей стороны мы каждый день делаем все возможное, чтобы ничто не мешало вашей работе в облаке, но случись форс-мажор – будем разбираться. А чтобы быстрее сориентироваться в ситуации и понять, на чьей стороне ошибка, вот вам задача-минимум – во время обрыва первым делом выполните трассировку маршрута и пинг промежуточных узлов. Как все это сделать, сейчас расскажем.

Трассировка маршрута

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

1. Запустите команду cmd: Win+R > пропишите cmd > ОК.

2. В открывшейся командной строке введите tracert Х.Х.Х.Х (где Х.Х.Х.Х – это IP-адрес сервера или домен) и нажмите Enter.

В примере мы сделали трассировку для google.com.

tracert google.com

Получилось так:

1 2 1 ms 1 ms 1 ms 193.151.89.254
3 5 ms 4 5 1 ms 6 1 ms 7 1 ms 3 ms 1 ms bearline-ic-324086-ffm-b4.c.telia.net [62.115.153.215]
8 1 ms 1 ms 1 ms 108.170.251.129
9 13 ms 13 ms 15 ms 66.249.94.135
10 13 ms 13 ms 13 ms fra15s12-in-f46.1e100.net [216.58.208.46]

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

* * * Превышен интервал ожидания для запроса.

Но даже в таком случае пока не время для выводов – эта запись может означать как потерю пакетов, так и то, что узел сети просто закрыт настройками безопасности. Иногда провайдеры специально настраивают узлы так, чтобы они не отвечали на трассировочные пакеты, дабы снизить нагрузку. Чтобы точно узнать, действительно ли происходит обрыв, и, если да, то где именно, нужно пропинговать каждый из узлов. При трассировке мы получили IP каждого из них, а значит, можем перейти к пингу.

Пинг промежуточных узлов

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

В ОС Windows по умолчанию передается только четыре пакета, чего недостаточно, если проблема проявляется кратковременно. Поэтому нужно снять это ограничение параметром -t (чтобы потом остановить обмен пакетами, нажать CTRL+C).

Теперь по порядку.

1. Запустите команду cmd: Win+R > пропишите cmd > ОК.

2. В открывшейся командной строке введите ping -t Х.Х.Х.Х (где Х.Х.Х.Х – это адрес одного из промежуточных узлов, которые мы узнали при трассировке) и нажмите Enter.

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

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

Итак, пингуем – в десяти отдельных окнах командной строки вводим команды с IP-адресами узлов, которые мы выявили при трассировке. В нашем случае будут такие команды:

ping -t 10.1.1.1
ping -t 193.151.89.254
ping -t 85.195.75.129
ping -t 213.248.79.29
ping -t 62.115.139.50
ping -t 62.115.120.8
ping -t 62.115.153.215
ping -t 108.170.251.129
ping -t 66.249.94.135
ping -t 216.58.208.46

Если в каком-нибудь из окон вы с первых же секунд видите «Превышен интервал ожидания», не спешите кричать: «Попался!». Если следующие узлы пингуются нормально, значит, этот просто закрыт настройками. В нашем случае, например, предпоследний узел (66.249.94.135) сразу же говорит, что интервал превышен, но с пингом десятого узла никаких проблем нет.

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

На чьей стороне ошибка?

Итак, обрыв повторился. Но на этот раз запущенный пинг промежуточных узлов поможет «обличить» виновника. Тут все просто – с какого узла вам начало выдавать «Превышен интервал ожидания», тот и слабое звено.

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

1. Последний узел. Если последний узел сначала пинговался нормально (некоторые Windows-машины вообще не отвечают на пинг, это задается в настройках брандмауэра)…

1

…а после обрыва начал показывать «Превышен интервал ожидания», обрыв происходит на вашем сервере.

2

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

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

3. Все узлы одновременно. Если все окна с пингом начали показывать «Превышен интервал ожидания», проблема в вашем компьютере или сети, к которой он подключен.

Бонус!

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

Для ОС семейства Windows такую оптимизацию проводит утилита Winmtr. Она не нуждается в установке и готова к использованию сразу после распаковки из архива.

Скачать утилиту можно здесь.

Распаковали, запустили, что дальше?

В поле Host укажите конечный сервер, с которым будет проверяться соединение, и нажмите Start:

1

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

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

Раз мы проверяем соединение с сервером, нас интересуют столбцы Sent (отправлено пакетов) и Recv (получено пакетов). Если значения в этих столбцах не совпадают, значит, качество связи с узлом ухудшилось. Что делать? Обратиться в соответствующую техподдержку.

Столбец Loss поможет просмотреть динамику потерь в процентном соотношении.

Также утилита позволяет копировать текст в удобных форматах (.txt и .html) в буфер обмена (Copy to clipboard) или в отдельный файл (Export).

Двойной щелчок по промежуточному узлу позволит получить дополнительную информацию о нем.

Важно знать!

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

  1. Interval (sec) – время обновления данных в секундах.
  2. Max host in LRU list – максимальное количество хостов (или IP-адресов, если не активна опция Resolve names) до конечной точки.
  3. Ping size (bytes) – размер ICMP-пакета.
  4. Resolve names – возможность преобразовать IP-адрес в имя хоста.

А что же линуксоиды?

Для ОС семейства Linux утилита называется просто MTR. Если ее нет в вашей операционной системе, установить ее можно одним из следующих способов:

Debian/Ubuntu/Mint:

$ apt-get install mtr

CentOS/RedHat/Fedora:

$ yum install mtr

У MTR такой же функционал, как у Winmtr, а также схожий графический интерфейс. Запустить утилиту можно командой:

mtr X.X.X.X

где X.X.X.X – это IP-адрес конечного сервера или имя хоста.

1

В данном случае интересуют следующие столбцы:

  • Loss % – процент потерянных пакетов между компьютером-отправителем и промежуточными узлами.
  • SNT – общее количество отправленных пакетов.

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

Отдельно отметим возможность запуска утилиты в текстовом (консольном) режиме. Для этого достаточно добавить опцию -t или --curses:

mtr --curses tucha.ua

1

Рассмотрим еще несколько важных опций MTR, которые могут быть крайне полезны в процессе диагностики сети.

-r или --report

Запускает режим отчета, в котором MTR обработает заданное количество циклов (определенных опцией -c), а затем отобразит статистику и автоматически завершит работу. Этот режим полезен для сбора статистики о качестве сети.

-c COUNT или --report-cycles COUNT

Позволяет задать количество циклов, после которых MTR завершит работу.

-p BYTES или --psize BYTES

Устанавливает размер пакетов в байтах.

-i SECONDS или --interval SECONDS

Задает интервал между отправляемыми пакетами.

-n или --no-dns

Разрешает не использовать DNS, отображает IP-адреса узлов.

-a X.X.X.X или --address X.X.X.X

Позволяет указать адрес интерфейса компьютера, с которого будут отправляться ICMP-запросы.

Итого

Разумеется, команды в консоли дают более точный результат, поскольку фиксируют даже единичные потери пакетов (короткие обрывы), но Winmtr и MTR компактные и более удобны в использовании. А на чем остановить свой выбор, решать только вам. :)

Вот, собственно, и все, кто виноват – выяснили, что делать – тоже. :) Надеемся, материал был вам полезен, а если у вас остались дополнительные околооблачные вопросы, обращайтесь к нам за грамотной консультацией 24/7.

Метки: , , , , , , ,