Быть в курсе
Аватарка автора Галина Ашмарина
ИнструкцииОблако

Обзор и практическое использование Iptables

Обновлено: 23 января 2026

11 минут

Телеграм

ВКонтакте

Брандмауэр (или фаервол) — один из самых важных инструментов для настройки операционной системы и сетей, который помогает защитить систему от несанкционированного доступа извне. Фаервол фильтрует входящий трафик: принимает легитимные запросы и блокирует потенциально опасные. Существует множество брандмауэров, в число которых входит и Iptables.

Эта утилита позволяет контролировать прохождение сетевых пакетов, чтобы обеспечить безопасность и надежность системы.

Всё актуальное — в наших соцсетях. Подписывайтесь!

В статье мы расскажем об iptables: опишем структуру и принцип работы, процедуру установки и приведем примеры наиболее популярных правил.

Что такое Iptables

Iptables — это инструмент командной строки Linux, который предназначен для управления пакетными фильтрами ядра Netfilter. Iptables позволяет настраивать правила файервола (firewall) и контролирует прохождение сетевых пакетов на уровне ядра операционной системы.

История развития iptables началась в конце девяностых годов и связана с эволюцией механизмов межсетевых экранов в ядрах Linux. До появления iptables существовало несколько предшественников, включая ipchains и ipfwadm, которые постепенно уступили место iptables.

История появления iptables

До середины девяностых годов в Linux использовались механизмы брандмауэра, основанные на пространстве ядра, называемые ipfwadm. Однако ipfwadm был сложен в конфигурировании и масштабировании. Это привело к появлению ipchains.

Ipchains была представлена разработчиком Расти Расселом в 1998 году. Обновленная система позволяла применять цепочки правил и стала первой попыткой создать полноценный механизм управления сетевыми пакетами в Linux. Несмотря на преимущества, ipchains имела ряд ограничений, таких как отсутствие поддержки NAT и сложность работы с большими наборами правил.

После этого разработчики учли недостатки предыдущих версий и предложили новую идею — iptables. Этот проект начал развиваться в 1999 году. В его основу легла идея модульности и разделения функций на уровни — эти уровни впоследствии были названы таблицами. Это позволило расширить функционал утилиты и упростить ее поддержку.

Основное нововведение iptables заключалось в концепции таблиц и цепочек. Это помогло повысить производительность и сделать настройку межсетевых экранов значительно удобнее. Теперь администратор может создавать собственные правила фильтрации, преобразования адресов и другие действия в отдельных цепочках, расположенных в трех основных таблицах, — о них мы расскажем в следующем блоке.

Также с 2014-2015 года активно развивается nftables, который выступает полноценной заменой Iptables и по умолчанию включен в новые дистрибутивы Linux. Однако Iptables остается актуальным — при необходимости его можно включить на новых версиях ОС.

Источник: Freepik. В основу Iptables легла идея модульности и разделения функций на уровни

Как устроена Iptables

Iptables включает в себя три основных компонента:

  1. Таблицы
  2. Цепочки
  3. Правила

Рассмотрим каждый из них подробнее.

Таблицы (Tables)

Каждая таблица в Iptables имеет свое назначение в зависимости от задачи, которую нужно выполнить. Чаще всего используются пять основных таблиц:

  1. filter — для фильтрации трафика. В этой таблице принимается решение: разрешить доставку пакета или отклонить его.
  2. nat — для преобразования IP-адресов и номеров портов. Эта таблица применяется, если нужно изменить адресацию или перенаправить пакет на другой порт.
  3. mangle — для изменения полей заголовков IPv4-пакетов. Таблица mangle используется, если нужно:
    • назначить приоритет и его уровень,
    • изменить значение TTL,
    • добавить метки и многое другое.
  4. raw — для маркировки пакетов перед передачей их системе отслеживания соединений.
  5. security — для настройки правил мандатного контроля доступом. Также она используется для работы механизма SELinux.

Цепочки (Chains)

Цепочки в контексте Iptables — это наборы правил обработки пакетов. Каждая таблица (которые мы описали выше) состоит из цепочек.

Какие правила обработки пакетов существуют:

  • INPUT для обработки входящих пакетов;
  • OUTPUT для контроля исходящих пакетов;
  • FORWARD для управления пакетами, которые поступают в систему транзитом;
  • PREROUTING обрабатывает пакет перед его маршрутизацией;
  • POSTROUTING обрабатывает пакет после его маршрутизации.

Каждая таблица включает в себя разные комбинации цепочек. Например, последовательность цепочек в трех основных таблицах выглядит так:

filter nat mangle raw security
INPUT
FORWARD
OUTPUT
PREROUTING
POSTROUTING
PREROUTING
INPUT
FORWARD
OUTPUT
POSTROUTING
PREROUTING
OUTPUT
INPUT
FORWARD
OUTPUT

Правила (Rules)

Правило в iptables — это инструкция, которая определяет порядок действий над сетевыми пакетами. Эти инструкции используются для фильтрации, трансляции и обработки пакетов по заданным условиям.

Источник: Freepik. История развития iptables связана с эволюцией механизмов межсетевых экранов в ядрах Linux

Каждое правило включает в себя два основных компонента:

  1. Условия, которые определяют критерии отбора пакетов. Например, можно настроить фильтрацию:
    • по IP-адресам источников,
    • по номерам портов,
    • по IP-адресам назначения,
    • по маршруту пакета и другим критериям.
  1. Действие — оно описывает, что должно произойти с пакетом, который подходит под условия. Действия могут быть стандартными или специальными.

Под стандартными подразумеваются базовые операции с пакетами, например:

  • ACCEPT (принять),
  • DROP (удалить),
  • REJECT (отклонить) и многие другие.

