💡 Полезные Советы

Оптимизация сетевого стека Linux: Включение TCP BBR для ускорения VPN и прокси.

07.12.25
15

Если вы настроили VPN (O******, W***** Op****) или прокси-сервер, но сталкиваетесь с низкой скоростью передачи данных при хорошем канале, причина часто кроется не в ширине канала, а в устаревших алгоритмах управления перегрузкой TCP.

В этой инструкции мы разберем, как включить алгоритм TCP BBR от Google, который де-факто стал стандартом для оптимизации высоконагруженных и удаленных серверов.

Что такое TCP BBR и зачем он нужен?

По умолчанию в большинстве дистрибутивов Linux используется алгоритм TCP CUBIC. Он был создан в эпоху проводных сетей и работает по принципу "loss-based" (основан на потере пакетов):

  1. Сервер наращивает скорость передачи.

  2. Как только теряется хотя бы один пакет, CUBIC считает, что канал забит, и резко сбрасывает скорость (обычно в 2 раза).

  3. Затем начинается медленный набор скорости заново.

Проблема: В современных сетях (особенно мобильных и международных) потеря пакетов часто носит случайный характер и не означает, что канал перегружен. В результате CUBIC «тормозит» там, где можно работать на полную мощность.

Решение (TCP BBR): Algorithm BBR (Bottleneck Bandwidth and Round-trip propagation time), разработанный Google, использует другой подход. Он моделирует сеть, постоянно измеряя два параметра:

  • Максимальную пропускную способность (Bandwidth).

  • Минимальное время отклика (RTT).

BBR игнорирует случайные потери пакетов и поддерживает скорость передачи на уровне реальной пропускной способности канала. Это дает прирост скорости от 30% до 1000% на нестабильных соединениях.

Инструкция по включению

Шаг 0: Проверка версии ядра

Для работы BBR требуется ядро Linux версии 4.9 или выше. Абсолютное большинство современных систем (Ubuntu 18.04+, Debian 10+, CentOS 8+) уже соответствуют этому требованию.

Проверьте версию ядра командой:

uname -r

Если версия ниже 4.9, вам необходимо сначала обновить ядро ОС.

Шаг 1: Включение BBR

Нам нужно изменить два параметра ядра через sysctl.

  1. Изменить планировщик пакетов (Queue Discipline) на fq (Fair Queueing), так как BBR требует его для корректной работы.

  2. Включить сам алгоритм bbr.

# Добавляем настройки в конфигурационный файл
echo "net.core.default_qdisc=fq" | sudo tee -a /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr" | sudo tee -a /etc/sysctl.conf
# Применяем изменения без перезагрузки
sudo sysctl -p

Шаг 2: Проверка результата

Убедитесь, что настройки применились корректно.

  1. Проверяем, какой алгоритм управления перегрузкой используется сейчас:

  2. sysctl net.ipv4.tcp_congestion_control
  3. Проверяем, запущен ли модуль BBR:

  4. lsmod | grep bbr

Ожидаемый вывод (пример):

tcp_bbr 20480 14

Результаты

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

Что вы заметите:

  • Стабильность: YouTube и потоковое видео перестанут буферизироваться.

  • Скорость: Speedtest покажет результаты, близкие к заявленным хостером, даже если клиент находится на другом континенте.

  • Плавность: Исчезнут резкие провалы скорости при использовании мобильного интернета.

Техническое примечание (для администраторов)

  • Почему fq, а не fq_codel? Хотя fq_codel часто является дефолтным в современных дистрибутивах, для работы BBR необходим именно планировщик fq, так как он обеспечивает pacing (равномерную подачу пакетов), на который опирается модель BBR.

  • Совместимость: BBR работает только на стороне отправителя (в данном случае — вашего VPN-сервера). Клиентам (телефонам, ноутбукам) ничего настраивать не нужно.

Маска адреса

27.04.25
164

Маска адреса - это параметр, который сообщает программному обеспечению о том, сколько компьютеров объединено в ту или иную группу(подсеть)

Маска адреса - это набор из четырех групп чисел, каждое из которых может быть 0 до 255. Чем меньше значение маски тем больше компьютеров объединено в эту подсеть.

Пример 1. 192.168.0.0/24 Например сеть 192.168.0.0 с маской 255.255.255.0 - иначе можно записать как 192.168.0.0/24 (Маска подсети: 255.255.255.0 (в двоичной форме это 24 единицы подряд: 11111111.11111111.11111111.00000000))

