proftpd ограничение полосы для пользователя

Возникла необходимость лимитировать скорость в proftpd для определенных пользователей. Однако, к сожалению, успеха я не поимел.
Директива TransferRate не подходит, ибо она хоть и может быть использована для поюзерного ограничения скорости, лимитирует скорость отдельной сессии; лимитировать пользователя одним подключением нельзя. Поскольку proftpd уже оброс кое-какими скриптами, переход на другой FTP-сервер будет болезненным, хотелось бы этого избежать.

маркируйте пакеты,

маркируйте пакеты, ограничивайте шейпером - костыль, но работать будет. Никто не говорил, что будет легко)

переход на другой FTP-сервер будет болезненным, хотелось бы этого избежать.

А, жаль, pure-ftpd это умеет делать.

промаркировать никак не

промаркировать никак не выйдет - вернее выйдет если не нужно различать пользователей, что является чрезвычайно жестким ограничением в данном случае.
видимо все же придется куда-то переезжать. печально.

MaxClientsPerUser

MaxClientsPerUser

и?

и?

MaxClientsPerUser -- Limit

MaxClientsPerUser -- Limit the number of connections per userid

http://www.proftpd.org/docs/directives/linked/config_ref_MaxClientsPerUser.html

TransferRate -- Configure upload, download transfer rates

Synopsis

TransferRate [ cmds] [ kilobytes-per-sec[:free-bytes]] [ ["user"|"group"|"class" expression]]

http://www.proftpd.org/docs/directives/linked/config_ref_TransferRate.html

TransferRate + MaxClientsPerUser = равно то что вы хотите. Разве нет ?

все это я внимательнейше

все это я внимательнейше изучил, однако, как я уже заметил, TransferRate применяется к сессии а к-во сессий не может быть ограничено одной - на то есть в данном случае весомые причины.

MaxClientsPerUser -- Limit

MaxClientsPerUser -- Limit the number of connections per userid - это лимитирование сессий для пользователя. Выставьте равным 1 вот и будет одна сессия с ограниченной полосой пропускания.

kostik87, я уже 2 раза

kostik87, я уже 2 раза упомянул, что пользователя нельзя ограничивать одной сессией. Если бы было можно, то и вопрос бы не возник

Beelzebubbie, что тогда

Beelzebubbie, что тогда означает этот параметр ?

MaxClientsPerUser -- Limit the number of connections per userid

Я вижу, что он означает ровно то, что вы говорите нельзя делать.

Этот параметр (он у меня и

Этот параметр (он у меня и используется) ограничивает пользователя в к-ве установленных от его имени сессий; мне же надо ограничить полосу, чтобы пользователь жрал, например, не более 1МБ/с, имея во время своих мегаскачиваний возможность управления файлами - что требует уже 2 сессий одновременно.

Ну так дайте ему 2 по 0.5Мб/с

Ну так дайте ему 2 по 0.5Мб/с :)
И пусть сам решает - качать ему по обоим каналам или файлами управлять!

ну зачем же так изгаляться

ну зачем же так изгаляться над несчастным пользователем? во-первых, не всякий фтп-клиент умеет один файл качать в 2 потока, во-вторых, потребуется ручное прерывание и возобновление сессии для того чтобы ее освободить для «управлятельных» действий. В целом - совершенно неудовлетворительное решение задачи, к тому же всего 2 сессии тоже не шибко хорошо. Вернувшись к начальному вопросу - выясняется, что я вроде бы ничего не упустил и proftpd просто не может реализовывать требуемый функционал. Тогда чем его можно заменить? pure уже посоветовали, может еще какие варианты найдутся?

Простите за флуд, но IMHO у

Простите за флуд, но IMHO у вас паранойя. Ограничение в 1МБ/с для пользователя для вас не есть "изгаляться над несчастным пользователем" а дать две или три сессии по 1МБ/с это для вас уже много, мне кажется ваша проблема не решаема.

1МБ/с - это цифра,

