Spec-Zone.ru › Ansible 2.7

iptables – Изменение таблиц iptables системы

Новая версия с 2.0.

  • Синопсис
  • Параметры
  • Примечания
  • Примеры
  • Статус

Синопсис

  • Iptables используется для настройки, обслуживания и проверки таблиц правил фильтрации пакетов IP в ядре Linux.
  • Этот модуль не обрабатывает сохранение и/или загрузку правил, а только манипулирует текущими правилами, присутствующими в памяти. Это поведение аналогично команде iptables и ip6tables, которую этот модуль использует внутренне.

Параметры

Параметр Варианты/Значения по умолчанию Комментарии
action
-
добавлен в 2.2
    Варианты:
  • append ←
  • insert
Определяет, должно ли правило добавляться в конец или вставляться в начало.
Если правило уже существует, цепочка не будет изменена.
chain
-
Цепочка, к которой применяется операция.
Этот параметр может представлять имя пользовательской цепочки или одну из встроенных цепочек: 'INPUT', 'FORWARD', 'OUTPUT', 'PREROUTING', 'POSTROUTING', 'SECMARK', 'CONNSECMARK'.
comment
-
Указывает комментарий, который будет добавлен к правилу.
ctstate
-
    Варианты:
  • DNAT
  • ESTABLISHED
  • INVALID
  • NEW
  • RELATED
  • SNAT
  • UNTRACKED
Значение по умолчанию:
[]
ctstate — список состояний соединений для сопоставления в модуле conntrack. Возможные состояния: 'INVALID', 'NEW', 'ESTABLISHED', 'RELATED', 'UNTRACKED', 'SNAT', 'DNAT'
destination
-
Указание пункта назначения.
Адрес может быть именем сети, именем хоста, IP-адресом сети (с маской) или простым IP-адресом.
Имена хостов будут разрешены один раз перед отправкой правила в ядро. Обратите внимание, что указание любого имени для разрешения с помощью удалённого запроса, такого как DNS, является очень плохой идеей.
Маска может быть как маской сети, так и простым числом, задающим количество единиц слева в маске сети. Таким образом, маска 24 эквивалентна 255.255.255.0. Аргумент "!" перед указанием адреса инвертирует смысл адреса.
destination_port
-
Указание номера порта назначения или диапазона портов. Это может быть имя службы или номер порта. Можно также указать включающий диапазон в формате first:last. Если первый порт опущен, предполагается '0'; если последний — '65535'. Если первый порт больше второго, они меняются местами. Это допустимо только если правило также указывает один из следующих протоколов: tcp, udp, dccp или sctp.
flush
-
добавлен в 2.2
Очищает указанную таблицу и цепочку всех правил.
Если цепочка не указана, очищается вся таблица.
Игнорирует все остальные параметры.
fragment
-
Означает, что правило относится только ко второму и последующим фрагментам фрагментированных пакетов. Поскольку нет способа узнать исходные или конечные порты такого пакета (или тип ICMP), такой пакет не будет соответствовать никаким правилам, которые их указывают. Когда аргумент "!" предшествует аргументу fragment, правило будет соответствовать только головным фрагментам или нефрагментированным пакетам.
goto
-
Указывает, что обработка должна продолжить в указанной пользователем цепочке. В отличие от аргумента jump, return не продолжит обработку в этой цепочке, а вместо этого в цепочке, которая вызвала нас через jump.
icmp_type
-
добавлен в 2.2
Позволяет указать тип ICMP, который может быть числовым типом ICMP, парой тип/код или одним из имён типов ICMP, показанных командой 'iptables -p icmp -h'
in_interface
-
Имя интерфейса, через который пакет был получен (только для пакетов, входящих в цепочки INPUT, FORWARD и PREROUTING). При использовании аргумента "!" перед именем интерфейса смысл инвертируется. Если имя интерфейса оканчивается на "+", то любой интерфейс, начинающийся с этого имени, будет соответствовать. Если этот параметр опущен, любому имени интерфейса будет соответствовать.
ip_version
-
    Варианты:
  • ipv4 ←
  • ipv6
