3proxy с поддержкой Fair Usage Policy.
Изначально 3proxy не поддерживает логику, "закончился трафик, режем скорость", хотя по отдельности этот функционал присутствует.
В этой версии эти две опции работают вместе.
Также немного "раскрашена" и переведена на utf-8 веб-админка.
При после израсходования пользователем своего лимита в countin/countout к нему будут применены политики bandlim пользователя ~USER, где USER имя пользователя.
Если политики нет, то ограничений не будет, но будут сообщения в логе Quota exceeded, applying bandlim from ~USER.
Создавать пользователя ~USER не обязательно, достаточно указать его в политике.
Если пользователь превышает трафик в процессе одного коннекта (качает большой файл), то соединение будет разорвано, как только 3proxy увидит лимит (как правило +10-30 мб).
При следующем подключении, лимиты будут применены сразу.
Эта конфигурация является продолжением примера telemt-ssu в режиме Fair Usage Policy
system "echo Hello world!"
# Логирование в файл
# log ./logs/3proxy.log D
# -- на экран
log
# Счетчики
counter "./3proxy.3cf" D ./traf/traf
# external 0.0.0.0
# Установка DNS серверов
nserver 192.168.1.1
nscache 65536
# Список пользователей
users admin:CL:p_ass_sword
users test:CL:test
users telemt:CL:telemt
users hello:CL:hello
users unlim:CL:unlim
# socsk5 + parent
auth strong
flush
allow *
parent 1000 socks5 192.168.1.1 1080
# Счетчики пользователей
countin "1/Иванов" D 15 test
countin "2/Петров" W 50 hello
countin "3/Баширов" W 50 unlim
# Лимиты скорости
bandlimin 8388608 test
bandlimin 65536 ~test
bandlimin 1048576 ~hello
# unlim тут нет, поэтому несмотря на наличие countin,
# скорость у него ограничена не будет, но лучше убрать его из countin
maxconn 1000
socks -osTCP_NODELAY,TCP_FASTOPEN_CONNECT -ocTCP_NODELAY -i127.0.0.1 -p1081В конфиге выше все соединения идут через родительский прокси socks5://192.168.1.1 1080.
Заведены 4 пользователя:
- telemt : заведен как обычный пользователь, без лимитов
- test : пакет "15 МБ/день" на скорости 1 Мб/с, дальше ограничение скорости до 8 Кб/с
countin "1/Иванов" D 15 test
bandlimin 8388608 test
bandlimin 65536 ~test - hello : пакет "50 МБ/неделя" на максимальной скорости, дальше ограничение скорости до 128 Кб/с
countin "2/Петров" W 50 hello
bandlimin 1048576 ~hello - unlim : пакет "50 МБ/неделя" на максимальной скорости, так как не имеет политики bandlim для ~, значит скорость останется максимальной, но в логах будет предупреждающая запись
Quota exceeded, applying bandlim from ~USER
countin "3/Баширов" W 50 unlim
--- unuunn (c) 2o26