Перейти к основному содержимому

Диагностика сети для выделенного сервера

Последнее изменение:

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

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

Проблемы сети и методы диагностики

Отсутствует доступ в интернет
Сервер недоступен по сети
Сервер недоступен из определенной внешней сети
Кратковременная потеря соединения
Низкая скорость
Высокая сетевая задержка
Потеря пакетовВыполнить трассировку маршрута

Выполнить трассировку маршрута

Выполните трассировку маршрута, если вы столкнулись:

  • с низкой скоростью соединения;
  • высокой сетевой задержкой;
  • потерями соединения;
  • потерями пакетов при передаче данных;
  • недоступностью сервера из определенной внешней сети.

Трассировку нужно провести в двух направлениях — от выделенного сервера к точке вне инфраструктуры Selectel и обратно. Для этого вам понадобится внешний сервер — любой сервер с публичным IP-адресом и доступом в интернет, который находится вне инфраструктуры Selectel.

Мы рекомендуем выполнять трассировку с помощью утилиты mtr (WinMTR для Windows). Утилита позволяет отследить полный путь и время прохождения трафика и выяснить, на каком этапе маршрута происходят задержки или потеря пакетов.

  1. Выполните трассировку от выделенного сервера до внешнего сервера.
  2. Выполните трассировку от внешнего сервера к выделенному серверу.

1. Выполнить трассировку от выделенного сервера до внешнего сервера

  1. Подключитесь к серверу по SSH или через KVM-консоль.

  2. Установите утилиту mtr на выделенный сервер. Подробнее на GitHub mtr.

  3. Опционально: подготовьте выделенный сервер к трассировке — выключите утилиты и приложения, которые могут повлиять на результат трассировки:

    • правила файрвола в ОС;
    • приложения прикладного уровня (L7, application layer) — веб-серверы, почтовые серверы, файловые-серверы, серверы имен, клиентов и серверов пиринговых сетей и т. д.
  4. Выполните трассировку до адреса внешнего сервера:

    mtr -b <remote_ip_address>

    Укажите <remote_ip_address> — IP-адрес внешнего сервера.

  5. Дождитесь, когда утилита выполнит трассировку и выведет информацию о маршруте и задержках.

  6. Остановите трассировку:

    q

2. Выполнить трассировку от внешнего сервера к выделенному серверу

  1. На внешний сервер установите утилиту в зависимости от используемой ОС:

    • для Linux — mtr, подробнее на GitHub mtr;
    • для Windows — WinMTR.
  2. Опционально: подготовьте внешний сервер к трассировке — выключите утилиты и приложения, которые могут повлиять на результат трассировки:

    • правила файрвола в ОС;
    • приложения прикладного уровня (L7, application layer) — веб-серверы, почтовые серверы, файловые-серверы, серверы имен, клиентов и серверов пиринговых сетей и т. д.
  3. Выполните трассировку до адреса выделенного сервера. IP-адрес выделенного сервера можно посмотреть в панели управления: в верхнем меню нажмите ПродуктыВыделенные серверыСерверы → страница сервера → вкладка Операционная система → поле IP.

Измерить скорость передачи данных

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

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

Для измерения скорости мы рекомендуем использовать утилиту iperf3.

  1. Подготовьте выделенный сервер к замеру скорости.
  2. Измерьте скорость передачи данных.

1. Подготовить выделенный сервер к замеру скорости

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

  2. Подключитесь к серверу по SSH или через KVM-консоль.

  3. Установите утилиту iperf3 на выделенный сервер, подробнее в документации iPerf.

  4. Запустите утилиту iperf3. Утилита должна работать до завершения измерения скорости передачи данных.

    iperf3 -s

2. Измерить скорость передачи данных

  1. На внешнем сервере откройте CLI.

  2. Установите утилиту iperf3 на внешний сервер, подробнее в документации iPerf.

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

    iperf3 -c <ip_address> -P20 -t60 -i10

    Укажите <ip_address> — публичный IP-адрес выделенного сервера. Можно посмотреть в панели управления: в верхнем меню нажмите ПродуктыВыделенные серверыСерверы → страница сервера → вкладка Операционная система → поле IP.

  4. Выполните замер в обратном направлении — добавьте к команде ключ -R:

    iperf3 -c <ip_address> -P20 -t60 -i10 -R

    Укажите <ip_address> — публичный IP-адрес выделенного сервера. Можно посмотреть в панели управления: в верхнем меню нажмите ПродуктыВыделенные серверыСерверы → страница сервера → вкладка Операционная система → поле IP.

