Как установить ограничение скорости для сетевого канала в Linux?

Как можно ограничить скорость передачи данных для каждого отдельного соединения на определенном порту с помощью tc? Я нашел способ ограничить скорость порта, однако это ограничение применяется ко всем соединениям, а мне нужно установить ограничение для каждого отдельного соединения.
  • 25 марта 2024 г. 2:59
Ответы на вопрос 2
Для установки ограничения скорости для каждого отдельного соединения на определенном порту в Linux, вы можете использовать инструмент tc (Traffic Control). Вам необходимо создать классификаторы для каждого соединения на заданном порту и установить ограничение скорости для каждого классификатора.

Вот пример команд для установки ограничения скорости для каждого отдельного соединения на порту 80 (HTTP):

1. Создайте классификатор для пакетов с портом 80:
   
   ```
   sudo tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip sport 80 0xffff flowid 1:1
   ```

2. Создайте классификатор для соединений, удовлетворяющих первому классификатору:
   
   ```
   sudo tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip sport 80 0xffff flowid 1:10
   ```

3. Установите ограничение скорости для каждого классификатора:

   ```
   sudo tc class add dev eth0 parent 1:10 classid 1:100 htb rate 1mbit ceil 2mbit
   ```

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

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