Шейпинг
Ограничение скорости, tc, честная раздача.
- Лимит скорости через tc (полный рецепт) 30.01.26:
tc qdisc del dev eth0 root 2>/dev/null
tc qdisc add dev eth0 root handle 1: htb default 10
tc class add dev eth0 parent 1: classid 1:10 htb rate 20mbit ceil 20mbit
tc filter add dev eth0 protocol ip parent 1: prio 1 u32 match ip dport 443 0xffff flowid 1:10
tc -s qdisc show dev eth0- Скрипт
vps-limit.sh(Zavulon): apply/clear/status через tc qdisc, автоопределение интерфейса, fq без дропа пакетов;sudo ./script.sh apply 20mbit16.12.25. Мотивация: 10–20 Мбит на ноду белых списков, чтобы юзеры с ПК не съедали трафик. - Альтернатива в nginx пруф:
location / {
limit_rate_after 10m;
limit_rate 500k;
}- РЕШАЛА (DonMatteoVPN) — шейпер трафика:
- v2.58: персональные лимиты на юзера, метки подключений, DL/UL 28.12.26; man: github.com/DonMatteoVPN/Reshala-Remnawave-Bedolaga/blob/dev/docs/Sheiper_trafik.md
- v2.90+: eBPF + EDT в ядре, без юзерспейса; лимит на каждый IP, до 32 правил; режимы Статика / Динамика (Burst+Штраф) пруф; 3-й режим «общий пул» (суммарно N на порт) пруф; новая архитектура без ifb0: Download — EDT, Upload — Token Bucket/Ingress Drop пруф. L3-уровень, Reality/XHTTP/gRPC/WS не мешает пруф.
- Опыт с BPF-шейпером: port-правило проверяет и sport, и dport — whitelisting «адрес сайта, а не клиента» даёт 231 Мбит вместо 19.7;
bpf_skb_pull_dataперед разбором (49.3→5.0 при лимите 5); подсети — LPM-trie; шейпер точен только под qdisc fq;fq flow_limit 100душит UDP (Hysteria 0.5 Мбит при лимите 5),flow_limit 2000→ 4.5 Мбит 06.08.26. - Коэффициент трафика ноды (Remna): множитель списания; на платные ноды 1 (или 3), на бесплатные 0; сценарий «БС-лимит» — зарубежка 0, БС 1, юзеру лимит 50 ГБ пруф. При исчерпании лимита режется вся подписка юзера, не нода пруф; workaround — два сквада (MOBILE/STANDARD) и удаление юзера из MOBILE пруф.
- xray rate limit в ядре нестабилен, кушает RAM; классический tc: по 512 Кбит/с на юзера, общий канал ноды через tc не задушить пруф.