Проверить состояние сетевых интерфейсов

Проверьте состояние сетевых интерфейсов, если на сервере отсутствует доступ в интернет.

  1. Подключитесь к серверу по SSH или через KVM-консоль.

  2. Проверьте состояние сетевых интерфейсов:

    ip a

    В ответе появится информация о сетевых интерфейсах. Например:

    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
    valid_lft forever preferred_lft forever

    2: enp0s1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 1c:1b:0d:12:34:56 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.100/24 brd 192.168.1.255 scope global dynamic enp0s1
    valid_lft 604675sec preferred_lft 604675sec
    inet6 fe80::1234:abcd:5678:9ef0/64 scope link
    valid_lft forever preferred_lft forever

    3: enp0s2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 1c:1b:0d:65:43:21 brd ff:ff:ff:ff:ff:ff
    inet 203.0.113.10/24 brd 203.0.113.255 scope global dynamic enp0s2
    valid_lft 604675sec preferred_lft 604675sec
    inet6 fe80::abcd:1234:5678:9ef0/64 scope link
    valid_lft forever preferred_lft forever

    Здесь:

    • enp0s1 — имя сетевого интерфейса на локальном порте;
    • enp0s2 — имя сетевого интерфейса на интернет-порте;
    • UP — статус сетевого интерфейса.
  3. Если сетевой интерфейс в статусе DOWN, включите его. Подробнее в инструкции IP Command Set документации iproute2 — это пакет утилит, в который входит утилита ip.

    ip link set dev <eth_name> up

    Укажите <eth_name> — имя сетевого интерфейса, которое вы получили на шаге 2.

Проверить настройки маршрутизации

Проверьте настройки маршрутизации, если:

  • на сервере отсутствует доступ в интернет;
  • сервер недоступен по сети;
  • сервер недоступен из определенной внешней сети.
  1. Подключитесь к серверу по SSH или через KVM-консоль.

  2. Проверьте настройки маршрутизации:

    ip r

    В ответе появится таблица маршрутов. Например:

    default via 203.0.113.1 dev enp0s2 proto dhcp metric 100
    203.0.113.0/24 dev enp0s2 proto kernel scope link src 203.0.113.10 metric 100
    192.168.1.0/24 dev enp0s1 proto kernel scope link src 192.168.1.100 metric 100

    Здесь:

    • default via 203.0.113.1 dev enp0s2 — маршрут по умолчанию, трафик в интернет идет через шлюз 203.0.113.1 по интерфейсу enp0s2;

    • 203.0.113.0/24 dev enp0s2 — маршрут в публичную подсеть 203.0.113.0/24, трафик в эту подсеть идет по интерфейсу enp0s2;

    • 192.168.1.0/24 dev enp0s1 — маршрут в приватную подсеть 192.168.1.0/24, трафик в эту подсеть идет по интерфейсу enp0s1.

