Как ограничить скорость канала Linux?

Ссылка скопирована
13 февраля 2026 1 ответ

Как при помощи tc ограничить скорость пропускания для каждого соединения на определенном порту.
Нашел как можно ограничить скорость порта, но тогда оно задает ограничение не зависимо от кол-ва подключений.

Дополнительно:

уточните что у вас на этом порту висит и какова цель возможно есть более простое решение.

  • Во внутренней сети предприятия есть сервис на порту 443 висит, он светит по внешку, но канал не ахти. Бывает так что в вечернее время к сервису идет большое кол-во запросов и скачивание, и дабы не ложить весь канал хочется на конкретном порту для соединения дать лимит по скорости.

    Например 1 мбит на пользователя
    и не более 50 мбит на конкретный порт (443)
    Получается что 50 пользователей стабильно получат свой мигабит , а если будет 51 пользователь то уже их скорость начнет делиться на всех. И в обратную сторону так же, даже если никого нет и пользователь один, он получает свой 1 мбит и не забивает канал.

    tc почитал как резать скорость но он общую делать на всех, что не совсем корректно.

  • В tc есть понятие "классификации трафика", надо по условиям разделить трафик на классы и каждому назначить полосу. В Linux Advanced Routing and Traffic Control (LARTC) это подробно описано.

    Да, это не очень просто и нужно вникать, но на то это и Advanced-фича.

  • Ответы:

    Раз у вас там HTTP, избыточно ограничивать это на сетевом уровне, когда есть довольно гибкие инструменты прямо в веб-серверах, например.

    nginx.org/en/docs/http/ngx_http_core_module.html#l...

    • желательно бы без nginx решить вопрос.
      Необходимость именно в шейпере, потому что порт не один и не всегда это веб.
    • Константин, тогда опишите это в вопросе - и ответы будут более релевантными.

    Можно попытаться решить на уровне шлюза через QoS

    Я бы попробовал маркировать новые соединения и для маркированных пакетов создал необходимую дисциплину tc

    Нужно решить такую задачу?

    Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

    Заказать помощь
    Лучший ответ
    1
    Павел Админов Ответ

    Для ограничения скорости канала на Linux можно использовать утилиту tc (Traffic Control). Это позволит установить ограничения на пропускную способность сетевого интерфейса.

    Вот пример команды для ограничения скорости на интерфейсе eth0 до 1mbit в секунду:

    tc qdisc add dev eth0 root tbf rate 1mbit burst 32kbit latency 400ms

    tc qdisc add dev eth0 root tbf rate 1mbit burst 32kbit latency 400ms

    Где:
    - `rate 1mbit` - устанавливает скорость в 1 мегабит в секунду
    - `burst 32kbit` - размер буфера для передачи данных
    - `latency 400ms` - задержка в передаче данных

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

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

    Надеюсь, что это поможет вам ограничить скорость канала на Linux. Если у вас есть дополнительные вопросы, не стесняйтесь задавать.

    Другие ответы (0)

    Пока нет других ответов. Будьте первым, кто поможет автору.

    Ответить на вопрос

    комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

    Вам также может быть интересно