Задача: необходимо ограничить доступ в сеть определённым пользователям.
Всё это делается очень просто с помощью iptables и его модуля owner, который позволяет проверять от кого(какого uid пользователя) ушёл пакет
Например запрещаем весь исходящий траффик пользователю 1001 везде, кроме локальной сети 192.168.0.0/24:
[cc lang="bash" line_numbers="false"]
# iptables -A OUTPUT -m owner --uid-owner 1001 ! -s 192.168.0.0/24 -j REJECT
[/cc]
Думаю понятно, что посмотреть соответствия имя пользователя - uid можно в /etc/passwd, например cat /etc/passwd
Подробнее, что умеет owner и iptables в целом можно найти тут
Это может использоваться как защита детей от интернета.
Очень важно чтоб модуль ядра owner был собран в ядре, в моём случае на генте пришлось пересобирать. Ошибка в этом случае такая:iptables v1.4.4: Couldn't load match `owner':/lib/xtables/libipt_owner.so: cannot open shared object file