w Roman" class="ws12">
Использование команды iptables
С помощью команды iptables вносятся изменения в цепочки и наборы правил net-filter. Она позволяет создавать новые цепочки, удалять цепочки, выводить правила цепочки, очищать цепочки (то есть удалять все имеющиеся в цепочке правила) и устанавливать действие по умолчанию для цепочки. Команда iptables также дает возможность вставлять, добавлять, удалять и заменять правила в цепочке. У команды iptables большое число аргументов и параметров командной строки, но достаточно использовать ее несколько раз, и синтаксис становится вполне очевидным.
В этом разделе мы расскажем только о самых частых способах применения iptables, поэтому некоторые аргументы и параметры в последующем изложении опущены. В частности, мы не обсуждаем здесь цепочки, определяемые пользователем. Каждое правило фильтрации содержит параметры, описывающие пакеты, соответствующие правилу. Восклицательный знак (!) перед параметром инвертирует его. Например, параметр -dport 80 означает «соответствие порту назначения 80», а параметр -dport ! 80 означает «соответствует любому порту назначения, кроме 80».
Протокол пакета. Допускаются значения tcp, udp, icmp или all. Адрес источника пакета, указанный как имя хоста или IP-адрес. Маска задает необязательную маску сети литералом или количеством битов. Например, /255.255.255.0 задает маску сети литералом, /24 определяет количество единичных ведущих битов в маске. Адрес получателя пакета. Синтаксис такой же, как в адресе источника. Помимо параметров соответствия в каждом правиле netfilter должно быть указано действие, совершаемое над пакетом, соответствующим правилу. Обычно в правиле указывается, что пакет должен быть принят или отброшен, как описывается ниже.
Если для правила не задано действие, счетчики пакетов и байтов для этого правила наращиваются, а пакет передается следующему правилу в цепочке. Благодаря этому можно создавать правила, используемые только для статистики. При задании действия для правила применяется синтаксис: -j target Здесь -j происходит от слова «jump» («переход») и означает, что, если пакет соответствует этому правилу, происходит переход к действию с именем target. Значение target может быть следующим: ACCEPT Разрешить передачу или прием пакета. DROP Отбросить пакет.
QUEUE передать пакет на обработку программе в пространстве пользователя. RETURN При использовании в цепочке, определенной пользователем, осуществляется возврат пакета в «вызвавшую» цепочку. При использовании во встроенной цепочке пакет перебрасывается в ее конец, где над ним выполняется действие, установленное для цепочки по умолчанию. При использовании параметра можно задать в target имя цепочки, определенной пользователем, что дает возможность определять «вложенную цепочку» правил для обработки этого пакета. Как уже говорилось, target со значением RETURN используется для возврата пакета из цепочки, определенной пользователем, в «вызвавшую» цепочку.