История изменений
Исправление BOOBLIK, (текущая версия) :
Своим скриптом ты шейпишь явно только исходящий трафик. Для того, чтобы пользователи внутри сети не сажали тебе внешний канал при закачках нужно вешать ingress шэйпинг на внешний интерфейс и просить его дропать пакеты при превышении лимита. TCP-протоколы это вполне переживают и у юзера просто снижается скорость закачки. Например так:
DOWNLINK=25000
DEV=eth1
tc qdisc add dev $DEV handle ffff: ingress
tc filter add dev $DEV parent ffff: protocol ip prio 50 \
u32 match ip src 0.0.0.0/0 \
match ip protocol 6 0xff \
match ip sport 80 0xffff \
police rate $((8*${DOWNLINK}/10))kbit \
burst 10k drop flowid :1
tc filter add dev $DEV parent ffff: protocol ip prio 50 \
u32 match ip src 0.0.0.0/0 \
match ip protocol 6 0xff \
match ip dport 80 0xffff \
police rate $((8*${DOWNLINK}/10))kbit \
burst 10k drop flowid :1
Где eth1 — внешний интерфейс сервера реализующего nat для внутренней сети.
Исходная версия BOOBLIK, :
Своим скриптом ты шейпишь явно только исходящий трафик. Для того, чтобы пользователи внутри сети не сажали тебе внешний канал при закачках нужно вешать ingress шэйпинг на внешний интерфейс и просить его дропать пакеты при превышении лимита. TCP-протоколы это вполне переживают и у юзера просто снижается скорость закачки. Например так:
DOWNLINK=25000
DEV=eth1
tc qdisc add dev $DEV handle ffff: ingress
tc filter add dev $DEV parent ffff: protocol ip prio 50 \
u32 match ip src 0.0.0.0/0 \
match ip protocol 6 0xff \
match ip sport 80 0xffff \
police rate $((8*${DOWNLINK}/10))kbit \
burst 10k drop flowid :1
tc filter add dev $DEV parent ffff: protocol ip prio 50 \
u32 match ip src 0.0.0.0/0 \
match ip protocol 6 0xff \
match ip dport 80 0xffff \
police rate $((8*${DOWNLINK}/10))kbit \
burst 10k drop flowid :1
Где eth1 — внешний интерфейс сервера реализующего nat для внутренней сети.