Диагностика сети для выделенного сервера
Если вы столкнулись с проблемами сети, выполните диагностику. После диагностики некоторые частые проблемы вы сможете решить самостоятельно.
Если решить проблему не удалось, создайте тикет. В тикете укажите описание проблемы и приложите результаты диагностики. Метод диагностики зависит от проблемы, с которой вы столкнулись.
Проблемы сети и методы диагностики
Выполнить трассировку маршрута
Выполните трассировку маршрута, если вы столкнулись:
- с низкой скоростью соединения;
- высокой сетевой задержкой;
- потерями соединения;
- потерями пакетов при передаче данных;
- недоступностью сервера из определенной внешней сети.
Трассировку нужно провести в двух направлениях — от выделенного сервера к точке вне инфраструктуры Servercore и обратно. Для этого вам понадобится внешний сервер — любой сервер с публичным IP-адресом и доступом в интернет, который находится вне инфраструктуры Servercore.
Мы рекомендуем выполнять трассировку с помощью утилиты mtr (WinMTR для Windows).
Утилита позволяет отследить полный путь и время прохождения трафика и выяснить, на каком этапе маршрута происходят задержки или потеря пакетов.
- Выполните трассировку от выделенного сервера до внешнего сервера.
- Выполните трассировку от внешнего сервера к выделенному серверу.
1. Выполнить трассировку от выделенного сервера до внешнего сервера
Linux
Windows
macOS
-
Подключитесь к серверу по SSH или через KVM-консоль.
-
Установите утилиту
mtrна выделенный сервер. Подробнее на GitHub mtr. -
Опционально: подготовьте выделенный сервер к трассировке — выключите утилиты и приложения, которые могут повлиять на результат трассировки:
- правила файрвола в ОС;
- приложения прикладного уровня (L7, application layer) — веб-серверы, почтовые серверы, файловые-серверы, серверы имен, клиентов и серверов пиринговых сетей и т. д.
-
Выполните трассировку до адреса внешнего сервера:
mtr -b <remote_ip_address>Укажите
<remote_ip_address>— IP-адрес внешнего сервера. -
Дождитесь, когда утилита выполнит трассировку и выведет информацию о маршруте и задержках.
-
Остановите трассировку:
q
2. Выполнить трассировку от внешнего сервера к выделенному серверу
-
На внешний сервер установите утилиту в зависимости от используемой ОС:
- для Linux —
mtr, подробнее на GitHub mtr; - для Windows —
WinMTR.
- для Linux —
-
Опционально: подготовьте внешний сервер к трассировке — выключите утилиты и приложения, которые могут повлиять на результат трассировки:
- правила файрвола в ОС;
- приложения прикладного уровня (L7, application layer) — веб-серверы, почтовые серверы, файловые-серверы, серверы имен, клиентов и серверов пиринговых сетей и т. д.
-
Выполните трассировку до адреса выделенного сервера. IP-адрес выделенного сервера можно посмотреть в панели управления: в верхнем меню нажмите Продукты → Выделенные серверы → Серверы → страница сервера → вкладка Операционная система → поле IP.
Измерить скорость передачи данных
Если у вас возникли проблемы с низкой скоростью передачи данных, измерьте скорость подключения.
Измерить скорость передачи данных в двух направлениях — от выделенного сервера к точке вне инфраструктуры Servercore и обратно. Для этого вам понадобится внешний сервер — любой сервер с публичным IP-адресом и доступом в интернет, который находится вне инфраструктуры Servercore.
Для измерения скорости мы рекомендуем использовать утилиту iperf3.
1. Подготовить выделенный сервер к замеру скорости
-
Загрузите сервер в режиме восстановления и диагностики, чтобы исключить влияние процессов ОС на результаты диагностики.
-
Подключитесь к серверу по SSH или через KVM-консоль.
-
Установите утилиту
iperf3на выделенный сервер, подробнее в документации iPerf. -
Запустите утилиту
iperf3. Утилита должна работать до завершения измерения скорости передачи данных.iperf3 -s
2. Измерить скорость передачи данных
-
На внешнем сервере откройте CLI.
-
Установите утилиту
iperf3на внешний сервер, подробнее в документации iPerf. -
Измерьте скорость от внешнего сервера к выделенному серверу. Команда выполнит замер в 20 потоков, чтобы максимально нагрузить канал связи.
iperf3 -c <ip_address> -P20 -t60 -i10Укажите
<ip_address>— публичный IP-адрес выделенного сервера. Можно посмотреть в панели управления: в верхнем меню нажмите Продукты → Выделенные серверы → Серверы → страница сервера → вкладка Операционная система → поле IP. -
Выполните замер в обратном направлении — добавьте к команде ключ
-R:iperf3 -c <ip_address> -P20 -t60 -i10 -RУкажите
<ip_address>— публичный IP-адрес выделенного сервера. Можно посмотреть в панели управления: в верхнем меню нажмите Продукты → Выделенные серверы → Серверы → страница сервера → вкладка Операционная система → поле IP.
Проверить состояние сетевых интерфейсов
Проверьте состояние сетевых интерфейсов, если на сервере отсутствует доступ в интернет.
Linux
Windows
macOS
-
Подключитесь к серверу по SSH или через KVM-консоль.
-
Проверьте состояние сетевых интерфейсов:
ip aВ ответе появится информация о сетевых интерфейсах. Например:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group defaultlink/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope hostvalid_lft forever preferred_lft forever2: enp0s1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000link/ether 1c:1b:0d:12:34:56 brd ff:ff:ff:ff:ff:ffinet 192.168.1.100/24 brd 192.168.1.255 scope global dynamic enp0s1valid_lft 604675sec preferred_lft 604675secinet6 fe80::1234:abcd:5678:9ef0/64 scope linkvalid_lft forever preferred_lft forever3: enp0s2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000link/ether 1c:1b:0d:65:43:21 brd ff:ff:ff:ff:ff:ffinet 203.0.113.10/24 brd 203.0.113.255 scope global dynamic enp0s2valid_lft 604675sec preferred_lft 604675secinet6 fe80::abcd:1234:5678:9ef0/64 scope linkvalid_lft forever preferred_lft foreverЗдесь:
enp0s1— имя сетевого интерфейса на локальном порте;enp0s2— имя сетевого интерфейса на интернет-порте;UP— статус сетевого интерфейса.
-
Если сетевой интерфейс в статусе
DOWN, включите его. Подробнее в инструкции IP Command Set документации iproute2 — это пакет утилит, в который входит утилитаip.ip link set dev <eth_name> upУкажите
<eth_name>— имя сетевого интерфейса, которое вы получили на шаге 2.
Проверить настройки маршрутизации
Проверьте настройки маршрутизации, если:
- на сервере отсутствует доступ в интернет;
- сервер недоступен по сети;
- сервер недоступен из определенной внешней сети.
Linux
Windows
macOS
-
Подключитесь к серверу по SSH или через KVM-консоль.
-
Проверьте настройки маршрутизации:
ip rВ ответе появится таблица маршрутов. Например:
default via 203.0.113.1 dev enp0s2 proto dhcp metric 100203.0.113.0/24 dev enp0s2 proto kernel scope link src 203.0.113.10 metric 100192.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.
-
Собрать дамп сетевого трафика
Если сервер недоступен из определенной внешней сети или вы наблюдаете кратковременные потери соединения, соберите дамп сетевого трафика.
Дамп сетевого трафика — это процесс записи и сохранения сетевого трафика, который проходит через сеть или устройство. Дамп содержит информацию о сетевых протоколах, передаваемых пакетах, их содержимом, источниках и получателях данных.
Linux
Windows
macOS
-
Подключитесь к серверу по SSH или через KVM-консоль.
-
Установите
tcpdump— это утилита для захвата и анализа сетевого трафика. Подробнее в документации tcpdump.apt updateapt install -y tcpdump -
Посмотрите имя сетевого интерфейса, для которого нужно записать дамп, для этого выведите список сетевых интерфейсов:
ip aВ ответе появится информация о сетевых интерфейсах. Например:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group defaultlink/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope hostvalid_lft forever preferred_lft forever2: enp0s1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000link/ether 1c:1b:0d:12:34:56 brd ff:ff:ff:ff:ff:ffinet 192.168.1.100/24 brd 192.168.1.255 scope global dynamic enp0s31f6valid_lft 604675sec preferred_lft 604675secinet6 fe80::1234:abcd:5678:9ef0/64 scope linkvalid_lft forever preferred_lft forever3: enp0s2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000link/ether 1c:1b:0d:65:43:21 brd ff:ff:ff:ff:ff:ffinet 203.0.113.10/24 brd 203.0.113.255 scope global dynamic enp0s2valid_lft 604675sec preferred_lft 604675secinet6 fe80::abcd:1234:5678:9ef0/64 scope linkvalid_lft forever preferred_lft foreverЗдесь
enp0s2— имя сетевого интерфейса на интернет-порте. -
Запустите
tcpdump:sudo tcpdump -i <eth_name> -w <file_name>Укажите:
<eth_name>— имя сетевого интерфейса, которое вы получили на шаге 3;<file_name>— имя файла, в который нужно записать захват сетевого трафика, напримерdump.pcap.
-
Дождитесь, когда будет собран нужный объем данных.
-
Остановите запись, для этого нажмите Ctrl + C.
Перезапустить сетевые службы
Перезапустите сетевые службы, если на сервере:
- отсутствует доступ в интернет;
- или сервер недоступен из определенной внешней сети.
Linux
Windows
macOS
-
Подключитесь к серверу по SSH или через KVM-консоль.
-
Перезапустите сетевые службы:
systemctl restart networking
Проверить правила фильтрации
Если сервер недоступен по сети, проверьте в ОС сервера правила фильтрации файрвола.
Linux
Windows
macOS
-
Подключитесь к серверу по SSH или через KVM-консоль.
-
Посмотрите список правил файрвола:
iptables -L -n -vВ ответе появится список правил. Например:
Chain INPUT (policy DROP 1234 packets, 98765 bytes)pkts bytes target prot opt in out source destination2045 187K ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/01087 159K ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,ESTABLISHED120 8400 ACCEPT tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:220 0 DROP all -- * * 192.168.1.100 0.0.0.0/0Chain FORWARD (policy DROP 0 packets, 0 bytes)pkts bytes target prot opt in out source destinationChain OUTPUT (policy ACCEPT 3456 packets, 456789 bytes)pkts bytes target prot opt in out source destinationЗдесь:
-
Chain— список правил для пакетов определенного направления:INPUT— для входящих пакетов;FORWARD— для перенаправляемых пакетов;OUTPUT— для исходящих пакетов;
-
policy— действие правила, напримерACCEPTилиDROP.
-
Просканировать порты
Если сервер недоступен по сети или недоступен из определенной внешней сети, просканируйте порты.
Порты можно просканировать с помощью утилиты nmap.
Linux
Windows
macOS
-
Подключитесь к серверу по SSH или через KVM-консоль.
-
Установите
nmap, подробнее в статье Linux Distributions документации nmap. -
Просканируйте порты:
nmap -p <port> <ip_address>Укажите:
- опционально:
<port>— порты через запятую, например22,80,443, или диапазон портов, например20-30; <ip_address>— IP-адрес выделенного сервера. IP-адрес выделенного сервера можно посмотреть в панели управления в разделе Серверы и оборудование → Серверы → карточка сервера → поле IP-адрес.
- опционально:
Проверить доступность узла в сети и измерить задержку
Если сервер недоступен по сети, наблюдается высокая сетевая задержка или потеря пакетов, проверьте доступность сервера и измерьте задержку с помощью утилиты ping.
Утилита ping входит в стандартный набор сетевых инструментов и предустановлена в большинстве ОС.
Выполнить проверку можно до публичного или приватного IP-адреса сервера, либо до доменного имени, которое привязано к IP-адресу сервера.
Для проверки понадобится второй сервер, с которого вы будете выполнять проверку. Если проверка будет до приватного IP-адреса, серверы должны быть связаны по приватной сети.
-
Откройте CLI на сервере, с которого будете выполнять проверку.
-
Выполните проверку:
ping <ip_address>Укажите
<ip_address>— IP-адрес или доменное имя сервера. IP-адрес выделенного сервера можно посмотреть в панели управления: в верхнем меню нажмите Продукты → Выделенные серверы → Серверы → страница сервера → вкладка Операционная система → поле IP.
Проверить доступ из ОС в режиме восстановления и диагностики
Чтобы настройки ОС не влияли на работу сервера и диагностику:
-
Подключитесь к серверу по SSH или через KVM-консоль:
- если сервер отвечает и возможность подключиться есть — проблема в ПО на сервере. Перезагрузите сервер, чтобы перезапустить сетевые службы. Если проблема программная, при возвращении к прежнему шаблону загрузки ОС она будет устранена;
- если сервер в режиме восстановления и диагностики недоступен, создайте тикет с описанием проблемы.