# Шейпинг outbound трафика пользователей при помощи утилиты tc

**URL:** https://f.docs.rw/t/topic/754
**Category:** Предложения
**Created:** 2026-09-17T16:49:39Z
**Posts:** 6

## Post 1 by @pause_user — 2026-09-17T16:49:39Z

Предлагаю добавить возможность настройки шейпинга с помощью утилиты `tc` непосредственно в панели управления.

Сейчас вся настройка выполняется через отдельные скрипты, однако было бы значительно удобнее управлять этим функционалом прямо из панели.

В моём сервисе, например, реализовано отслеживание подключений к порту 443. Для всех обнаруженных IP-адресов применяется ограничение исходящего трафика (outbound) до 100 Мбит/с. Кроме того, существует отдельный список IP-адресов, для которых используется более строгое ограничение — до 20 Мбит/с.

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

UPD: Пояснение. Ограничение в 100 Мбит/с применяется отдельно к каждому IP-адресу. То есть каждый пользователь ограничен скоростью до 100 Мбит/с и не сможет занять канал выше этого значения.

---

## Post 2 by @slashfast — 2026-09-18T07:30:29Z

А что если юзер сидит за CGNAT? Кажется, что стоит это делать на уровне юзера в xray. Идея, безусловно, хорошая, но не на уровне TCP/IP, считаю я.

Уже были issue:

[https://github.com/XTLS/Xray-core/issues/6150](https://github.com/XTLS/Xray-core/issues/6150)

[https://github.com/XTLS/Xray-core/issues/3667](https://github.com/XTLS/Xray-core/issues/3667)

---

## Post 3 by @pause_user — 2026-09-18T10:40:29Z

В идеале, я понимаю, что такой механизм стоило бы реализовать непосредственно в ядре Xray, чтобы шейпинг можно было применять на уровне конкретных пользователей. Но за неимением такой возможности это можно реализовать на уровне TCP/IP.

Даже если пользователь находится за CGNAT, такой подход всё равно может быть практически полезен. Внешний IP в этом случае действительно может быть общим для нескольких абонентов, но это не обязательно означает слишком широкую область вроде целого города — всё зависит от архитектуры сети конкретного провайдера (по крайней мере в РФ). Поэтому в ряде случаев такой уровень идентификации всё ещё может быть достаточно полезным для управления трафиком.

При этом шейпинг необязательно использовать как постоянное ограничение для всех. Его можно применять, например, только для отсечения пикового трафика, либо по умолчанию держать выключенным и включать выборочно только для определённых пользователей или групп, где это действительно необходимо. Если например пользователь что-то начал скачивать и временно применить политику на 20 Мбит/с

---

## Post 4 by @equestriagirl — 2026-09-18T19:59:04Z

Вообще в свое время натыкался на проект вот [этот](https://github.com/ryabkov82/vff-qos)

На сколько вайб код, а так же эффективность такого подхода - подсказать не могу, надо смотреть, а я так далеко не разбирался и вообще давно на полку отложил

Может, стоило бы просмотреть репозиторий, и кому-то придет идея как можно это сделать либо нативно в панели, либо поддерживать подобный тул сделав форк или переписав с нуля

---

## Post 5 by @pause_user — 2026-09-19T19:02:25Z

В репозитории находятся shell-скрипты, похожие на те, что я использую. Однако это обычные скрипты + ansible. Внедрение такого функционала в панель упростило бы реализацию. Идею я вкинул, но тут не мне уже решать)

По сути реализовать это можно плагином, как TorrentBlocker. Возможно сам займусь этим, если время появится

---

## Post 6 by @KPAKOB — 2026-10-21T05:32:24Z

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