Назад | Перейти на главную страницу

Попытка определить использование / скачок пропускной способности на Linux Debian VM

Я пытаюсь определить проблему с виртуальной машиной Linux (Debian), работающей под Hyper-V на Windows Server 2016.

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

Я попытался ограничить пропускную способность виртуальной машины в части «Управление пропускной способностью» сервера Hyper-V, но это не дало результата.

Я также пробовал использовать Wondershaper (https://github.com/magnific0/wondershaper), который, хотя, кажется, ограничивает «некоторый» трафик, я все еще вижу огромные всплески, поэтому он не может уловить то, что вызывает это.

Я также пробовал использовать ethtool для изменения скорости интерфейса, но проблема не устранена.

На данном этапе я не могу понять, что вызывает это и как это предотвратить.

Может ли кто-нибудь предложить что-нибудь еще, что я могу попытаться определить, что может быть причиной этого?

Спасибо.

ОБНОВЛЕНИЕ: я установил netatop на виртуальную машину и обнаружил возникшую проблему (ниже), но опять же, он не показывает, что происходит и где используется пропускная способность (если я что-то не упускаю). Вы можете видеть проблему, но как она может пройти через установленную мной скорость сетевого интерфейса 300 Мбит / с? Запись 965 Мбит / с, как такое может быть?

ОБНОВИТЬ :

Это трафик, замеченный в захвате tcpdump, когда возникла проблема, так что определенно злонамеренная атака, были тысячи этих записей, с разных IP-адресов, но все против одного и того же домена website.com и все с примерно одинаковой полезной нагрузкой .

0.000013 31.xxx.xxx.xxx 185.xxx.xxx.xxx DNS 1034 Standard query response 0x9764 ANY website.com RRSIG RRSIG RRSIG NSEC3PARAM website.com DNSKEY DNSKEY DNSKEY RRSIG RRSIG RRSIG RRSIG AAAA 2600:1f18:46d5:xxxx:xxxx:xxxx:91c8:a5b DNSKEY RRSIG RRSIG RRSIG RRSIG RRSIG SOA ns0.website.com TXT TXT TXT TXT TXT TXT TXT

Правильно ли я предполагаю, что синяя линия представляет входящий трафик (загруженный на виртуальную машину извне), а фиолетовая линия представляет исходящий (загруженный с виртуальной машины извне)? Если да, то функции качества обслуживания Windows (QoS), лежащие в основе управления пропускной способностью Hyper-V. не будет работать, чтобы уменьшить входящие пики:

Примечание: QoS можно использовать для управления исходящим трафиком, но не входящим. Например, с Hyper-V Replica вы можете использовать QoS для управления исходящим трафиком (с основного сервера), но не входящим трафиком (с сервера Replica).

Также см. Это Обсуждение в TechNet, что усиливает актуальность для Hyper-V:

Я могу подтвердить, что [максимальная пропускная способность Hyper-V] применяется только для исходящего трафика виртуальных машин. Но в документации этот факт не упоминается. Это ошибка или особенность?

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

  1. Загрузите последнюю версию netatop-x.x.tar.gz
  2. Установите пакеты zlib1g-dev, строительный, и Linux-заголовки-amd64 (при условии 64-битной архитектуры)
  3. Соберите и установите модуль и демон. Из верхнего каталога извлеченного архива выполните следующие команды:

    make
    sudo make install
    
  4. Чтобы загрузить модуль и запустить демон:

    systemctl start netatop
    
  5. Чтобы загрузить модуль и запустить демон автоматически после загрузки:

    systemctl enable netatop
    

Бегать sudo atop -n на виртуальной машине и дождитесь всплеска сети. Вы, вероятно, сможете обнаружить проблемную службу по ее высоким значениям BANDWI и NET, например sshd в этом примере:

Кстати, я предполагаю, что ваш сетевой график специально измеряет сетевой адаптер виртуальной машины. Если нет - например, если он измеряет физический адаптер на сервере Hyper-V - то это может быть процесс Windows, который вызывает всплески. Подход к решению этой проблемы будет аналогичным, и вы начнете с поиска аналога поверх Windows.

ОБНОВИТЬ:

На снимке экрана указано, что количество IP-пакетов уровня 3 за этот период времени (ipi = 866802) значительно превышает общее количество пакетов ICMP (icmpi = 199) плюс пакеты TCP / UDP уровня 4 (tcpi= 4316, удпи= 47). Это, а также отсутствие участия любого запущенного процесса, наводит на мысль, что виртуальная машина наводнена искаженным (вредоносным?) Трафиком из внешнего источника.

Вы хотите подать заявку предложение Давидго использовать tcpdump. Один из способов его использования - запустить цикл bash, чтобы дождаться, пока количество входящих пакетов в секунду не превысит пороговое значение:

#!/bin/bash
threshold=10000   # packets/sec; note that atop(1) reports packets per 10sec by default
waiting=1
while [[ $waiting -eq 1 ]]
do
    atopsar -w 10 1 | tail -n1 | awk "\$2 < $threshold {exit 1}"
    waiting=$?
done
tcpdump -ieth0 -w out.pcap

После возникновения проблемы можно скопировать получившийся out.pcap файл на другой компьютер, а затем откройте его с помощью Wireshark. Оттуда примените Статистика -> Конечные точки чтобы увидеть, откуда исходит лишний трафик. Если устройство в вашей локальной сети - возможно, даже сервер Hyper-V - генерирует трафик, вы можете перенастроить его, чтобы остановить. Если один IP-адрес в Интернете генерирует трафик, вы можете найти способ занести его в черный список с помощью брандмауэра. Если IP-адресов много, возможно, вам потребуется прочитать о распределенных атаках типа «отказ в обслуживании» (DDoS) и о том, как использовать брандмауэр и / или интернет-провайдера для блокировки трафика. Многие статьи о DDoS доступны в Интернете, например это с Amazon.