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

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

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

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

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

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

Отсутствует доступ в интернет
Сервер недоступен по сети
Сервер недоступен из определенной внешней сети
Сервер недоступен по протоколам SSH, HTTP/HTTPS, VPN, RDP, при этом сервер отвечает на ICMP-запросы и проверки через утилиты mtr, telnet выполняются успешно
Кратковременная потеря соединения
Низкая скорость
Высокая сетевая задержка
Потеря пакетовВыполнить трассировку маршрута

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

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

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

Трассировку нужно провести в двух направлениях — от выделенного сервера к точке вне инфраструктуры 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.

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

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

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

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

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