Пример диапазонов:

  • Первый адрес в сети: 192.168.0.1 (обычно используется для устройства, например роутера)
  • Последний адрес: 192.168.0.254
  • Бродкаст-адрес (рассылка на всю сеть): 192.168.0.255

Итого в сети /24 может быть до 254 устройств (2^8 − 2 = 254, потому что 2 адреса зарезервированы — сетевой и широковещательный).

Пример 2. 192.168.0.0/16

Такую сеть используют в больших организациях или междугородних сетях, где нужно очень много IP-адресов.

Пример сети 192.168.0.0/16 - первые 16 бит — это сеть, остальные 16 бит — для устройств.

(Маска подсети: 255.255.0.0 в двоичном виде 16 единиц подряд: 11111111.11111111.00000000.00000000)

Что это значит:

Диапазон адресов в сети: от 192.168.0.0 до 192.168.255.255

Количество возможных адресов:

  • 2^16 = 65 536 адресов (минус 2 адреса (сетевой и широковещательный) → 65 534 устройства могут работать в одной сети.)

Пример 3. 192.168.0.0/30

Такие маленькие подсети используют для точка-точка соединений (например, соединить два маршрутизатора напрямую).

Пример сети 192.168.0.0/30 - первые 30 бит — это сеть, 2 бита остаются для адресации устройств.

255.255.255.252 (в двоичном виде: 11111111.11111111.11111111.11111100)

Что это значит:

Диапазон адресов в сети: от 192.168.0.0 до 192.168.0.3

Конкретные адреса:

  • 192.168.0.0 — сетевой адрес
  • 192.168.0.1 — первый рабочий адрес
  • 192.168.0.2 — второй рабочий адрес
  • 192.168.0.3 — широковещательный адрес

Популярные CIDR-записи:

  • 192.168.0.0/24 - Частная локальная сеть -Домашние роутеры, офисные сети
  • 192.168.1.0/24 -Частная локальная сеть -Очень популярно у роутеров TP-Link, ASUS, Zyxel
  • 10.0.0.0/8 -Очень большая частная сеть -Корпоративные сети, облачные решения
  • 172.16.0.0/12 - Средние частные сети -VPN-сервисы, корпоративные структуры
  • 127.0.0.0/8 - Loopback (localhost) - Например, 127.0.0.1 — ваш собственный компьютер

Что такое Loopback?

Loopback — это виртуальный сетевой интерфейс на компьютере, который имитирует сетевое соединение, но всё происходит внутри машины. Когда вы обращаетесь к 127.0.0.1, вы на самом деле отправляете запрос самому себе, минуя любую реальную сеть.

Простыми словами:

127.0.0.1 — это "я сам", "мой компьютер".

Модель OSI

24.04.25
167

модель OSI (Open Systems Interconnection, модель взаимодействия открытых систем) - условно разбивающая сетевое взаимодействие на семь уровней.

Знание уровней OSI обычно требуется при сдаче тех или иных сертификационных экзаменов, но на практике такое деление потеряло свое значение. Если первые три уровня еще можно достаточно хорошо вычленить при анализе того или иного сетевого проекта, то классифицировать функциональность оборудования по остальным уровням весьма сложно. В маркетинговых целях в описаниях коммутаторов часто указывают, что они работают, например, на уровне 4 или 7. На практике это означает только, что при реализации определенного функционала в коммутаторах осуществляется анализ пакета данных по характеристикам, относящимся к соответствующим уровням. Например, это происходит при операциях маршрутизации группового трафика, приоритизации пакетов и т.п..

7 . Application(7) - Назначение: Обеспечение служб сетевых приложений - Примеры: Протоколы SMTP, HTTP, FTP и т.п. - Сетевое оборудование: пусто

6 . Presentation(6) - Назначение: Службы кодирования и преобразования данных, используемых на уровне приложений - Примеры: Стандарты кодирования изображений(GIF, JPEG, TIFF и т.п.), аудио и видео(MPEG) и т.п. - Сетевое оборудование: пусто

5 . Session(5) - Назначение: Обеспечение коммуникаций между приложениями более высокого уровня(согласование, поддержка, завершение сессий) - Примеры: Session Control Protocol(SPC), Remote Procedure Call, Zone Information Protocol (AppleTalk) - Сетевое оборудование: пусто

4 . Transport(4) - Назначение: Обеспечивает передачу данных от одной точки до другой - Примеры: TCP(используются соединения) UDP(передача данных без создания соединения) - Сетевое оборудование: пусто

