Как ограничить количество подключений, которые пользователь может использовать?

У меня есть процесс greedyprocess который всегда запускается как пользователь greedyuser который использует слишком много соединений NAT. Они не используют слишком большую полосу пропускания, вместо этого они забивают таблицу NAT маршрутизатора. Можно ли ограничить пользователя, скажем, 1000 открытыми соединениями? Я бы предпочел какое-то ограничение ядра на количество сокетов, которые greedyuser может быть открытым.

Сервер работает под управлением Debian Jessie (стабильная ветка на момент написания). Нет, я не могу обойти NAT, поскольку я не контролирую маршрутизатор.

Ограничение на количество открытых файлов пользователя составляет 166 384, и я предпочитаю не уменьшать его, если это возможно. Я хочу ограничить количество открытых сокетов, но не все открытые файлы.

1 ответ

iptables с connlimit а также owner расширения могут помочь. Нечто подобное (не проверено):

iptables -A OUTPUT -m owner --uid-owner greedyuser -m connlimit --connlimit-above 1000 -j REJECT 
Другие вопросы по тегам