Подробный гайд: Низкая скорость скачивания в Linux

Гайд по устранению низкой скорости загрузки в Linux: диагностика сети, настройка DNS, оптимизация TCP, драйверы Wi-Fi, мониторинг трафика.

2026.05.14                  


Подробный гайд: Низкая скорость скачивания в LinuxПодробный гайд: Низкая скорость скачивания в Linux Ниже представлен структурированный troubleshooting-гайд, который поможет выявить и устранить причины низкой скорости загрузки в Linux. Руководство разделено на этапы: от базовой диагностики до тонкой настройки сетевого стека.


1. Первичная диагностика

Прежде чем менять настройки, убедитесь, что проблема действительно в ОС, а не в провайдере, роутере или оборудовании.

Команда Что показывает
ping -c 5 1.1.1.1 Базовая задержка и потери пакетов
mtr -r 1.1.1.1 Трассировка с потерями по каждому узлу
speedtest-cli или fast.com Реальная пропускная способность до сервера
ip link show / iw dev Статус интерфейса, тип соединения, MTU
dmesg | grep -iE 'eth|wlan|network|link' Ошибки драйверов/физического уровня

Если speedtest показывает низкую скорость, а mtr демонстрирует высокие потери на шлюзе провайдера → проблема на стороне сети/роутера, а не Linux.


2. Основные причины и решения

2.1. DNS и разрешение имён

Медленный или ненадёжный DNS косвенно влияет на скорость: браузер/клиент долго ищет IP, таймауты снижают общую производительность.

Решение:

# Проверка текущего DNS
resolvectl status   # systemd-resolved
# или
cat /etc/resolv.conf

Временная замена на Cloudflare/Google:

sudo nano /etc/systemd/resolved.conf
# Раскомментируйте и измените:
DNS=1.1.1.1 8.8.8.8
FallbackDNS=1.0.0.1 8.8.4.4
sudo systemctl restart systemd-resolved
sudo systemctl restart NetworkManager

2.2. IPv6 маршрутизация

Иногда IPv6-маршруты через провайдера имеют высокую задержку или ограничены.

Проверка:

ping6 -c 3 ipv6.google.com

Если пинг высокий или есть потери, временно отключите IPv6:

sudo sysctl -w net.ipv6.conf.all.disable_ipv6=1
sudo sysctl -w net.ipv6.conf.default.disable_ipv6=1

Для постоянного отключения добавьте строки в /etc/sysctl.d/99-disable-ipv6.conf и выполните sudo sysctl -p.

2.3. Менеджеры пакетов и зеркала

apt, dnf, pacman могут качать с географически далёких или перегруженных зеркал.

Ubuntu/Debian:

sudo apt install apt-transport-https netselect-apt
sudo netselect-apt
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
sudo netselect-apt stable   # заменит на быстрые зеркала
sudo apt update

Fedora:

sudo dnf install dnf-plugin-fastestmirror
sudo dnf config-manager --setopt=fastestmirror=True --save

Arch Linux:

sudo pacman-mirrors --country RU --api --protocol https
sudo pacman -Syy

2.4. Wi-Fi и драйверы

Беспроводные адаптеры часто работают в энергосберегающем режиме или используют неоптимальный канал.

Отключение энергосбережения:

sudo iw dev wlan0 set power_save off

Для сохранения после перезагрузки создайте /etc/NetworkManager/conf.d/wifi-powersave.conf:

[connection]
wifi.powersave = 2

(2 = отключено, 3 = включено)

Обновление драйверов:

sudo ubuntu-drivers autoinstall   # Ubuntu
# или установите linux-firmware, dkms-модули под ваш чипсет

2.5. Фоновые процессы и лимиты

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

Мониторинг в реальном времени:

sudo nethogs      # по процессам
sudo iftop -i eth0 # по хостам
sudo bmon          # наглядный график

Ограничьте прожорливые сервисы или отключите их при необходимости.


3. Оптимизация TCP/IP стека ядра