Версия IP-протокола, к которой должно применяться это правило.
jump
-
Указывает цель правила, т.е. что делать, если пакет ему соответствует. Цель может быть пользовательской цепочкой (кроме той, в которой находится это правило), одной из специальных встроенных целей, которые сразу же определяют судьбу пакета, или расширением (см. РАСШИРЕНИЯ ниже). Если этот параметр опущен в правиле (и параметр goto не используется), то соответствие правилу не повлияет на судьбу пакета, но счётчики по правилу будут увеличены.
limit
-
Указывает максимальное среднее число соответствий в секунду.
Число может явно указывать единицы измерения, используя `/second', `/minute', `/hour' или `/day', или их части (например, `5/second' то же самое, что `5/s').
limit_burst
-
добавлен в 2.1
Указывает максимальный объём перед тем, как вступит в силу вышеупомянутый лимит.
log_prefix
-
добавлен в 2.5
Указывает текст лога для правила. Имеет смысл только с переходом LOG.
match
-
Значение по умолчанию:
[]
Указывает используемый модуль сопоставления, т.е. модуль расширения, проверяющий определённое свойство. Набор соответствий образует условие, при котором вызывается цель. Сопоставления оцениваются сначала до конца, если указаны как массив, и работают в режиме короткого замыкания, т.е. если одно расширение возвращает false, оценка прекратится.
out_interface
-
Имя интерфейса, через который пакет будет отправлен (для пакетов, входящих в цепочки FORWARD, OUTPUT и POSTROUTING). При использовании аргумента "!" перед именем интерфейса смысл инвертируется. Если имя интерфейса оканчивается на "+", то любой интерфейс, начинающийся с этого имени, будет соответствовать. Если этот параметр опущен, любому имени интерфейса будет соответствовать.
policy
-
добавлен в 2.2
    Варианты:
  • ACCEPT
  • DROP
  • QUEUE
  • RETURN
Устанавливает политику цепочки на заданную цель.
Только встроенные цепочки могут иметь политики.
Этот параметр требует параметр chain.
Игнорирует все остальные параметры.
protocol
-
Протокол правила или пакета для проверки.
Указанный протокол может быть одним из tcp, udp, udplite, icmp, esp, ah, sctp или специальным ключевым словом "all", или это может быть числовое значение, представляющее один из этих протоколов или другой. Допускается имя протокола из /etc/protocols. Аргумент "!" перед протоколом инвертирует проверку. Ноль эквивалентен "all". "all" соответствует всем протоколам и принимается по умолчанию, если этот параметр опущен.
reject_with
-
добавлен в 2.1
Указывает тип пакета ошибки для возврата при отклонении. Подразумевает "jump: REJECT"
rule_num
-
добавлен в 2.5
Вставить правило как заданное число правила. Работает только с action = 'insert'.
set_counters
-
Это позволяет администратору инициализировать счётчики пакетов и байтов правила (при операциях INSERT, APPEND, REPLACE).
set_dscp_mark
-
добавлен в 2.1
Позволяет указать метку DSCP, которая будет добавляться к пакетам. Принимает целое число или шестнадцатеричное значение.
Взаимоисключающее с set_dscp_mark_class.
set_dscp_mark_class
-
добавлен в 2.1
Позволяет указать предопределённый класс DiffServ, который будет преобразован в соответствующую метку DSCP.
Взаимоисключающее с set_dscp_mark.
источник
-
Спецификация источника.
Адрес может быть именем сети, именем хоста, сетевым IP-адресом (с маской) или обычным IP-адресом.
Имена хостов будут разрешены только один раз, прежде чем правило будет отправлено ядру. Обратите внимание, что указание любого имени для разрешения с удаленным запросом, таким как DNS, — очень плохая идея.
Маска может быть либо маской сети, либо обычным числом, указывающим количество 1 в левой части маски сети. Таким образом, маска 24 эквивалентна 255.255.255.0. Аргумент «!» перед указанием адреса инвертирует смысл адреса.
порт_источника
-
Спецификация порта источника или диапазона портов. Это может быть имя службы или номер порта. Также можно указать включающий диапазон, используя формат first:last. Если первый порт опущен, предполагается «0»; если последний опущен, предполагается «65535». Если первый порт больше второго, они будут поменены местами.
состояние
-
    Варианты:
  • отсутствует
  • наличие ←
Указывает, должно ли правило отсутствовать или присутствовать.
syn
-
добавлено в 2.5
    Варианты:
  • игнорировать ←
  • соответствие
  • отрицание