Собрать дамп сетевого трафика

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

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

  1. Подключитесь к серверу по SSH или через KVM-консоль.

  2. Установите tcpdump — это утилита для захвата и анализа сетевого трафика. Подробнее в документации tcpdump.

    apt update
    apt install -y tcpdump
  3. Посмотрите имя сетевого интерфейса, для которого нужно записать дамп, для этого выведите список сетевых интерфейсов:

    ip a

    В ответе появится информация о сетевых интерфейсах. Например:

    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
    valid_lft forever preferred_lft forever

    2: enp0s1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 1c:1b:0d:12:34:56 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.100/24 brd 192.168.1.255 scope global dynamic enp0s31f6
    valid_lft 604675sec preferred_lft 604675sec
    inet6 fe80::1234:abcd:5678:9ef0/64 scope link
    valid_lft forever preferred_lft forever

    3: enp0s2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 1c:1b:0d:65:43:21 brd ff:ff:ff:ff:ff:ff
    inet 203.0.113.10/24 brd 203.0.113.255 scope global dynamic enp0s2
    valid_lft 604675sec preferred_lft 604675sec
    inet6 fe80::abcd:1234:5678:9ef0/64 scope link
    valid_lft forever preferred_lft forever

    Здесь enp0s2 — имя сетевого интерфейса на интернет-порте.

  4. Запустите tcpdump:

    sudo tcpdump -i <eth_name> -w <file_name>

    Укажите:

    • <eth_name> — имя сетевого интерфейса, которое вы получили на шаге 3;
    • <file_name> — имя файла, в который нужно записать захват сетевого трафика, например dump.pcap.
  5. Дождитесь, когда будет собран нужный объем данных.

  6. Остановите запись, для этого нажмите Ctrl + C.

Перезапустить сетевые службы

Перезапустите сетевые службы, если на сервере:

  • отсутствует доступ в интернет;
  • или сервер недоступен из определенной внешней сети.
  1. Подключитесь к серверу по SSH или через KVM-консоль.

  2. Перезапустите сетевые службы:

    systemctl restart networking

Проверить правила фильтрации

Если сервер недоступен по сети, проверьте в ОС сервера правила фильтрации файрвола.

  1. Подключитесь к серверу по SSH или через KVM-консоль.

  2. Посмотрите список правил файрвола:

    iptables -L -n -v

    В ответе появится список правил. Например:

    Chain INPUT (policy DROP 1234 packets, 98765 bytes)
    pkts bytes target prot opt in out source destination
    2045 187K ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0
    1087 159K ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,ESTABLISHED
    120 8400 ACCEPT tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
    0 0 DROP all -- * * 192.168.1.100 0.0.0.0/0

    Chain FORWARD (policy DROP 0 packets, 0 bytes)
    pkts bytes target prot opt in out source destination

    Chain OUTPUT (policy ACCEPT 3456 packets, 456789 bytes)
    pkts bytes target prot opt in out source destination

    Здесь:

    • Chain — список правил для пакетов определенного направления:

      • INPUT — для входящих пакетов;
      • FORWARD — для перенаправляемых пакетов;
      • OUTPUT — для исходящих пакетов;
    • policy — действие правила, например ACCEPT или DROP.

Просканировать порты

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

  1. Подключитесь к серверу по SSH или через KVM-консоль.

  2. Установите nmap, подробнее в статье Linux Distributions документации nmap.

  3. Просканируйте порты:

    nmap -p <port> <ip_address>

    Укажите:

    • опционально: <port> — порты через запятую, например 22,80,443, или диапазон портов, например 20-30;
    • <ip_address> — IP-адрес выделенного сервера. IP-адрес выделенного сервера можно посмотреть в панели управления в разделе Серверы и оборудованиеСерверы → карточка сервера → поле IP-адрес.

Проверить доступность узла в сети и измерить задержку

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

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

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

  1. Откройте CLI на сервере, с которого будете выполнять проверку.
  2. Выполните проверку:
ping <ip_address>

Укажите <ip_address> — IP-адрес или доменное имя сервера. IP-адрес выделенного сервера можно посмотреть в панели управления: в верхнем меню нажмите ПродуктыВыделенные серверыСерверы → страница сервера → вкладка Операционная система → поле IP;

  • или доменного имени:

    ping <domain>

    Укажите <domain> — доменное имя хоста.

Проверить доступ из ОС в режиме восстановления и диагностики

Чтобы настройки ОС не влияли на работу сервера и диагностику:

  1. Загрузите сервер в режиме восстановления и диагностики.

  2. Подключитесь к серверу по SSH или через KVM-консоль:

    • если сервер отвечает и возможность подключиться есть — проблема в ПО на сервере. Перезагрузите сервер, чтобы перезапустить сетевые службы. Если проблема программная, при возвращении к прежнему шаблону загрузки ОС она будет устранена;
    • если сервер в режиме восстановления и диагностики недоступен, создайте тикет с описанием проблемы.