3 . Network(3) - Назначение: Обеспечивает логическую структуру сети (сетевые адреса) - Примеры: IP - Сетевое оборудование: Маршрутизаторы, Маршрутизирующие коммутаторы

2 . Data Link(2) - Назначение: Обеспечивает передачу данных по тем или иным физическим каналам связи - Примеры: Ethernet, Token Ring, FDDI, Point-to-Point Protocol, Frame Relay - Сетевое оборудование: Коммутаторы, Мосты

1 . Physical(1) - Назначение: Определяет физические, механические, электрические и другие параметры физ. каналов связи (напряжение, частота, максимальные длины участков и т. п.) - Примеры: LAN категории 3, LAN категории 5, V.35 - Сетевое оборудование: Концентраторы

Некоторые порты, которые рекомендуется закрывать, если они не используются на сервере. Часть 2

06.04.25
170
  1. Порт 25/TCP (SMTP) Используется для отправки электронной почты. Открытый порт может быть использован для спам-рассылок или атак через открытый релей. Рекомендации: Закройте порт, если сервер не является почтовым. Для отправки писем используйте аутентификацию и защиту (например, SMTP over TLS).
  2. Порт 161/UDP (SNMP) Применяется для управления сетевыми устройствами. Версии SNMP v1/v2 передают данные в открытом виде. Рекомендации: Если не используется, закройте порт. Для защиты обновитесь до SNMP v3 с шифрованием.
  3. Порты 137-139/TCP,UDP (NetBIOS) Используются для служб имен и сессий в сетях Windows. Могут быть использованы для сбора информации или атак (например, EternalBlue). Рекомендации: Отключите на серверах, не участвующих в Windows-сетях.
  4. Порт 514/UDP (Syslog) Служит для передачи системных логов. Без защиты возможна подмена или перехват данных. Рекомендации: Ограничьте доступ к доверенным IP-адресам и используйте шифрование (TLS).
  5. Порт 123/UDP (NTP) Используется для синхронизации времени. Может быть мишенью для NTP-амплификационных атак. Рекомендации: Если сервер не предоставляет время, ограничьте доступ. Используйте ntpsec или аналогичные защищенные реализации.
  6. Порт 111/TCP,UDP (RPCbind) Связан с удалённым вызовом процедур (RPC) в Unix-системах. Уязвим к атакам, если не защищен. Рекомендации: Закройте порт, если не используете NFS или другие RPC-сервисы.
  7. Порт 2049/TCP,UDP (NFS) Используется для сетевой файловой системы (NFS). Открытый доступ может привести к утечке данных. Рекомендации: Закройте, если NFS не используется. При необходимости ограничьте доступ и используйте Kerberos для аутентификации.
  8. Порт 69/UDP (TFTP) Протокол для простой передачи файлов без аутентификации. Данные передаются в открытом виде. Рекомендации: Полностью откажитесь в пользу SFTP или HTTPS.
  9. Порт 53/TCP,UDP (DNS) Используется для разрешения доменных имен. Если на сервере не запущен DNS-сервер, открытый порт может стать целью атак (например, DNS-спуфинг). Рекомендации: Закройте порт, если сервер не является DNS-резолвером.
  10. Порт 1433/TCP (Microsoft SQL Server) Применяется для доступа к базам данных MS SQL. Неконтролируемый доступ может привести к утечкам. Рекомендации: Ограничьте доступ по IP, используйте брандмауэр и многофакторную аутентификацию. Дополнительные рекомендации:

Порты 27017/TCP (MongoDB), 6379/TCP (Redis), 9200/TCP (Elasticsearch): Закрывайте, если сервисы не используются. Эти базы данных часто становятся целями атак из-за открытых портов по умолчанию.

Порт 11211/TCP (Memcached): Уязвим к амплификационным атакам. Разрешайте доступ только из внутренней сети.

Порты 8080/TCP, 8443/TCP: Часто используются для веб-сервисов. Закрывайте, если не нужны, или перенаправляйте трафик через HTTPS (443).

Порт 5353/UDP (mDNS): Используется для автоматического обнаружения устройств. Отключайте на публичных серверах. Общий совет: Регулярно проводите аудит открытых портов с помощью nmap или netstat, отключайте все неиспользуемые службы и применяйте принцип минимальных привилегий. Используйте брандмауэры (например, iptables, ufw) для контроля входящего/исходящего трафика.

Некоторые порты, которые рекомендуется закрывать, если они не используются на сервере. Часть 1

03.04.25
131