1МБ/с - это цифра, приведенная для примера. и таки да, дело не в количестве сессий и не в конкретных цифрах а в правильном распределении полосы в рамках поставленной задачи. В сквиде, например, эта задача вполне решена

У меня на моем фтп: #

У меня на моем фтп:

# Ограничения
MaxClients 25 "Sorry, max %m users -- try again later"
MaxClientsPerHost 2 "Sorry, you may not connect more than one time."
MaxLoginAttempts 10 "Слишком много попыток войти"
# Ограничение трафика.
TransferRate RETR,STOR,APPE 10000 user !com-p,!aftp

И ни кто не жалуется, всех все устраивает, в месяц только по фтп скачивают 120гиг. и всех все устраивает.

> в месяц только по фтп

> в месяц только по фтп скачивают 120гиг
у меня в день немногим меньше. смысл моей задачи в том, что пользователь рассчитывает на определенную скорость скачивания с FTP и конечно же она должна ему быть предоставлена даже при одной сессии. А то, что он будет жрать в 2-3 раза больше - не устраивает уже меня, ибо полоса сервера является лимитирующим фактором. Практика показала, что одной сессии мало - ибо качают они часами, и нередко у них возникает необходимость в это время что-то переименовать/удалить/залить.

Вот если кто-то подскажет, какой ftp-сервер может поюзерно лимитировать скорость (разумеется, с возможностью назначить определенному юзеру/группе свои лимиты, невзирая на к-во сессий и прочее) - было бы замечательно. Пока чтение манов по pure-ftp и vsftpd ничем не обрадовало, хотя в манах, как обычно, нюансы не рассмотрены.

proftpd

Вы плохо курили маны, почитайте описание TransferRate.
Вот выдержка "The optional parameters are used to restrict the application of the rate controls only to specific users. If the "user" restriction is given, then expression is a user-expression specifying to which users the rate applies. Similarly for the "group" restriction. For the "class" restriction, the expression is simply the name of connection class for whom the rate will apply."

И Ссылка

Возможно, у Вас есть какое-то

Возможно, у Вас есть какое-то основание думать, что Вы внимательнее меня читаете маны, однако есть и другой вариант: либо Вы их неверно понимаете, либо они написаны чересчур лаконично, допуская произвольное толкование.

оба синтаксиса:

<IfUser AND username>
        # TransferRate APPE,RETR,STOR,STOU 100
</IfUser>

и

TransferRate APPE,RETR,STOR,STOU 100 user username

дают один и тот же результат: каждая сессия получает свой отдельный лимит в 100. Есть у Вас есть конфиг, работающий иначе - так, как мне необходимо, было бы очень интересно взглянуть.

100 гигабайт это 800 гигабит.

100 гигабайт это 800 гигабит. Тупо делим на 1 гигабит/сек и получаем 800 секунд, или около 13 минут 100% загрузки гигабитного канала. Если канал сотка - 130 минут, или 2 часа 10 мин. (очень грубо, скажем часа три - похоже на правду). Я ничего не напутал? Если считать на 8 часовой рабочий день это около 30% загруженности канала.
Я бы урезал пропускную для фтп протокола целиком, дабы толпа восторженных юзверей не мешала работе прочих сервисов. Затем до разумных пределов ограничил бы количество сессий фтп на юзера (скажем три), дабы особо ретивые юзеры не забили очередь пакетов своими запросами. Думаю после этого стандартная очередь разберется с юзерами автоматом, предоставляя им столько сервиса, сколько на данный момент возможно.

Особо ретивых юзерей предупредить устно, а по игнорированию предупреждения занести в "группу для наказания" с урезанной полосой. Вип клиентов обслуживать без ограничений. Как то так. Насколько в курсе профтп не умеет выделять минимально гарантированную полосу, и при урезании полосы юзер не получит качественного сервиса даже при свободном канале.

Еще пара велосипедов: 1) Тех

Еще пара велосипедов:
1) Тех кого надо ограничить пускать через проксю и уже в ней выставить ограничения.
2) Следить за логами фтп сервера и добавлять правила для шейпера )

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".