У меня есть это правило, которое работает для блокировки всех соединений для этой группы:
iptables -I OUTPUT 1 -m owner --gid-owner has-internet -j DROP
Однако я хочу изменить его, чтобы заблокировать все соединения, кроме этой группы. Я делаю это:
iptables -I OUTPUT 1 -m owner ! --gid-owner has-internet -j DROP
Но это не работает. Что я делаю не так?
Вам на самом деле нужны два правила для этого.
Во-первых, правило для приема трафика, поступающего из этой группы.
iptables -I OUTPUT 1 -m owner --gid-owner has-internet -j ACCEPT
Далее, правило для блокировки всего другого трафика.
iptables -I OUTPUT 2 -j DROP
(ПРИМЕЧАНИЕ: Если это ЕДИНСТВЕННЫЕ правила в вашей таблице iptables
'OUTPUT
, просто используйте -A OUTPUT
вместо -I OUTPUT #
, но делайте это по порядку. Вам не нужно использовать -I
, если у вас нет других правил в указанной таблице и вы пытаетесь вставить правила в другую точку таблицы, отличную от конца.)
Обратите внимание, что это также может привести к некоторым другим проблемам, таким как для вещей с root
, суперпользователем или другими учетными записями служб, которые пытаются установить связь, и могут создавать другие проблемы с сетевым подключением в самой системе, которые не имеют прямого отношения к доступу в Интернет.