Открытые порты представляют собой "незапертые двери" к потенциально уязвимым сервисам любой сети. Некоторые порты, изначально предназначенные для конкретных служб, могут быть использованы злоумышленниками для взлома. Например, 21/TCP (FTP), 22/TCP (SSH), 23/TCP (Telnet) и 3389/TCP (RDP) — опасные, так как часто подвергаются атакам подбора паролей и эксплуатации уязвимостей.

  1. Порт 22/TCP (SSH). Используется для защищенного удаленного доступа к серверам. Часто подвержен атакам подбора паролей. Рекомендуется использовать ключи SSH вместо паролей для повышения безопасности.
  2. Порт 80/TCP (HTTP). Применяется для доступа к веб-страницам. Может быть атакован с помощью XSS, SQL-инъекций и других уязвимостей веб-приложений. Рекомендуем использовать HTTPS для шифрования данных.
  3. Порт 443/TCP (HTTPS). Используется для защищенной передачи данных через интернет. Хоть HTTPS и шифрует данные, уязвимости в SSL/TLS могут позволить злоумышленникам их перехватывать. Поэтому крайне важно поддерживать сертификаты и настройки безопасности в актуальном состоянии.
  4. Порт 3389/TCP (RDP). Применяется для доступа к службе удаленных рабочих столов в ОС Windows. Часто становится целью атак из-за слабых паролей и уязвимостей данной системы. Рекомендуем ограничивать доступ по IP и использовать многофакторную аутентификацию.
  5. Порт 21/TCP (FTP). Используется для передачи файлов. Отправка данных в открытом виде делает FTP уязвимым для перехвата. Рекомендуем использовать FTPS или SFTP для защиты информации.
  6. Порт 3306/TCP (MySQL). Применяется для работы с базами данных MySQL. Неконтролируемый доступ к базе данных может привести к утечкам информации. Рекомендуем ограничить доступ к этому порту до авторизованных пользователей.
  7. Порт 23/TCP (Telnet). Используется для удаленного доступа и управления устройствами. Как и FTP, Telnet передает данные в открытом виде. Рекомендуем полностью отказаться от Telnet в пользу SSH.
  8. Порт 445/TCP (SMB). Применяется для обмена файлами в сетях Windows. Может быть использован для распространения вредоносного ПО. Рекомендуем отключить SMB, если он не нужен, или использовать актуальные версии протокола.
  9. Порт 5432/TCP (PostgreSQL). Используется для доступа к базам данных PostgreSQL. Аналогично MySQL, открытый порт может быть использован для атак. Рекомендуем ограничить доступ и использовать надежные пароли.
  10. Порт 5900/TCP (VNC). Применяется для удаленного доступа к графическому интерфейсу. Может быть подвержен атакам из-за слабых паролей. Рекомендуем использовать VPN для защищенного доступа.

Питание по сети Ethernet(PoE)

29.03.25
137

Технология PoE: Питание через Ethernet

Некоторое современное оборудование может получать питание по технологии Power over Ethernet (PoE) — питание по кабелю Ethernet. Это исключает необходимость прокладки отдельных силовых кабелей к устройствам.

Как правило, по PoE запитывают не слишком мощное оборудование:

  • Точки беспроводного доступа (Wi-Fi);
  • Камеры видеонаблюдения;
  • IP-телефоны.

Принцип работы

Технология основана на особенностях стандартов передачи данных 10/100 Мбит/с. В стандартном кабеле «витая пара» (4 пары проводов):

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

Оборудование и управление

Для реализации технологии обычно устанавливаются специальные PoE-коммутаторы. Также допускается использование отдельных блоков питания (инжекторов) для конкретных устройств.

Лайфхак для администраторов:
Управление портами PoE-коммутатора позволяет удаленно перезагружать зависшие устройства. Для этого достаточно программно снять напряжение с соответствующего порта, а затем подать его снова.

Стандарт 802.3af и мощность

Согласно стандарту IEEE 802.3af, существуют потери мощности при передаче по кабелю. Устройства потребляют меньше, чем выдает порт:

ПараметрЗначение
Мощность на порту коммутаторадо 15.4 Вт
Макс. мощность на устройстведо 12.95 Вт

Примеры потребления:

  • IP-телефоны: ~2 Вт;
  • Точки доступа: ~11 Вт.

Безопасность и приоритеты (PoE Budget)

На большинстве коммутаторов суммарная мощность ограничена. Общее правило безопасности:

Суммарная мощность < 15.4 Вт × Количество портов

При превышении этого лимита коммутатор начинает отключать питание портов. Чтобы важные устройства (например, камеры) не отключились первыми, администратор вручную назначает приоритеты портов.