Современные ядра Linux (≥5.10) отлично работают из коробки, но в некоторых сценариях тонкая настройка даёт +15–30% к пропускной способности.

3.1. Алгоритм управления перегрузкой

# Проверка текущего
cat /sys/module/tcp_bbr/parameters/active  # или bbr2
sysctl net.ipv4.tcp_congestion_control

# Переключение на BBR (рекомендуется для большинства сетей)
sudo sysctl -w net.ipv4.tcp_congestion_control=bbr

Для постоянного применения добавьте в /etc/sysctl.d/99-tcp-bbr.conf:

net.core.default_qdisc = fq
net.ipv4.tcp_congestion_control = bbr

3.2. Размеры буферов и окна

sudo sysctl -w net.core.rmem_max=16777216
sudo sysctl -w net.core.wmem_max=16777216
sudo sysctl -w net.ipv4.tcp_rmem="4096 87380 16777216"
sudo sysctl -w net.ipv4.tcp_wmem="4096 65536 16777216"
sudo sysctl -w net.ipv4.tcp_window_scaling=1
sudo sysctl -w net.ipv4.tcp_sack=1
sudo sysctl -w net.ipv4.tcp_timestamps=1

Не меняйте значения вслепую на системах с <2 ГБ ОЗУ. После тестов сохраните в /etc/sysctl.d/99-network-tuning.conf и примените: sudo sysctl -p /etc/sysctl.d/99-network-tuning.conf.

3.3. MTU (Maximum Transmission Unit)

Неправильный MTU вызывает фрагментацию и падение скорости.

ip link show eth0   # ищем mtu 1500
# Для PPPoE часто нужно 1492:
sudo ip link set dev eth0 mtu 1492

Тест MTU:

ping -M do -s 1472 -c 3 1.1.1.1 (уменьшайте -s пока не начнёт проходить).


4. Полезные утилиты для анализа

Утилита Назначение
ethtool -i eth0 Информация о драйвере, версия прошивки
ethtool -S eth0 | grep -i drop Счётчики ошибок/потерь на интерфейсе
vnstat Долгосрочная статистика трафика
iperf3 Тест чистой пропускной способности между двумя хостами
tcpdump -i eth0 -n 'port 80 or port 443' -w cap.pcap Глубокий анализ пакетов (в связке с Wireshark)

5. Когда проблема не в Linux

  1. Ограничения провайдера: тарифные лимиты, шейпинг на вечернее время, NAT-ограничения.
  2. Роутер: устаревшая прошивка, перегрев, включённый QoS/SIP ALG, слабый CPU.
  3. Кабель/розетка: повреждённая витая пара, плохой контакт, длина >100 м без свитча.
  4. Сервер-источник: загруженный CDN, гео-ограничения, лимиты на скачивание.

Как проверить:

загрузитесь с LiveUSB (Ubuntu/Fedora), подключитесь к той же сети, запустите speedtest-cli. Если скорость такая же → проблема аппаратная/сетевая.


Чек-лист быстрого восстановления

  1. sudo apt/dnf/pacman update → обновите систему и ядро.
  2. Перезапустите сеть: sudo systemctl restart NetworkManager (или systemd-networkd).
  3. Включите tcp_congestion_control=bbr.
  4. Отключите энергосбережение Wi-Fi.
  5. Смените DNS на 1.1.1.1 / 8.8.8.8.
  6. Проверьте зеркала пакетного менеджера.
  7. Протестируйте скорость утилитой speedtest-cli или wget крупного файла.

Заключение

Низкая скорость в Linux редко бывает вызвана одной причиной. Чаще всего это комбинация: неоптимальный DNS, фоновые процессы, устаревшие драйверы или отсутствие современного алгоритма управления перегрузкой. Применяйте изменения пошагово, фиксируйте замеры до/после (speedtest-cli, iperf3, curl -o /dev/null -w "%{speed_download}\n"), и не меняйте несколько параметров одновременно.