Это позволяет сопоставлять пакеты, у которых установлен бит SYN, а биты ACK и RST сброшены.
При отрицании это соответствует всем пакетам, у которых установлены биты RST или ACK.
таблица
-
    Варианты:
  • фильтр ←
  • nat
  • mangle
  • raw
  • security
Этот параметр указывает таблицу соответствия пакетов, на которой должен работать командный оператор. Если ядро настроено на автоматическую загрузку модулей, будет выполнена попытка загрузить соответствующий модуль для этой таблицы, если он еще не загружен.
tcp_flags
-
добавлено в 2.4
Значение по умолчанию:
{}
Спецификация флагов TCP.
tcp_flags ожидает словарь с двумя ключами flags и flags_set.
флаги
-
Список флагов, которые вы хотите проверить.
флаги_установлены
-
Флаги, которые должны быть установлены.
в_назначение
-
добавлено в 2.1
Это указывает адрес назначения для использования с DNAT.
Без этого адрес назначения никогда не изменяется.
порты_назначения
-
Это указывает порт назначения или диапазон портов для использования: без этого порт назначения никогда не изменяется. Это справедливо только в том случае, если правило также указывает один из следующих протоколов: tcp, udp, dccp или sctp.
из_источника
-
добавлено в 2.2
Это указывает адрес источника для использования с SNAT.
Без этого адрес источника никогда не изменяется.
uid_владелец
-
добавлено в 2.1
Указывает UID или имя пользователя для использования в правиле соответствия по владельцу. Начиная с Ansible 2.6, при добавлении префикса !, правило инвертируется, чтобы применить его ко всем пользователям, кроме указанного.

Примечания

Примечание

  • Этот модуль просто обрабатывает отдельные правила. Если вам нужны расширенные цепочки правил, рекомендуемым способом является шаблонизация файла восстановления iptables.

Примеры

# Block specific IP
- iptables:
    chain: INPUT
    source: 8.8.8.8
    jump: DROP
  become: yes

# Forward port 80 to 8600
- iptables:
    table: nat
    chain: PREROUTING
    in_interface: eth0
    protocol: tcp
    match: tcp
    destination_port: 80
    jump: REDIRECT
    to_ports: 8600
    comment: Redirect web traffic to port 8600
  become: yes

# Allow related and established connections
- iptables:
    chain: INPUT
    ctstate: ESTABLISHED,RELATED
    jump: ACCEPT
  become: yes

# Allow new incoming SYN packets on TCP port 22 (SSH).
- iptables:
    chain: INPUT
    protocol: tcp
    destination_port: 22
    ctstate: NEW
    syn: match
    jump: ACCEPT
    comment: Accept new SSH connections.

# Tag all outbound tcp packets with DSCP mark 8
- iptables:
    chain: OUTPUT
    jump: DSCP
    table: mangle
    set_dscp_mark: 8
    protocol: tcp

# Tag all outbound tcp packets with DSCP DiffServ class CS1
- iptables:
    chain: OUTPUT
    jump: DSCP
    table: mangle
    set_dscp_mark_class: CS1
    protocol: tcp

# Insert a rule on line 5
- iptables:
    chain: INPUT
    protocol: tcp
    destination_port: 8080
    jump: ACCEPT
    rule_num: 5

# Set the policy for the INPUT chain to DROP
- iptables:
    chain: INPUT
    policy: DROP

# Reject tcp with tcp-reset
- iptables:
    chain: INPUT
    protocol: tcp
    reject_with: tcp-reset
    ip_version: ipv4

# Set tcp flags
- iptables:
    chain: OUTPUT
    jump: DROP
    protocol: tcp
    tcp_flags:
      flags: ALL
      flags_set:
        - ACK
        - RST
        - SYN
        - FIN

Статус

  • Этот модуль не гарантирует обратную совместимость интерфейса. [превью]
  • Этот модуль поддерживается основной командой Ansible. [core]

Поддержка Red Hat

Дополнительную информацию о поддержке этого модуля Red Hat можно найти в этой статье базы знаний Red Hat.

Авторы

  • Linus Unnebäck (@LinusU) <linus@folkdatorn.se>
  • Sébastien DA ROCHA (@sebastiendarocha)

Подсказка

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

© 2012–2018 Michael DeHaan
© 2018–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.7/modules/iptables_module.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API