---
title: 'Диагностика сети для выделенного сервера'
sidebar_label: 'Диагностика сети для выделенного сервера'
description: 'Какими методами можно провести диагностику частых проблем с сетью'
sidebar_position: 4
toc_max_heading_level: 2
---

import Tabs from '@theme/Tabs'
import TabItem from '@theme/TabItem'
import {TabItemLabel} from '@selectel/docux/components'
import {CustomTable} from '@selectel/docux/components'
import Formbricks from '@theme/MDXComponents/Formbricks'

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

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

Если решить проблему не удалось, [создайте тикет](https://my.selectel.ru/tickets/create).
В тикете укажите описание проблемы и приложите результаты диагностики.
[Метод диагностики](#network-problems-and-diagnostic-methods) зависит от проблемы, с которой вы столкнулись.

## Проблемы сети и методы диагностики \{#network-problems-and-diagnostic-methods}

<CustomTable>
  <table>
    <tbody>
      <tr>
        <th>Отсутствует доступ в интернет</th>

        <td>
          * [проверить состояние сетевых интерфейсов](#check-status-of-network-interfaces);
          * [проверить настройки маршрутизации](#check-routing-settings);
          * [перезапустить сетевые службы](#restart-network-services);
          * [проверить доступ из ОС в режиме восстановления и диагностики](#check-access-in-recovery-mode)
        </td>
      </tr>

      <tr>
        <th>Сервер недоступен по сети</th>

        <td>
          * [просканировать порты](#scans-of-ports);
          * [проверить правила фильтрации](#check-filter-rules);
          * [проверить настройки маршрутизации](#check-routing-settings);
          * [проверить доступность узла в сети и измерить задержку](#ping-to-measure-latency);
          * [проверить доступ из ОС в режиме восстановления и диагностики](#check-access-in-recovery-mode)
        </td>
      </tr>

      <tr>
        <th>Сервер недоступен из определенной внешней сети</th>

        <td>
          * [выполнить трассировку маршрута](#tracing);
          * [проверить настройки маршрутизации](#check-routing-settings);
          * [перезапустить сетевые службы](#restart-network-services);
          * [просканировать порты](#scans-of-ports);
          * [собрать дамп сетевого трафика](#capture-network-traffic)
        </td>
      </tr>

      <tr>
        <th>Сервер недоступен по протоколам SSH, HTTP/HTTPS, VPN, RDP, при этом сервер отвечает на ICMP-запросы и проверки через утилиты `mtr`, `telnet` выполняются успешно</th>

        <td>
          * выполнить [диагностику влияния ТСПУ](/dedicated/troubleshooting/tspu.mdx)
        </td>
      </tr>

      <tr>
        <th>Кратковременная потеря соединения</th>

        <td>
          * [выполнить трассировку маршрута](#tracing);
          * [собрать дамп сетевого трафика](#capture-network-traffic);
          * [проверить доступ из ОС в режиме восстановления и диагностики](#check-access-in-recovery-mode)
        </td>
      </tr>

      <tr>
        <th>Низкая скорость</th>

        <td>
          * [выполнить трассировку маршрута](#tracing);
          * [измерить скорость передачи данных](#change-connection-speed)
        </td>
      </tr>

      <tr>
        <th>Высокая сетевая задержка</th>

        <td>
          * [проверить доступность узла в сети и измерить задержку](#ping-to-measure-latency);
          * [выполнить трассировку маршрута](#tracing);
          * [проверить доступ из ОС в режиме восстановления и диагностики](#check-access-in-recovery-mode)
        </td>
      </tr>

      <tr>
        <th>Потеря пакетов</th>
        <td>[Выполнить трассировку маршрута](#tracing)</td>
      </tr>
    </tbody>
  </table>
</CustomTable>

## Выполнить трассировку маршрута \{#tracing}

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

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

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

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

1. [Выполните трассировку от выделенного сервера до внешнего сервера](#trace-to-remote-server).
2. [Выполните трассировку от внешнего сервера к выделенному серверу](#trace-to-dedicated-server).

### 1. Выполнить трассировку от выделенного сервера до внешнего сервера \{#trace-to-remote-server}

<Tabs queryString="tracing">
  <TabItem value="tracing-linux" default>
    <TabItemLabel>
      Linux
    </TabItemLabel>

    1. [Подключитесь к серверу по SSH](/dedicated/manage/connect-to-server.mdx#connect-via-ssh) или через [KVM-консоль](/dedicated/manage/connect-to-server.mdx#connect-via-kvm-console).

    2. Установите утилиту `mtr` на выделенный сервер.
       Подробнее на [GitHub mtr](https://github.com/traviscross/mtr).

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

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

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

       ```
       mtr -b <remote_ip_address>
       ```

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

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

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

       ```bash
       q
       ```
  </TabItem>

  <TabItem value="tracing-windows">
    <TabItemLabel>
      Windows
    </TabItemLabel>

    1. [Подключитесь к серверу по RDP](/dedicated/manage/connect-to-server.mdx#connect-via-rdp) или через [KVM-консоль](/dedicated/manage/connect-to-server.mdx#connect-via-kvm-console).

    2. Установите утилиту `WinMTR` на выделенный сервер.
       Подробнее на сайте [winMTR](https://winmtr.net/).

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

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

    4. Запустите `WinMTR`.

    5. В поле **Host** введите IP-адрес внешнего сервера.

    6. Нажмите **Start**.

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

    8. Остановите трассировку, для этого нажмите **Stop**.
  </TabItem>

  <TabItem value="tracing-macos" default>
    <TabItemLabel>
      macOS
    </TabItemLabel>

    1. [Подключитесь к серверу по VNC](/dedicated/manage/connect-to-server.mdx#connect-via-vnc) или через [KVM-консоль](/dedicated/manage/connect-to-server.mdx#connect-via-kvm-console).

    2. Установите утилиту `mtr` на выделенный сервер.
       Подробнее на [GitHub mtr](https://github.com/traviscross/mtr).

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

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

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

       ```
       mtr -b <remote_ip_address>
       ```

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

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

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

       ```bash
       q
       ```
  </TabItem>
</Tabs>

### 2. Выполнить трассировку от внешнего сервера к выделенному серверу \{#trace-to-dedicated-server}

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

   * для Linux — `mtr`, подробнее на [GitHub mtr](https://github.com/traviscross/mtr?tab=readme-ov-file#installing);
   * для Windows — `WinMTR`.

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

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

3. Выполните трассировку до адреса выделенного сервера.
   IP-адрес выделенного сервера можно посмотреть в [панели управления](https://my.selectel.ru/servers): в верхнем меню нажмите **Продукты** → **Выделенные серверы** → **Серверы** → страница сервера → вкладка **Операционная система** → поле **IP**.

## Измерить скорость передачи данных \{#change-connection-speed}

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

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

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

1. [Подготовьте выделенный сервер к замеру скорости](#prepare-dedicated-server-for-speed-measurement).
2. [Измерьте скорость передачи данных](#change-connection-speed).

### 1. Подготовить выделенный сервер к замеру скорости \{#prepare-dedicated-server-for-speed-measurement}

1. [Загрузите сервер в режиме восстановления и диагностики](/dedicated/troubleshooting/boot-to-recovery.mdx), чтобы исключить влияние процессов ОС на результаты диагностики.

2. [Подключитесь к серверу по SSH](/dedicated/manage/connect-to-server.mdx#connect-via-ssh) или через [KVM-консоль](/dedicated/manage/connect-to-server.mdx#connect-via-kvm-console).

3. Установите утилиту `iperf3` на выделенный сервер, подробнее в документации [iPerf](https://iperf.fr/iperf-download.php).

4. Запустите утилиту `iperf3`.
   Утилита должна работать до завершения [измерения скорости передачи данных](#change-connection-speed).

   ```
   iperf3 -s
   ```

### 2. Измерить скорость передачи данных \{#change-connection-speed}

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

2. Установите утилиту `iperf3` на внешний сервер, подробнее в документации [iPerf](https://iperf.fr/iperf-download.php).

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

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

   Укажите `<ip_address>` — публичный IP-адрес выделенного сервера.
   Можно посмотреть в [панели управления](https://my.selectel.ru/servers): в верхнем меню нажмите **Продукты** → **Выделенные серверы** → **Серверы** → страница сервера → вкладка **Операционная система** → поле **IP**.

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

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

   Укажите `<ip_address>` — публичный IP-адрес выделенного сервера.
   Можно посмотреть в [панели управления](https://my.selectel.ru/servers): в верхнем меню нажмите **Продукты** → **Выделенные серверы** → **Серверы** → страница сервера → вкладка **Операционная система** → поле **IP**.

## Проверить состояние сетевых интерфейсов \{#check-status-of-network-interfaces}

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

<Tabs queryString="check-status">
  <TabItem value="check-status-linux" default>
    <TabItemLabel>
      Linux
    </TabItemLabel>

    1. [Подключитесь к серверу по SSH](/dedicated/manage/connect-to-server.mdx#connect-via-ssh) или через [KVM-консоль](/dedicated/manage/connect-to-server.mdx#connect-via-kvm-console).

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

       ```bash
       ip a
       ```

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

       ```bash
       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](http://www.policyrouting.org/iproute2.doc.html) документации iproute2 — это пакет утилит, в который входит утилита `ip`.

       ```bash
       ip link set dev <eth_name> up
       ```

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

  <TabItem value="check-status-windows">
    <TabItemLabel>
      Windows
    </TabItemLabel>

    1. [Подключитесь к серверу по RDP](/dedicated/manage/connect-to-server.mdx#connect-via-rdp) или через [KVM-консоль](/dedicated/manage/connect-to-server.mdx#connect-via-kvm-console).

    2. Запустите Powershell от имени администратора.

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

       ```bash
       Get-NetAdapter
       ```

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

       ```bash
       Name          InterfaceDescription            ifIndex Status       MacAddress             LinkSpeed
       ----          --------------------            ------- ------       ----------             ---------
       Ethernet      Intel(R) Ethernet Connection         12 Up           00-1A-2B-3C-4D-5E       1 Gbps
       ```

       Здесь:

       * `Ethernet` — имя сетевого интерфейса на интернет-порте;
       * `Up` — статус сетевого интерфейса.

    4. Если сетевой интерфейс в статусе `Disabled`, включите его:

       ```bash
       Enable-NetAdapter -Name "<eth_name>" -Confirm:$false
       ```

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

  <TabItem value="check-status-macos">
    <TabItemLabel>
      macOS
    </TabItemLabel>

    1. [Подключитесь к серверу по VNC](/dedicated/manage/connect-to-server.mdx#connect-via-vnc) или через [KVM-консоль](/dedicated/manage/connect-to-server.mdx#connect-via-kvm-console).

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

       ```bash
       ifconfig
       ```

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

       ```bash
       lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
           inet 127.0.0.1 netmask 0xff000000
           inet6 ::1 prefixlen 128 
           inet6 fe80::1%lo0 prefixlen 64 scopeid 0x1 
           nd6 options=201<PERFORMNUD,DAD>
           
       en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
           ether a4:5e:60:12:34:56 
           inet 203.0.113.10 netmask 0xffffff00 broadcast 203.0.113.255
           inet6 fe80::a65e:60ff:fe12:3456%en0 prefixlen 64 secured scopeid 0x4 
           inet6 2001:db8::1234:abcd prefixlen 64 autoconf secured
           nd6 options=201<PERFORMNUD,DAD>
           media: autoselect
           status: active
       ```

       Здесь:

       * `en0` — имя сетевого интерфейса на интернет-порте;
       * `UP` и `active` — статус сетевого интерфейса, интерфейс `en0` поднят и работает.

    3. Если сетевой интерфейс в статусе `inactive`, включите его:

       ```bash
       sudo ifconfig <eth_name> up
       ```

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

## Проверить настройки маршрутизации \{#check-routing-settings}

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

* на сервере отсутствует доступ в интернет;
* сервер недоступен по сети;
* сервер недоступен из определенной внешней сети.

<Tabs queryString="check-routing">
  <TabItem value="check-routing-linux" default>
    <TabItemLabel>
      Linux
    </TabItemLabel>

    1. [Подключитесь к серверу по SSH](/dedicated/manage/connect-to-server.mdx#connect-via-ssh) или через [KVM-консоль](/dedicated/manage/connect-to-server.mdx#connect-via-kvm-console).

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

       ```bash
       ip r
       ```

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

       ```bash
       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`.
  </TabItem>

  <TabItem value="check-routing-windows">
    <TabItemLabel>
      Windows
    </TabItemLabel>

    1. [Подключитесь к серверу по RDP](/dedicated/manage/connect-to-server.mdx#connect-via-rdp) или через [KVM-консоль](/dedicated/manage/connect-to-server.mdx#connect-via-kvm-console).

    2. Запустите Powershell от имени администратора.

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

       ```bash
       Get-NetRoute | Select-Object DestinationPrefix, NextHop, RouteMetric, @{Name="Interface";Expression={(Get-NetIPInterface -InterfaceIndex $_.InterfaceIndex).InterfaceAlias}}
       ```

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

       ```bash
       DestinationPrefix NextHop       RouteMetric Interface
       ----------------- -------       ----------- ---------
       0.0.0.0/0         203.0.113.1   25          Ethernet
       203.0.113.0/24    0.0.0.0       25          Ethernet
       192.168.1.0/24    0.0.0.0       10          Internal
       ```

       Здесь:

       * `0.0.0.0/0` с NextHop `203.0.113.1` — маршрут по умолчанию, трафик в интернет идет через шлюз `203.0.113.1` по интерфейсу `Ethernet`;

       * `203.0.113.0/24` с NextHop `0.0.0.0` — маршрут в публичную подсеть `203.0.113.0/24`, трафик в эту подсеть идет по интерфейсу `Ethernet`;

       * `192.168.1.0/24` с NextHop `0.0.0.0` — маршрут в приватную подсеть `192.168.1.0/24`, трафик в эту подсеть идет по интерфейсу `Internal`.
  </TabItem>

  <TabItem value="check-routing-macos">
    <TabItemLabel>
      macOS
    </TabItemLabel>

    1. [Подключитесь к серверу по VNC](/dedicated/manage/connect-to-server.mdx#connect-via-vnc) или через [KVM-консоль](/dedicated/manage/connect-to-server.mdx#connect-via-kvm-console).

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

       ```bash
       netstat -rn
       ```

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

       ```bash
       Internet:
       Destination        Gateway            Flags        Refs      Use   Netif Expire
       default            203.0.113.1        UGSc           10        0     en0
       127                127.0.0.1          UCS             0        0     lo0
       203.0.113.0/24     link#4             UCS             2        0     en0
       ```

       Здесь:

       * `default 203.0.113.1` — маршрут по умолчанию, трафик в интернет идет через шлюз `203.0.113.1` по интерфейсу `en0`;

       * `203.0.113.0/24 link#4` — маршрут в публичную подсеть `203.0.113.0/24`, трафик в эту подсеть идет по интерфейсу `en0`.
  </TabItem>
</Tabs>

## Собрать дамп сетевого трафика \{#capture-network-traffic}

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

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

<Tabs queryString="capture-network-traffic">
  <TabItem value="capture-network-traffic-linux" default>
    <TabItemLabel>
      Linux
    </TabItemLabel>

    1. [Подключитесь к серверу по SSH](/dedicated/manage/connect-to-server.mdx#connect-via-ssh) или через [KVM-консоль](/dedicated/manage/connect-to-server.mdx#connect-via-kvm-console).

    2. Установите `tcpdump` — это утилита для захвата и анализа сетевого трафика.
       Подробнее в документации [tcpdump](https://www.tcpdump.org/index.html#documentation).

       ```bash
       apt update
       apt install -y tcpdump
       ```

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

       ```bash
       ip a
       ```

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

       ```bash
       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`:

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

       Укажите:

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

    5. Дождитесь, когда будет собран нужный объем данных.

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

  <TabItem value="capture-network-traffic-windows">
    <TabItemLabel>
      Windows
    </TabItemLabel>

    1. [Подключитесь к серверу по RDP](/dedicated/manage/connect-to-server.mdx#connect-via-rdp) или через [KVM-консоль](/dedicated/manage/connect-to-server.mdx#connect-via-kvm-console).

    2. Установите `Wireshark` — это утилита для захвата и анализа сетевого трафика, подробнее в документации [Wireshark](https://www.wireshark.org/download.html).

    3. Запустите `Wireshark` с правами администратора.

    4. Чтобы начать запись захвата сетевого трафика, нажмите на нужный сетевой интерфейс.

    5. Дождитесь, когда будет собран нужный объем данных.

    6. Остановите запись.

    7. Сохраните запись в файл.
  </TabItem>

  <TabItem value="capture-network-traffic-macos">
    <TabItemLabel>
      macOS
    </TabItemLabel>

    1. [Подключитесь к серверу по VNC](/dedicated/manage/connect-to-server.mdx#connect-via-vnc) или через [KVM-консоль](/dedicated/manage/connect-to-server.mdx#connect-via-kvm-console).

    2. Установите `tcpdump` — это утилита для захвата и анализа сетевого трафика.
       Подробнее в документации [tcpdump](https://www.tcpdump.org/index.html#documentation).

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

       ```bash
       networksetup -listnetworkserviceorder
       ```

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

       ```bash
       An asterisk (*) denotes that a network service is disabled.

       (1) Ethernet (Hardware Port: Ethernet, Device: en0)
       ```

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

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

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

       Укажите:

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

    5. Дождитесь, когда будет собран нужный объем данных.

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

## Перезапустить сетевые службы \{#restart-network-services}

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

* отсутствует доступ в интернет;
* или сервер недоступен из определенной внешней сети.

<Tabs queryString="restart-network-services">
  <TabItem value="restart-network-services-linux" default>
    <TabItemLabel>
      Linux
    </TabItemLabel>

    1. [Подключитесь к серверу по SSH](/dedicated/manage/connect-to-server.mdx#connect-via-ssh) или через [KVM-консоль](/dedicated/manage/connect-to-server.mdx#connect-via-kvm-console).

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

       ```bash
       systemctl restart networking
       ```
  </TabItem>

  <TabItem value="restart-network-services-windows">
    <TabItemLabel>
      Windows
    </TabItemLabel>

    1. [Подключитесь к серверу по RDP](/dedicated/manage/connect-to-server.mdx#connect-via-rdp) или через [KVM-консоль](/dedicated/manage/connect-to-server.mdx#connect-via-kvm-console).

    2. Запустите PowerShell от имени администратора.

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

       ```bash
       Get-NetAdapter
       ```

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

       ```bash
       Name          InterfaceDescription            ifIndex Status       MacAddress             LinkSpeed
       ----          --------------------            ------- ------       ----------             ---------
       Ethernet      Intel(R) Ethernet Connection         12 Up           00-1A-2B-3C-4D-5E       1 Gbps
       ```

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

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

       ```bash
       Disable-NetAdapter -Name <eth_name>
       Enable-NetAdapter -Name <eth_name>
       ```

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

  <TabItem value="restart-network-services-macos">
    <TabItemLabel>
      macOS
    </TabItemLabel>

    1. [Подключитесь к серверу по VNC](/dedicated/manage/connect-to-server.mdx#connect-via-vnc) или через [KVM-консоль](/dedicated/manage/connect-to-server.mdx#connect-via-kvm-console).

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

       ```bash
       networksetup -listnetworkserviceorder
       ```

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

       ```bash
       An asterisk (*) denotes that a network service is disabled.

       (1) Ethernet (Hardware Port: Ethernet, Device: en0)
       ```

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

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

       ```bash
       sudo networksetup -setnetworkserviceenabled <eth_name> off
       sudo networksetup -setnetworkserviceenabled <eth_name> on
       ```

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

## Проверить правила фильтрации \{#check-filter-rules}

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

<Tabs queryString="check-filter-rules">
  <TabItem value="check-filter-rules-linux" default>
    <TabItemLabel>
      Linux
    </TabItemLabel>

    1. [Подключитесь к серверу по SSH](/dedicated/manage/connect-to-server.mdx#connect-via-ssh) или через [KVM-консоль](/dedicated/manage/connect-to-server.mdx#connect-via-kvm-console).

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

       ```bash
       iptables -L -n -v
       ```

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

       ```bash
       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`.
  </TabItem>

  <TabItem value="check-filter-rules-windows">
    <TabItemLabel>
      Windows
    </TabItemLabel>

    1. [Подключитесь к серверу по RDP](/dedicated/manage/connect-to-server.mdx#connect-via-rdp) или через [KVM-консоль](/dedicated/manage/connect-to-server.mdx#connect-via-kvm-console).

    2. Запустите PowerShell с правами администратора.

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

       ```bash
       Get-NetFirewallRule | Format-Table Name, Enabled, Action, DisplayName
       ```

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

       ```bash
       DisplayName : File and Printer Sharing (SMB-In)
       Name        : FPS-SMB-In-TCP
       Enabled     : True
       Direction   : Inbound
       Action      : Allow

       DisplayName : Remote Desktop - User Mode (TCP-In)
       Name        : RDP-TCP-In
       Enabled     : True
       Direction   : Inbound
       Action      : Allow

       DisplayName : Core Networking - DNS (UDP-Out)
       Name        : CoreNet-DNS-Out
       Enabled     : True
       Direction   : Outbound
       Action      : Allow

       DisplayName : Windows Remote Management (HTTP-In)
       Name        : WINRM-HTTP-In
       Enabled     : False
       Direction   : Inbound
       Action      : Allow

       DisplayName : Block Internet Access (Test Rule)
       Name        : Block-Internet-Test
       Enabled     : True
       Direction   : Outbound
       Action      : Block
       ```

       Здесь `Action` — действие правила, например `Allow` или `Block`.
       Подробнее в инструкции [Windows firewall](https://learn.microsoft.com/windows/security/operating-system-security/network-security/windows-firewall/configure-with-command-line) документации Microsoft.
  </TabItem>

  <TabItem value="check-filter-rules-macos">
    <TabItemLabel>
      macOS
    </TabItemLabel>

    1. [Подключитесь к серверу по VNC](/dedicated/manage/connect-to-server.mdx#connect-via-vnc) или через [KVM-консоль](/dedicated/manage/connect-to-server.mdx#connect-via-kvm-console).

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

       ```bash
       sudo pfctl -sr
       ```

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

       ```bash
       scrub in all fragment reassemble 
       block return all 
       pass out proto tcp from any to any port = ssh flags S/SA keep state 
       pass out proto tcp from any to any port = http flags S/SA keep state 
       pass out proto tcp from any to any port = https flags S/SA keep state 
       pass out proto udp from any to any port = domain keep state 
       pass out proto udp from any to any port = ntp keep state 
       pass out inet proto icmp all keep state 
       pass in proto tcp from any to any port = ssh flags S/SA keep state 
       pass in proto tcp from any to any port = http flags S/SA keep state 
       pass in proto tcp from any to any port = https flags S/SA keep state 
       ```

       Здесь `block` и `pass` — действие правила, подробнее в инструкции [Packet filtering](https://openbsd-ru.github.io/faq/pf/filter.html) документации OpenBSD.
  </TabItem>
</Tabs>

## Просканировать порты \{#scans-of-ports}

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

<Tabs queryString="scans-of-ports">
  <TabItem value="scans-of-ports-linux" default>
    <TabItemLabel>
      Linux
    </TabItemLabel>

    1. [Подключитесь к серверу по SSH](/dedicated/manage/connect-to-server.mdx#connect-via-ssh) или через [KVM-консоль](/dedicated/manage/connect-to-server.mdx#connect-via-kvm-console).

    2. Установите `nmap`, подробнее в статье [Linux Distributions](https://nmap.org/book/inst-linux.html) документации nmap.

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

       ```bash
       nmap -p <port> <ip_address>
       ```

       Укажите:

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

  <TabItem value="scans-of-ports-windows">
    <TabItemLabel>
      Windows
    </TabItemLabel>

    1. [Подключитесь к серверу по RDP](/dedicated/manage/connect-to-server.mdx#connect-via-rdp) или через [KVM-консоль](/dedicated/manage/connect-to-server.mdx#connect-via-kvm-console).

    2. Установите `nmap`, подробнее в статье [Windows](https://nmap.org/book/inst-windows.html) документации nmap.

    3. Запустите PowerShell от имени администратора.

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

       ```bash
       nmap -p <port> <ip_address>
       ```

       Укажите:

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

  <TabItem value="scans-of-ports-macos">
    <TabItemLabel>
      macOS
    </TabItemLabel>

    1. [Подключитесь к серверу по VNC](/dedicated/manage/connect-to-server.mdx#connect-via-vnc) или через [KVM-консоль](/dedicated/manage/connect-to-server.mdx#connect-via-kvm-console).

    2. Установите `nmap`, подробнее в статье [Apple Mac OS X](https://nmap.org/book/inst-macosx.html) документации nmap.

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

       ```bash
       nmap -p <port> <ip_address>
       ```

       Укажите:

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

## Проверить доступность узла в сети и измерить задержку \{#ping-to-measure-latency}

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

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

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

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

   ```bash
   ping <ip_address>
   ```

   Укажите `<ip_address>` — IP-адрес или доменное имя сервера.
   IP-адрес выделенного сервера можно посмотреть в [панели управления](https://my.selectel.ru/servers): в верхнем меню нажмите **Продукты** → **Выделенные серверы** → **Серверы** → страница сервера → вкладка **Операционная система** → поле **IP**.

## Проверить доступ из ОС в режиме восстановления и диагностики \{#check-access-in-recovery-mode}

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

1. [Загрузите сервер в режиме восстановления и диагностики](/dedicated/troubleshooting/boot-to-recovery.mdx).

2. [Подключитесь к серверу по SSH](/dedicated/manage/connect-to-server.mdx#connect-via-ssh) или через [KVM-консоль](/dedicated/manage/connect-to-server.mdx#connect-via-kvm-console):

   * если сервер отвечает и возможность подключиться есть — проблема в ПО на сервере.
     [Перезагрузите сервер](/dedicated/manage/manage-server-power.mdx#reboot-server), чтобы перезапустить сетевые службы.
     Если проблема программная, при возвращении к прежнему шаблону загрузки ОС она будет устранена;
   * если сервер в режиме восстановления и диагностики недоступен, [создайте тикет](https://my.selectel.ru/tickets/create/) с описанием проблемы.

<Formbricks />