Специальные действия расширяют функциональность благодаря дополнительным модулям ядра. С их помощью можно выполнять более сложные операции, такие как:

  • LOG (записать информацию о пакете в журнал);
  • MARK (присвоить пакету специальную метку);
  • QUEUE (передать пакет в пространство пользователя для обработки подходящим приложением);
  • TOS (изменить поле «Type Of Service» в заголовке пакета);
  • MASQUERADE (выполнить динамическое преобразование IP-адресов).

Установка Iptables

Iptables можно установить на ОС семейства Linux, если ядро операционной системы имеет версию 2.4 и выше. В качестве примера процедура установки будет описана для трех популярных операционных систем:

  1. Ubuntu
  2. Debian
  3. CentOS

Прежде чем установить Iptables, необходимо подключиться к серверу по протоколу SSH. Затем следуйте инструкции для вашей операционной системы.

В некоторых дистрибутивах Linux утилита Iptables присутствует по умолчанию. В этом можно убедиться, выполнив следующую команду:

iptables -V

В выводе отобразится версия утилиты. Однако, если Iptables не установлена, следуйте инструкции для вашей операционной системы.

Источник: Freepik. Правило в iptables определяет порядок действий над сетевыми пакетами

Ubuntu и Debian

Обновите пакеты:

sudo apt update && sudo apt upgrade

Установите Iptables с помощью одной из команд:

sudo apt install iptables

Также для корректной работы может понадобиться настройка поддержки старых правил и интерфейса ядра с новыми дистрибутивами Linux. Для этого поочередно выполните команды:

sudo apt install iptables-nft
sudo apt install iptables-legacy

CentOS

Обновите пакеты:

sudo dnf update && sudo yum upgrade

Установите Iptables с помощью одной из команд:

sudo dnf install iptables

Также для корректной работы может понадобиться настройка поддержки старых правил и интерфейса ядра с новыми дистрибутивами Linux. Для этого поочередно выполните команды:

sudo dnf install iptables-nft
sudo dnf install iptables-legacy

Источник: Freepik. Iptables можно установить в операционных системах семейства Linux, если версия ядра 2.4 или выше

Правила Iptables: синтаксис и примеры

Команда для создания правила в Iptables имеет следующий синтаксис:

iptables [-t table_name] [-A chain] rule target

Где:

  • table_name — название таблицы, в которую нужно добавить правило. Если в правиле не указана конкретная таблица, оно будет применено ко всем таблицам;
  • -A — опция добавления нового правила;
  • chain — название цепочки, в которую нужно добавить правило;
  • rule — одно или несколько условий, по которым проверяются пакеты;
  • target — действие для выполнения, если пакет соответствует заданным критериями.

Ниже мы рассмотрим примеры настройки правил Iptables по категориям.

Фильтрация

Команда Правило
sudo iptables -P INPUT ACCEPT Разрешить все входящие пакеты
sudo iptables -P INPUT DROP Запретить все входящие пакеты
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT Открыть порт SSH
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT Открыть порт для протокола HTTP
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT Открыть порт для протокола HTTPS
sudo iptables -A INPUT -s 123.123.123.123 -j DROP Запретить доступ по конкретному IP (вместо 123.123.123.123 укажите IP-адрес, для которого нужно ограничить доступ)
sudo iptables -A INPUT -s 123.123.123.123 -j ACCEPT Разрешить доступ только IP-адресам из белого списка (вместо 123.123.123.123 укажите IP-адрес из белого списка)
sudo iptables -A INPUT -m addrtype --dst-type BROADCAST -j DROP Заблокировать широковещательные сообщения
sudo iptables -A INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 50 -j REJECT Ограничить число одновременных подключений с одного IP. Здесь: 80 — порт, для которого нужно ограничить подключение; 50 — количество максимально возможных подключений

Управление состоянием соединений и ограничение скорости

Команда Правило
sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT Принять установленные соединения
sudo iptables -A INPUT -m conntrack --ctstate NEW -j DROP Отказаться от приема новых соединений
sudo iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW -m limit --limit 3/min -j ACCEPT Ограничить количество запросов по SSH

Преобразование адресов (NAT)

Команда Правило
sudo iptables -t nat -A POSTROUTING -o wan_iface -j MASQUERADE Переадресовать исходящие пакеты
sudo iptables -t nat -A PREROUTING -p tcp --dport 123 -j DNAT --to 123.123.123.123:321 Перевести порты (DNAT). Здесь:
123 — внешний порт,
123.123.123.123:321 — внутренний IP и внутренний порт

Маркеры и журналирование пакетов

Команда Правило
sudo iptables -A FORWARD -d 123.123.123.123 -j MARK --set-mark 1 Маркировать пакеты, которые идут на конкретный IP. Вместо 123.123.123.123 укажите IP-адрес, на который нужно отправлять маркированные пакеты
sudo iptables -A INPUT -p tcp --dport 123 -j LOG --log-prefix ""Blocked access attempt:"" Логировать попытки подключения к закрытому порту. Вместо 123 укажите закрытый порт

Удаление правил

Команда Правило
sudo iptables -F Обнулить существующие правила
sudo iptables -D INPUT -p tcp --dport 22 -j ACCEPT Удалить конкретное правило. В этом примере показано удаление правила по открытию 22 порта

Утилиту iptables можно настроить не только на домашнем ПК или рабочей станции — она также поддерживается и на удаленных серверах. Например, в Рег.облаке предоставляются готовые облачные решения с операционной системой на выбор. Для заказа доступны ОС последних версий, а это значит, что установка iptables не потребуется: к настройке правил можно приступить сразу после создания сервера.

Новые статьи