iptables - Изменение системных iptables
Новая версия с 2.0.
Синтаксис
- Iptables используется для настройки, обслуживания и проверки таблиц правил фильтрации пакетов IP в ядре Linux. Этот модуль не обрабатывает сохранение и/или загрузку правил, а только манипулирует текущими правилами, присутствующими в памяти. Это соответствует поведению команд «iptables» и «ip6tables», которые этот модуль использует внутри.
Параметры
| параметр | обязательно | по умолчанию | выбор | комментарии |
|---|---|---|---|---|
| действие (добавлено в 2.2)
| нет | append |
| Определяет, следует ли добавлять правило в конец или вставлять в начало. Если правило уже существует, цепочка не будет изменена. |
| цепочка | нет | Цепочка для обработки. Этот параметр может быть именем пользовательской цепочки или встроенной цепочкой: 'INPUT', 'FORWARD', 'OUTPUT', 'PREROUTING', 'POSTROUTING', 'SECMARK', 'CONNSECMARK'. | ||
| комментарий | нет | Указывает комментарий, который будет добавлен к правилу | ||
| ctstate | нет | ctstate — список состояний соединений для сопоставления в модуле conntrack. Возможные состояния: 'INVALID', 'NEW', 'ESTABLISHED', 'RELATED', 'UNTRACKED', 'SNAT', 'DNAT' | ||
| назначение | нет | Указание назначения. Адрес может быть именем сети, именем хоста, IP-адресом сети (с маской) или обычным IP-адресом. Имена хостов будут разрешены один раз перед отправкой правила в ядро. Обратите внимание, что указание любого имени для разрешения с помощью удалённого запроса, такого как DNS, — очень плохая идея. Маска может быть маской сети или обычным числом, указывающим количество единиц в левой части маски сети. Таким образом, маска 24 эквивалентна 255.255.255.0. Аргумент "!" перед указанием адреса инвертирует смысл адреса. | ||
| порт назначения | нет | Указание порта назначения или диапазона портов. Это может быть имя службы или номер порта. Также можно указать включающий диапазон в формате first:last. Если первый порт опущен, предполагается '0'; если последний опущен, предполагается '65535'. Если первый порт больше второго, они будут поменяны местами. | ||
| очистить (добавлено в 2.2)
| нет | Очищает указанную таблицу и цепочку всех правил. Если цепочка не указана, вся таблица очищается. Игнорирует все другие параметры. | ||
| фрагмент | нет | Это означает, что правило относится только ко второму и последующим фрагментам фрагментированных пакетов. Поскольку невозможно определить исходные или конечные порты такого пакета (или тип ICMP), такой пакет не будет соответствовать никаким правилам, в которых они указаны. Когда перед аргументом фрагмента стоит аргумент "!", правило будет соответствовать только головным фрагментам или нефрагментированным пакетам. | ||
| перейти | нет | Указывает, что обработка должна продолжить работу в пользовательской цепочке. В отличие от аргумента jump, return не продолжит обработку в этой цепочке, а вместо этого в цепочке, которая вызвала нас с помощью jump. | ||
| тип ICMP (добавлено в 2.2)
| нет | Это позволяет указать тип ICMP, который может быть числовым типом ICMP, парой тип/код или одним из имён типов ICMP, отображаемых командой 'iptables -p icmp -h' | ||
| входящий интерфейс | нет | Имя интерфейса, через который пакет был получен (только для пакетов, входящих в цепочки INPUT, FORWARD и PREROUTING). Если перед именем интерфейса стоит аргумент "!", смысл инвертируется. Если имя интерфейса оканчивается на "+", то соответствовать будет любой интерфейс, начинающийся с этого имени. Если этот параметр опущен, соответствовать будет любое имя интерфейса. | ||
| версия IP | нет | ipv4 |
| Версия протокола IP, к которой должно применяться это правило. |
| переход | нет | Это указывает цель правила; то есть, что делать, если пакет соответствует ему. Целью может быть пользовательская цепочка (кроме той, в которой находится это правило), одна из специальных встроенных целей, которые сразу же определяют судьбу пакета, или расширение (см. расширения ниже). Если этот параметр опущен в правиле (и параметр goto не используется), то соответствие правилу не повлияет на судьбу пакета, но счётчики правила будут увеличены. | ||
| ограничение | нет | Указывает максимальное среднее количество совпадений, разрешаемых в секунду. Число может явно указывать единицы измерения, используя `/second', `/minute', `/hour' или `/day', или их части (например, `5/second' то же, что и `5/s'). | ||
| burst ограничение (добавлено в 2.1)
| нет | Указывает максимальный burst перед вступлением в силу вышеуказанного ограничения. | ||
| совпадение | нет | Указывает совпадение для использования, то есть модуль расширения, который проверяет определённое свойство. Набор совпадений образует условие, при котором вызывается цель. Совпадения оцениваются по порядку, если они указаны как массив, и работают по принципу короткого замыкания, т.е. если одно расширение возвращает false, оценка прекратится. | ||
| исходящий интерфейс | нет | Имя интерфейса, через который пакет будет отправлен (для пакетов, входящих в цепочки FORWARD, OUTPUT и POSTROUTING). Если перед именем интерфейса стоит аргумент "!", смысл инвертируется. Если имя интерфейса оканчивается на "+", то соответствовать будет любой интерфейс, начинающийся с этого имени. Если этот параметр опущен, соответствовать будет любое имя интерфейса. | ||
| политика (добавлено в 2.2)
| нет | Устанавливает политику цепочки на заданную цель. Допустимые цели — ACCEPT, DROP, QUEUE, RETURN. Только встроенные цепочки могут иметь политики. Этот параметр требует параметра цепочки. Игнорирует все остальные параметры. | ||
| протокол | нет | Протокол правила или пакета для проверки. Указанный протокол может быть одним из tcp, udp, udplite, icmp, esp, ah, sctp или специальным ключевым словом "all", или это может быть числовое значение, представляющее один из этих протоколов или другой. Также разрешается имя протокола из /etc/protocols. Аргумент "!" перед протоколом инвертирует тест. Число ноль эквивалентно всем. "all" соответствует всем протоколам и принимается по умолчанию, когда этот параметр опущен. | ||
| reject_with (добавлено в 2.1)
| нет | Указывает тип пакета ошибки для возврата при отклонении. | ||
| установить счётчики | нет | Это позволяет администратору инициализировать счётчики пакетов и байтов правила (во время операций INSERT, APPEND, REPLACE). | ||
| установить метку DSCP (добавлено в 2.1)
| нет | Это позволяет указать метку DSCP, которая будет добавлена к пакетам. Она принимает целое или шестнадцатеричное значение. Взаимоисключающие с set_dscp_mark_class. | ||
| установить класс метки DSCP (добавлено в 2.1)
| нет | Это позволяет указать предопределённый класс DiffServ, который будет преобразован в соответствующую метку DSCP. Взаимоисключающие с set_dscp_mark. | ||
| источник | нет | Указание источника. Адрес может быть именем сети, именем хоста, IP-адресом сети (с маской) или обычным IP-адресом. Имена хостов будут разрешены один раз перед отправкой правила в ядро. Обратите внимание, что указание любого имени для разрешения с помощью удалённого запроса, такого как DNS, — очень плохая идея. Маска может быть маской сети или обычным числом, указывающим количество единиц в левой части маски сети. Таким образом, маска 24 эквивалентна 255.255.255.0. Аргумент "!" перед указанием адреса инвертирует смысл адреса. | ||
| порт источника | нет | Указание порта источника или диапазона портов. Это может быть имя службы или номер порта. Также можно указать включающий диапазон в формате first:last. Если первый порт опущен, предполагается '0'; если последний опущен, предполагается '65535'. Если первый порт больше второго, они будут поменяны местами. | ||
| состояние | нет | present |
| Указывает, должно ли правило быть отсутствующим или присутствовать. |
| таблица | нет | filter |
| Этот параметр указывает таблицу соответствия пакетов, на которой должна выполняться команда. Если в ядре настроена автоматическая загрузка модулей, будет предпринята попытка загрузить соответствующий модуль для этой таблицы, если он ещё не загружен. |
| tcp_flags (добавлено в 2.4)
| нет | Указание флагов TCP. tcp_flags ожидает словарь с двумя ключами "flags" и "flags_set". Список "flags" — это маска, список флагов, которые нужно проверить. Список "flags_set" указывает, какие из них должны быть установлены. Если один из двух значений отсутствует, опция --tcp-flags будет проигнорирована. | ||
| назначение для назначения (добавлено в 2.1)
| нет | Это указывает адрес назначения для использования с DNAT: без этого адрес назначения никогда не изменяется. | ||
| порты назначения | нет | Это указывает порт назначения или диапазон портов для использования: без этого порт назначения никогда не изменяется. Это применимо только в том случае, если правило также указывает один из следующих протоколов: tcp, udp, dccp или sctp. | ||
| источник для назначения (добавлено в 2.2)
| нет | Это указывает адрес источника для использования со SNAT: без этого адрес источника никогда не изменяется. | ||
| uid_владелец (добавлено в 2.1)
| нет | Указывает UID или имя пользователя для использования в правиле соответствия по владельцу. |
Примеры
# 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
# 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
# Set the policy for the INPUT chain to DROP
- iptables:
chain: INPUT
policy: DROP
Примечания
Примечание
- Этот модуль просто обрабатывает отдельные правила. Если вам нужны сложные цепочки правил, рекомендуется использовать шаблон файла восстановления iptables.
Статус
Этот модуль помечен как превью, что означает, что гарантии обратной совместимости интерфейса нет.
Информация о техническом обслуживании
Дополнительную информацию о поддержке этого модуля Red Hat можно найти в этом knowledge base article<https://access.redhat.com/articles/rhel-top-support-policies>
Для помощи в разработке модулей, если это вас интересует, пожалуйста, ознакомьтесь с Информация о сообществе и вклад, Тестирование Ansible и Разработка модулей.
© 2012–2018 Michael DeHaan
© 2018–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.4/iptables_module.html