Что такое iptables?
iptables — это один из самых надёжных инструментов для настройки межсетевого экрана (firewall) в Linux. Он встроен прямо в ядро системы и работает на уровне сетевого стека. Это значит: когда к вашему серверу летит пакет — iptables решает, пустить его или нет. И хотя на первый взгляд он выглядит как «утилита для терминала», под капотом у него мощный механизм управления сетевым трафиком: от базовой фильтрации до сложных сценариев NAT, логирования и контроля доступа.
С 2001 года, начиная с версии ядра 2.4, iptables предустановлен во всех основных дистрибутивах Linux.
Работает iptables через командную строку, и для любых действий нужен root-доступ. Чтобы проверить, установлен ли инструмент в системе и какая версия используется, достаточно ввести:
Если вы видите ответ — всё готово к работе. Теперь можно переходить к правилам, цепочкам и таблицам — именно они задают логику работы firewall.
Зачем нужен iptables?
iptables — это многофункциональный инструмент, который помогает вам контролировать, что именно происходит с трафиком на сервере — от простых фильтров до гибкой маршрутизации и настройки качества обслуживания.
Вот ключевые задачи, которые решает iptables:
-
Фильтрация пакетов Можно настраивать как простую фильтрацию (по IP-адресам, портам, протоколам), так и отслеживать состояния соединений. Вы можете, например, разрешить только входящие ответы на исходящие запросы — и автоматически отбрасывать остальное.
-
Настройка NAT, PAT и NAPT
iptables позволяет настроить NAT (Network Address Translation) — трансляцию адресов, которая необходима, если у вас частная подсеть за роутером. PAT (Port Address Translation) и NAPT (Network Address and Port Translation) дают возможность «подвязывать» внешние запросы к конкретным внутренним машинам и портам. Это основа для работы практически всех домашних и корпоративных сетей.
-
Управление приоритетами через QoS
Хотите, чтобы VoIP-трафик шёл быстрее, чем фоновые обновления? iptables поддерживает метки и классификацию трафика, что позволяет реализовать управление приоритетами (Quality of Service). Это особенно полезно в системах с ограниченной пропускной способностью, где важно обеспечить стабильность критичных сервисов.
-
Изменение заголовков пакетов
Благодаря таблице mangle, iptables даёт возможность переписывать отдельные поля в заголовках IP-пакетов — например, менять TTL, маркировать трафик, настраивать маршруты по политике (policy routing) и многое другое. Это уже тонкая инженерия, но она даёт полный контроль над тем, как ваш трафик ведёт себя внутри сети.
Прежде чем переходить к более сложным функциям — таким как NAT или QoS, — важно чётко понимать, как работает фильтрация трафика на базовом уровне. Именно с этого начинается настройка firewall: с понимания разницы между stateless и stateful фильтрацией. От этого зависит, насколько точно вы сможете управлять входящими и исходящими соединениями.
Stateless и stateful фильтрация: в чём разница?
Stateless-фильтрация — это самый базовый уровень проверки. Она работает с каждым пакетом по отдельности, не вникая в контекст. Если в правиле указан IP, порт или протокол — iptables просто сверяет входящий пакет с этими условиями и сразу принимает решение: пропустить или отклонить. Это быстро и просто, но не даёт представления о том, к какому соединению относится пакет и в каком он состоянии.
Stateful-фильтрация идёт дальше. Она отслеживает полную картину соединения: знает, был ли установлен сеанс, какие пакеты уже прошли, и ожидается ли ответ. Благодаря встроенному механизму отслеживания состояний (connection tracking), iptables может отличать новые соединения от уже существующих и автоматически блокировать подозрительный трафик. Например, можно разрешить входящие ответы только на исходящие соединения, а всё остальное — отбрасывать.
Теперь подробнее поговорим о правилах и из чего они состоят
Правила (Rules)
В iptables всё строится на правилах — они задают конкретные условия обработки пакетов. Каждое правило — это своего рода инструкция для ядра Linux, объясняющая, что делать с пакетом, если он соответствует определённым признакам.
Структура любого правила включает три ключевых компонента:
1. Критерий (условие)
Это то, по чему система будет «опознавать» нужный трафик. В качестве критериев можно использовать:
- IP-адрес источника (-s 192.168.1.10)
- IP-адрес назначения (-d 10.0.0.1)
- Порт (—dport 22)
- Протокол (-p tcp, -p udp)
- Интерфейс (-i eth0, -o eth1)
- Состояние соединения (—state NEW, ESTABLISHED, RELATED)
Вы можете комбинировать сразу несколько условий, чтобы точно задать, какой трафик нужно обрабатывать.
2. Действие (target)
Когда критерий совпал, iptables должен выполнить какое-то действие. Это и есть «решение» правила. Основные варианты:
- ACCEPT — пропустить пакет
- DROP — молча отбросить
- REJECT — отклонить с уведомлением
- LOG — записать в лог (но не блокировать)
- RETURN — вернуться к предыдущей цепочке
- Специальные действия, например DNAT, SNAT, MASQUERADE — для работы с NAT
3. Счётчик
У каждого правила есть встроенный счётчик: он показывает, сколько раз правило сработало — сколько пакетов (и байт) оно обработало. Это удобно для отладки, мониторинга и понимания, какие правила действительно задействованы в работе.
Пример: блокировка SSH-доступа
Допустим, вы хотите заблокировать доступ к серверу по SSH (порт 22). Пример простого правила:
iptables -A INPUT -p tcp --dport 22 -j DROP
Что здесь происходит:
- -A INPUT — добавляем правило в цепочку входящих соединений
- -p tcp — фильтруем TCP-пакеты
- —dport 22 — применяем только к трафику, идущему на порт 22
- -j DROP — действие: отбросить пакет
Результат: любое входящее подключение по SSH будет тихо отклонено, без ответа. Удобно, если вы хотите закрыть доступ без лишнего шума.
(В конце статьи вы найдёте таблицу синтаксиса для iptables с подробным описанием действий)
Цепочки (Chains)
Чтобы iptables знал, когда и где применять определённые правила, все они объединяются в цепочки. Цепочка — это набор последовательных условий, через которые поэтапно проходит каждый сетевой пакет. В зависимости от того, на каком этапе обработки находится пакет, он попадает в одну из цепочек.
Цепочки бывают двух типов:
-
Базовые (встроенные) — всегда присутствуют по умолчанию
-
Пользовательские (custom) — создаются вручную пользователем для логической группировки
INPUT
Обрабатывает все входящие пакеты, направленные непосредственно на этот хост.
Если ваш сервер получает SSH-соединение, HTTP-запрос или пинг — этот трафик проходит через цепочку INPUT.
Пример: разрешить входящие соединения на порт 443 (HTTPS):
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
OUTPUT
Отвечает за все исходящие пакеты, которые отправляет сам хост.
Например, когда сервер делает запрос к внешнему API или скачивает обновления — эти пакеты проходят через OUTPUT.
Пример: запретить серверу отправлять любые DNS-запросы:
iptables -A OUTPUT -p udp --dport 53 -j DROP
FORWARD
Используется для транзитного трафика, который проходит через хост, но не предназначен ему напрямую.
Актуально, если сервер используется как роутер или NAT-шлюз. Всё, что перенаправляется — идёт через FORWARD.
Пример: разрешить форвардинг трафика между двумя интерфейсами:
iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT
PREROUTING
Эта цепочка применяется до маршрутизации, то есть до того, как ядро определит, куда направить пакет.
Обычно используется для изменения адреса назначения (DNAT). Полезно, если вы перенаправляете внешний трафик на внутренние ресурсы.
Пример: перенаправить HTTP-запросы на внутренний сервер:
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 192.168.1.100:80
POSTROUTING
Срабатывает после маршрутизации, перед тем как пакет покинет интерфейс.
Используется для маскарадинга (MASQUERADE) или изменения адреса источника (SNAT) — чтобы сервер подставлял нужный внешний IP.
Пример: скрыть локальные IP-адреса за внешним интерфейсом:
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Каждая цепочка обрабатывает пакеты строго в своей зоне ответственности, и важно правильно выбирать, куда вы добавляете правило. Ошибка в выборе цепочки может привести к тому, что правило не сработает, даже если оно написано корректно.
Все правила и цепочки в iptables не существуют сами по себе — они сгруппированы внутри таблиц. О них и поговорим ниже.
Таблицы (Tables)
Таблица — это логический контейнер, определяющий цель обработки трафика. В зависимости от задачи (фильтрация, трансляция, модификация и т.д.), iptables применяет соответствующую таблицу.
Каждая таблица содержит свои цепочки, и в одном правиле обязательно нужно понимать, в какой таблице вы работаете.
Вот основные таблицы, которые используются на практике:
filter
Это основная и самая часто используемая таблица. Именно она отвечает за принятие решений: пропускать, отклонять или блокировать трафик.
Если вы не указываете таблицу вручную, iptables по умолчанию работает именно с filter.
Цепочки внутри: INPUT, OUTPUT, FORWARD.
Пример:
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
nat
Таблица для настройки сетевой трансляции адресов (Network Address Translation).
Используется при перенаправлении портов, подмене исходного или конечного адреса. Без nat не обойтись при создании шлюзов, маршрутизаторов, прокси и организации доступа из внешнего мира к внутренним сервисам.
Цепочки внутри: PREROUTING, POSTROUTING, OUTPUT.
Типичные действия:
- SNAT — подмена источника
- DNAT — подмена назначения
- MASQUERADE — маскарадинг (динамический SNAT)
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
mangle
Эта таблица предназначена для глубокой настройки пакетов. Она позволяет модифицировать заголовки, маркировать трафик и использовать эти метки для дальнейшей маршрутизации или приоритизации.
Используется при настройке QoS, сложных схем маршрутизации, балансировке нагрузки и firewall’ах с политиками.
Цепочки внутри: PREROUTING, OUTPUT, INPUT, FORWARD, POSTROUTING.
Пример:
iptables -t mangle -A PREROUTING -p tcp --dport 80 -j MARK --set-mark 1
raw
Специализированная таблица, которая работает до включения механизма отслеживания соединений (connection tracking). Используется, если нужно исключить определённые пакеты из stateful-фильтрации, либо настроить приоритет обработки вручную.
Цепочки внутри: PREROUTING, OUTPUT.
Пример:
iptables -t raw -A PREROUTING -p icmp -j NOTRACK
security
Редко используемая таблица, связанная с метками SELinux. Она применяется для реализации дополнительных политик безопасности на уровне ядра. Используется в специализированных окружениях, где настроен SELinux и нужны ограничения доступа к ресурсам на основе контекста безопасности.
Цепочки внутри: INPUT, OUTPUT, FORWARD.
Как выбрать нужную таблицу?
- Если нужно просто разрешить или запретить трафик — используйте filter
- Хотите настроить переадресацию или NAT — используйте nat
- Нужно пометить трафик или изменить заголовки — берите mangle
- Хотите исключить соединение из трекинга — подходит raw
- Работаете с SELinux — используйте security
Правильный выбор таблицы — это залог того, что правило сработает так, как вы задумали. Поэтому всегда начинайте с вопроса: какой эффект вы хотите получить? — и уже от этого отталкивайтесь при выборе таблицы и цепочки.
Теперь, когда вы понимаете, как работают цепочки и в какие таблицы они сгруппированы, пора разобраться с тем, что именно делает iptables, когда пакет соответствует заданному правилу. На этом этапе в дело вступают действия, или по-другому — targets.
Действия (Targets)
Каждое правило в iptables заканчивается действием — это команда, которую ядро должно выполнить, если пакет прошёл все фильтры и условия правила. Именно действие определяет судьбу пакета: разрешить, заблокировать, переадресовать или просто записать в лог.
Вот основные типы действий, которые вы будете использовать чаще всего:
ACCEPT
Пропустить пакет дальше по стеку, как ни в чём не бывало. Это означает, что пакет прошёл проверку и может быть доставлен приложению или передан дальше по маршруту.
Используется для разрешения трафика.
Пример: разрешить входящие соединения на порт 80:
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
DROP
Молча отбросить пакет. Никаких уведомлений, никаких ICMP-ответов — пакет просто исчезает. Это самый строгий и «тихий» способ блокировки. Особенно полезен при защите от сканеров и брутфорса.
Пример: заблокировать пинг:
iptables -A INPUT -p icmp -j DROP
REJECT
Отбросить пакет, но уведомить отправителя, что соединение запрещено. В зависимости от протокола, может вернуться ICMP-сообщение или TCP RST. Используется, если хотите вести себя вежливо и явно показать, что соединение не разрешено.
Пример: отклонить вход по Telnet с уведомлением:
iptables -A INPUT -p tcp --dport 23 -j REJECT
LOG
Не влияет на прохождение пакета — просто записывает информацию о нём в системный журнал (/var/log/syslog или journalctl). Это удобно для мониторинга, отладки и анализа трафика. Часто используется вместе с DROP.
Пример: логировать все SSH-подключения:
iptables -A INPUT -p tcp --dport 22 -j LOG --log-prefix \"SSH attempt: \"
QUEUE
Передаёт пакет в пользовательское пространство — например, для обработки с помощью nfqueue или других внешних приложений. Это используется редко, но полезно в сложных конфигурациях, например, при интеграции с антивирусами, IDS/IPS или кастомной логикой.
RETURN
Прекращает выполнение текущей цепочки и возвращает управление в предыдущую (например, в базовую). Полезно при использовании пользовательских цепочек, когда вы хотите завершить их выполнение и передать обработку дальше.
Особые targets (для таблицы nat):
DNAT
Изменяет адрес назначения пакета. Используется в PREROUTING для переадресации внешнего трафика на внутренние сервисы.
Пример: перенаправить порт 80 на внутренний сервер:
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to 192.168.1.10:8080
SNAT
Изменяет адрес источника. Применяется в POSTROUTING, когда вы хотите, чтобы внешний мир видел другой IP-адрес, например, IP-шлюза.
Пример: подменить исходящий адрес:
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 203.0.113.1
MASQUERADE
Вариант SNAT, который автоматически подставляет внешний IP интерфейса. Удобен, когда IP динамический (например, при подключении через PPPoE или мобильный интернет).
Пример: маскарадинг для всей локальной сети:
bash
Копировать код
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Каждое действие играет свою роль в цепочке принятия решений. И чем точнее вы их используете — тем эффективнее работает ваш firewall. Главное — не путать контексты: ACCEPT и DROP работают в таблице filter, а SNAT и DNAT — только в nat.
Ну а теперь давайте закрепим на практике — как же использовать всю полученную информацию и как правильно составить правило в iptables?
Каждое правило в iptables строится по одному и тому же принципу: определить условия (фильтры) и назначить действие. Чем точнее вы зададите параметры — тем эффективнее будет защита или обработка трафика.
Вот пример:
Допустим, вы хотите заблокировать доступ к веб-серверу на порту 80 от конкретного IP-адреса — например, от 192.168.2.2.
iptables -A INPUT -p tcp -s 192.168.2.2 --dport 80 -j DROP
Давайте разберем по частям что здесь указано:
- -A INPUT
Добавляем правило в цепочку INPUT, то есть это правило будет применяться ко всем входящим соединениям, направленным к самому хосту.
- -p tcp
Указываем протокол — в данном случае TCP, потому что HTTP работает поверх TCP.
- -s 192.168.2.2
Это IP-адрес источника. Мы фильтруем только пакеты, отправленные с этого адреса.
- —dport 80
Порт назначения — 80, стандартный порт для HTTP. То есть правило будет применяться только к трафику, направленному к веб-серверу.
- -j DROP
Действие: отбросить пакет. Клиент не получит ответа, соединение будет просто прервано.
Если вы хотите отменить действие правила — не редактируйте его вручную. Вместо этого используйте тот же синтаксис, но замените -A (append) на -D (delete):
iptables -D INPUT -p tcp -s 192.168.2.2 --dport 80 -j DROP
Это удалит ранее добавленное правило. Именно поэтому важно документировать правила или сохранять их в файл — чтобы потом было легко откатить изменения.
Писать правила — несложно, если вы понимаете структуру и порядок аргументов. Но чтобы делать это уверенно и без ошибок, важно знать основной синтаксис iptables — какие ключи использовать, за что они отвечают, и как задаются условия фильтрации
Синтаксис iptables: ключи и параметры
Команда iptables строится по принципу:
таблица → цепочка → условия → действие.
Чаще всего таблица по умолчанию — filter, и её можно не указывать. Но остальные элементы всегда задаются явно.
Ниже — основные ключи, которые используются для управления правилами:
КлючНазначение-AДобавить правило в конец цепочки-DУдалить правило из цепочки-IВставить правило в начало цепочки или по индексу-RЗаменить правило по номеру-FОчистить цепочку (удалить все правила)-PЗадать политику по умолчанию для цепочки (ACCEPT/DROP)
Опции фильтрации трафика
Именно с помощью этих ключей вы описываете условия, по которым iptables будет определять, какому правилу соответствует пакет:
ОпцияНазначение`-p tcpudp-sIP-адрес источника-dIP-адрес назначения-iВходной сетевой интерфейс (например, eth0)-oВыходной сетевой интерфейс—dportПорт назначения (например, —dport 80 для HTTP)—sportПорт источника-jДействие, которое нужно выполнить (ACCEPT, DROP, LOG и т.д.)
Подведем итоги:
В этой статье мы разобрали:
- Что такое iptables и зачем он нужен
- Разницу между stateless- и stateful-фильтрацией
- Основы: как устроены правила, цепочки и таблицы
- Какие действия (targets) применяются к пакетам
- Как писать и редактировать правила
- Как работает синтаксис, ключи и параметры
Чем вам помогут эти навыки?
- Эффективно строить правила для защиты серверов и сетей
- Отлаживать и тестировать настройки без риска «запороть» соединение
- Быстро реагировать на сетевые угрозы — от DDoS до нежеланных сканеров
- Понимать, где и как в системе проходит каждый сетевой пакет
iptables — это инструмент, который действительно стоит освоить. Даже базовое владение позволяет существенно повысить уровень защиты и стабильности работы Linux-сервера. А по мере роста компетенций вы сможете выстраивать более сложные схемы маршрутизации, балансировки, фильтрации и приоритезации трафика.
Если вы хотите идти глубже — изучите nftables, firewalld или настройку fail2ban в связке с iptables. Но именно iptables остаётся классикой и фундаментом, с которого стоит начать.
<!DOCTYPE html>
<html dir="ltr" lang="ru-RU">
<head>
<meta charset="UTF-8" />
<meta http-equiv="x-ua-compatible" content="ie=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link rel="profile" href="http://gmpg.org/xfn/11" />
<title>Полное руководство по iptables: как настроить firewall в Linux OTUS</title>
<!-- All in One SEO 4.5.2.1 - aioseo.com -->
<meta name="description" content="Что такое iptables? iptables — это один из самых надёжных инструментов для настройки межсетевого экрана (firewall) в Linux. Он встроен прямо в ядро системы и работает на уровне сетевого стека. Это значит: когда к вашему серверу летит пакет — iptables решает, пустить его или нет. И хотя на первый взгляд он выглядит как «утилита для" />
<meta name="robots" content="max-image-preview:large" />
<link rel="canonical" href="https://otus.ru/journal/polnoe-rukovodstvo-po-iptables-kak-nastroit-firewall-v-linux/" />
<meta name="generator" content="All in One SEO (AIOSEO) 4.5.2.1" />
<script type="application/ld+json" class="aioseo-schema">
{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/otus.ru\/journal\/polnoe-rukovodstvo-po-iptables-kak-nastroit-firewall-v-linux\/#article","name":"\u041f\u043e\u043b\u043d\u043e\u0435 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u043f\u043e iptables: \u043a\u0430\u043a \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c firewall \u0432 Linux OTUS","headline":"\u041f\u043e\u043b\u043d\u043e\u0435 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u043f\u043e iptables: \u043a\u0430\u043a \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c firewall \u0432 Linux","author":{"@id":"https:\/\/otus.ru\/journal\/author\/nick-alex\/#author"},"publisher":{"@id":"https:\/\/otus.ru\/journal\/#organization"},"image":{"@type":"ImageObject","url":"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXfn4Ra-Amnn-8Al_O-3SkKlmSwOCYWFKMT1OvuJv39yEblMbNCPgbuJK5Etaf--wLd7lmZipVWpgPoB0lgQDvTKLGYvvecaSVhSPCPPWgfg9uM-Mr9gMaO9fLx1NOHKm910I8gN?key=Nn79-a1fLpqx26osKRYtvgOJ","@id":"https:\/\/otus.ru\/journal\/polnoe-rukovodstvo-po-iptables-kak-nastroit-firewall-v-linux\/#articleImage"},"datePublished":"2025-04-23T09:04:38+00:00","dateModified":"2025-04-23T09:04:41+00:00","inLanguage":"ru-RU","mainEntityOfPage":{"@id":"https:\/\/otus.ru\/journal\/polnoe-rukovodstvo-po-iptables-kak-nastroit-firewall-v-linux\/#webpage"},"isPartOf":{"@id":"https:\/\/otus.ru\/journal\/polnoe-rukovodstvo-po-iptables-kak-nastroit-firewall-v-linux\/#webpage"},"articleSection":"\u041f\u0440\u043e IT"},{"@type":"BreadcrumbList","@id":"https:\/\/otus.ru\/journal\/polnoe-rukovodstvo-po-iptables-kak-nastroit-firewall-v-linux\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/otus.ru\/journal\/#listItem","position":1,"name":"\u0413\u043b\u0430\u0432\u043d\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430","item":"https:\/\/otus.ru\/journal\/","nextItem":"https:\/\/otus.ru\/journal\/polnoe-rukovodstvo-po-iptables-kak-nastroit-firewall-v-linux\/#listItem"},{"@type":"ListItem","@id":"https:\/\/otus.ru\/journal\/polnoe-rukovodstvo-po-iptables-kak-nastroit-firewall-v-linux\/#listItem","position":2,"name":"\u041f\u043e\u043b\u043d\u043e\u0435 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u043f\u043e iptables: \u043a\u0430\u043a \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c firewall \u0432 Linux","previousItem":"https:\/\/otus.ru\/journal\/#listItem"}]},{"@type":"Organization","@id":"https:\/\/otus.ru\/journal\/#organization","name":"\u041e\u0442\u0443\u0441 \u043e\u043d\u043b\u0430\u0439\u043d-\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435","url":"https:\/\/otus.ru\/journal\/","sameAs":["https:\/\/www.youtube.com\/channel\/UCetgtvy93o3i3CvyGXKFU3g"],"contactPoint":{"@type":"ContactPoint","telephone":"+74999389202","contactType":"Customer Support"}},{"@type":"Person","@id":"https:\/\/otus.ru\/journal\/author\/nick-alex\/#author","url":"https:\/\/otus.ru\/journal\/author\/nick-alex\/","name":"Nicolay Alexandrov","image":{"@type":"ImageObject","@id":"https:\/\/otus.ru\/journal\/polnoe-rukovodstvo-po-iptables-kak-nastroit-firewall-v-linux\/#authorImage","url":"https:\/\/secure.gravatar.com\/avatar\/309881a64338fdabd56efb59623d7c03?s=96&d=mm&r=g","width":96,"height":96,"caption":"Nicolay Alexandrov"}},{"@type":"WebPage","@id":"https:\/\/otus.ru\/journal\/polnoe-rukovodstvo-po-iptables-kak-nastroit-firewall-v-linux\/#webpage","url":"https:\/\/otus.ru\/journal\/polnoe-rukovodstvo-po-iptables-kak-nastroit-firewall-v-linux\/","name":"\u041f\u043e\u043b\u043d\u043e\u0435 \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0441\u0442\u0432\u043e \u043f\u043e iptables: \u043a\u0430\u043a \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c firewall \u0432 Linux OTUS","description":"\u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 iptables? iptables \u2014 \u044d\u0442\u043e \u043e\u0434\u0438\u043d \u0438\u0437 \u0441\u0430\u043c\u044b\u0445 \u043d\u0430\u0434\u0451\u0436\u043d\u044b\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0434\u043b\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043c\u0435\u0436\u0441\u0435\u0442\u0435\u0432\u043e\u0433\u043e \u044d\u043a\u0440\u0430\u043d\u0430 (firewall) \u0432 Linux. \u041e\u043d \u0432\u0441\u0442\u0440\u043e\u0435\u043d \u043f\u0440\u044f\u043c\u043e \u0432 \u044f\u0434\u0440\u043e \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u0441\u0435\u0442\u0435\u0432\u043e\u0433\u043e \u0441\u0442\u0435\u043a\u0430. \u042d\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442: \u043a\u043e\u0433\u0434\u0430 \u043a \u0432\u0430\u0448\u0435\u043c\u0443 \u0441\u0435\u0440\u0432\u0435\u0440\u0443 \u043b\u0435\u0442\u0438\u0442 \u043f\u0430\u043a\u0435\u0442 \u2014 iptables \u0440\u0435\u0448\u0430\u0435\u0442, \u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0435\u0433\u043e \u0438\u043b\u0438 \u043d\u0435\u0442. \u0418 \u0445\u043e\u0442\u044f \u043d\u0430 \u043f\u0435\u0440\u0432\u044b\u0439 \u0432\u0437\u0433\u043b\u044f\u0434 \u043e\u043d \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043a\u0430\u043a \u00ab\u0443\u0442\u0438\u043b\u0438\u0442\u0430 \u0434\u043b\u044f","inLanguage":"ru-RU","isPartOf":{"@id":"https:\/\/otus.ru\/journal\/#website"},"breadcrumb":{"@id":"https:\/\/otus.ru\/journal\/polnoe-rukovodstvo-po-iptables-kak-nastroit-firewall-v-linux\/#breadcrumblist"},"author":{"@id":"https:\/\/otus.ru\/journal\/author\/nick-alex\/#author"},"creator":{"@id":"https:\/\/otus.ru\/journal\/author\/nick-alex\/#author"},"datePublished":"2025-04-23T09:04:38+00:00","dateModified":"2025-04-23T09:04:41+00:00"},{"@type":"WebSite","@id":"https:\/\/otus.ru\/journal\/#website","url":"https:\/\/otus.ru\/journal\/","name":"OTUS JOURNAL","description":"Blog about IT","inLanguage":"ru-RU","publisher":{"@id":"https:\/\/otus.ru\/journal\/#organization"}}]}
</script>
<!-- All in One SEO -->
<link rel='dns-prefetch' href='//otus.ru' />
<link rel='dns-prefetch' href='//fonts.googleapis.com' />
<link rel='stylesheet' id='wp-block-library-css' href='https://otus.ru/journal/wp-includes/css/dist/block-library/style.min.css?ver=6.4.7' type='text/css' media='all' />
<style id='classic-theme-styles-inline-css' type='text/css'>
/*! This file is auto-generated */
.wp-block-button__link{color:#fff;background-color:#32373c;border-radius:9999px;box-shadow:none;text-decoration:none;padding:calc(.667em + 2px) calc(1.333em + 2px);font-size:1.125em}.wp-block-file__button{background:#32373c;color:#fff;text-decoration:none}
</style>
<style id='global-styles-inline-css' type='text/css'>
body{--wp--preset--color--black: #000000;--wp--preset--color--cyan-bluish-gray: #abb8c3;--wp--preset--color--white: #ffffff;--wp--preset--color--pale-pink: #f78da7;--wp--preset--color--vivid-red: #cf2e2e;--wp--preset--color--luminous-vivid-orange: #ff6900;--wp--preset--color--luminous-vivid-amber: #fcb900;--wp--preset--color--light-green-cyan: #7bdcb5;--wp--preset--color--vivid-green-cyan: #00d084;--wp--preset--color--pale-cyan-blue: #8ed1fc;--wp--preset--color--vivid-cyan-blue: #0693e3;--wp--preset--color--vivid-purple: #9b51e0;--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple: linear-gradient(135deg,rgba(6,147,227,1) 0%,rgb(155,81,224) 100%);--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan: linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%);--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange: linear-gradient(135deg,rgba(252,185,0,1) 0%,rgba(255,105,0,1) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red: linear-gradient(135deg,rgba(255,105,0,1) 0%,rgb(207,46,46) 100%);--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray: linear-gradient(135deg,rgb(238,238,238) 0%,rgb(169,184,195) 100%);--wp--preset--gradient--cool-to-warm-spectrum: linear-gradient(135deg,rgb(74,234,220) 0%,rgb(151,120,209) 20%,rgb(207,42,186) 40%,rgb(238,44,130) 60%,rgb(251,105,98) 80%,rgb(254,248,76) 100%);--wp--preset--gradient--blush-light-purple: linear-gradient(135deg,rgb(255,206,236) 0%,rgb(152,150,240) 100%);--wp--preset--gradient--blush-bordeaux: linear-gradient(135deg,rgb(254,205,165) 0%,rgb(254,45,45) 50%,rgb(107,0,62) 100%);--wp--preset--gradient--luminous-dusk: linear-gradient(135deg,rgb(255,203,112) 0%,rgb(199,81,192) 50%,rgb(65,88,208) 100%);--wp--preset--gradient--pale-ocean: linear-gradient(135deg,rgb(255,245,203) 0%,rgb(182,227,212) 50%,rgb(51,167,181) 100%);--wp--preset--gradient--electric-grass: linear-gradient(135deg,rgb(202,248,128) 0%,rgb(113,206,126) 100%);--wp--preset--gradient--midnight: linear-gradient(135deg,rgb(2,3,129) 0%,rgb(40,116,252) 100%);--wp--preset--font-size--small: 13px;--wp--preset--font-size--medium: 20px;--wp--preset--font-size--large: 36px;--wp--preset--font-size--x-large: 42px;--wp--preset--spacing--20: 0.44rem;--wp--preset--spacing--30: 0.67rem;--wp--preset--spacing--40: 1rem;--wp--preset--spacing--50: 1.5rem;--wp--preset--spacing--60: 2.25rem;--wp--preset--spacing--70: 3.38rem;--wp--preset--spacing--80: 5.06rem;--wp--preset--shadow--natural: 6px 6px 9px rgba(0, 0, 0, 0.2);--wp--preset--shadow--deep: 12px 12px 50px rgba(0, 0, 0, 0.4);--wp--preset--shadow--sharp: 6px 6px 0px rgba(0, 0, 0, 0.2);--wp--preset--shadow--outlined: 6px 6px 0px -3px rgba(255, 255, 255, 1), 6px 6px rgba(0, 0, 0, 1);--wp--preset--shadow--crisp: 6px 6px 0px rgba(0, 0, 0, 1);}:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flow > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-flow > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-flow > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-constrained > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-constrained > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull)){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignwide{max-width: var(--wp--style--global--wide-size);}body .is-layout-flex{display: flex;}body .is-layout-flex{flex-wrap: wrap;align-items: center;}body .is-layout-flex > *{margin: 0;}body .is-layout-grid{display: grid;}body .is-layout-grid > *{margin: 0;}:where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;}:where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;}.has-black-color{color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-color{color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-color{color: var(--wp--preset--color--white) !important;}.has-pale-pink-color{color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-color{color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-color{color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-color{color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-color{color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-color{color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-color{color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-color{color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-color{color: var(--wp--preset--color--vivid-purple) !important;}.has-black-background-color{background-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-background-color{background-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-background-color{background-color: var(--wp--preset--color--white) !important;}.has-pale-pink-background-color{background-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-background-color{background-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-background-color{background-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-background-color{background-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-background-color{background-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-background-color{background-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-background-color{background-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-background-color{background-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-background-color{background-color: var(--wp--preset--color--vivid-purple) !important;}.has-black-border-color{border-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-border-color{border-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-border-color{border-color: var(--wp--preset--color--white) !important;}.has-pale-pink-border-color{border-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-border-color{border-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-border-color{border-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-border-color{border-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-border-color{border-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-border-color{border-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-border-color{border-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-border-color{border-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-border-color{border-color: var(--wp--preset--color--vivid-purple) !important;}.has-vivid-cyan-blue-to-vivid-purple-gradient-background{background: var(--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple) !important;}.has-light-green-cyan-to-vivid-green-cyan-gradient-background{background: var(--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan) !important;}.has-luminous-vivid-amber-to-luminous-vivid-orange-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange) !important;}.has-luminous-vivid-orange-to-vivid-red-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-orange-to-vivid-red) !important;}.has-very-light-gray-to-cyan-bluish-gray-gradient-background{background: var(--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray) !important;}.has-cool-to-warm-spectrum-gradient-background{background: var(--wp--preset--gradient--cool-to-warm-spectrum) !important;}.has-blush-light-purple-gradient-background{background: var(--wp--preset--gradient--blush-light-purple) !important;}.has-blush-bordeaux-gradient-background{background: var(--wp--preset--gradient--blush-bordeaux) !important;}.has-luminous-dusk-gradient-background{background: var(--wp--preset--gradient--luminous-dusk) !important;}.has-pale-ocean-gradient-background{background: var(--wp--preset--gradient--pale-ocean) !important;}.has-electric-grass-gradient-background{background: var(--wp--preset--gradient--electric-grass) !important;}.has-midnight-gradient-background{background: var(--wp--preset--gradient--midnight) !important;}.has-small-font-size{font-size: var(--wp--preset--font-size--small) !important;}.has-medium-font-size{font-size: var(--wp--preset--font-size--medium) !important;}.has-large-font-size{font-size: var(--wp--preset--font-size--large) !important;}.has-x-large-font-size{font-size: var(--wp--preset--font-size--x-large) !important;}
.wp-block-navigation a:where(:not(.wp-element-button)){color: inherit;}
:where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;}
:where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;}
.wp-block-pullquote{font-size: 1.5em;line-height: 1.6;}
</style>
<link rel='stylesheet' id='wbcr-comments-plus-url-span-css' href='https://otus.ru/journal/wp-content/plugins/clearfy/components/comments-plus/assets/css/url-span.css?ver=2.2.0' type='text/css' media='all' />
<link rel='stylesheet' id='wpel-style-css' href='https://otus.ru/journal/wp-content/plugins/wp-external-links/public/css/wpel.css?ver=2.59' type='text/css' media='all' />
<link rel='stylesheet' id='ez-toc-css' href='https://otus.ru/journal/wp-content/plugins/easy-table-of-contents/assets/css/screen.min.css?ver=2.0.61' type='text/css' media='all' />
<style id='ez-toc-inline-css' type='text/css'>
div#ez-toc-container .ez-toc-title {font-size: 120%;}div#ez-toc-container .ez-toc-title {font-weight: 500;}div#ez-toc-container ul li {font-size: 95%;}div#ez-toc-container nav ul ul li {font-size: 90%;}
.ez-toc-container-direction {direction: ltr;}.ez-toc-counter ul{counter-reset: item ;}.ez-toc-counter nav ul li a::before {content: counters(item, ".", decimal) ". ";display: inline-block;counter-increment: item;flex-grow: 0;flex-shrink: 0;margin-right: .2em; float: left; }.ez-toc-widget-direction {direction: ltr;}.ez-toc-widget-container ul{counter-reset: item ;}.ez-toc-widget-container nav ul li a::before {content: counters(item, ".", decimal) ". ";display: inline-block;counter-increment: item;flex-grow: 0;flex-shrink: 0;margin-right: .2em; float: left; }
</style>
<link rel='stylesheet' id='contentberg-fonts-css' href='https://fonts.googleapis.com/css?family=Roboto%3A400%2C500%2C700%7CPT+Serif%3A400%2C400i%2C600%7CIBM+Plex+Serif%3A500' type='text/css' media='all' />
<link rel='stylesheet' id='contentberg-core-css' href='https://otus.ru/journal/wp-content/themes/contentberg/style.css?ver=1.8.3' type='text/css' media='all' />
<link rel='stylesheet' id='contentberg-lightbox-css' href='https://otus.ru/journal/wp-content/themes/contentberg/css/lightbox.css?ver=1.8.3' type='text/css' media='all' />
<link rel='stylesheet' id='font-awesome-css' href='https://otus.ru/journal/wp-content/themes/contentberg/css/fontawesome/css/font-awesome.min.css?ver=1.8.3' type='text/css' media='all' />
<script type="text/javascript" id="breeze-prefetch-js-extra">
/* <![CDATA[ */
var breeze_prefetch = {"local_url":"https:\/\/otus.ru\/journal","ignore_remote_prefetch":"1","ignore_list":["\/wp-admin\/"]};
/* ]]> */
</script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/plugins/breeze/assets/js/js-front-end/breeze-prefetch-links.min.js" id="breeze-prefetch-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-includes/js/jquery/jquery.min.js" id="jquery-core-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-includes/js/jquery/jquery-migrate.min.js" id="jquery-migrate-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/lazysizes.js" id="lazysizes-js"></script>
<link rel="https://api.w.org/" href="https://otus.ru/journal/wp-json/" /><link rel="alternate" type="application/json" href="https://otus.ru/journal/wp-json/wp/v2/posts/11530" /><link rel='shortlink' href='https://otus.ru/journal/?p=11530' />
<link rel="alternate" type="application/json+oembed" href="https://otus.ru/journal/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fotus.ru%2Fjournal%2Fpolnoe-rukovodstvo-po-iptables-kak-nastroit-firewall-v-linux%2F" />
<link rel="alternate" type="text/xml+oembed" href="https://otus.ru/journal/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fotus.ru%2Fjournal%2Fpolnoe-rukovodstvo-po-iptables-kak-nastroit-firewall-v-linux%2F&format=xml" />
<script>var Sphere_Plugin = {"ajaxurl":"https:\/\/otus.ru\/journal\/wp-admin\/admin-ajax.php"};</script><link rel="icon" href="https://otus.ru/journal/wp-content/uploads/2020/11/cropped-OTUS_logo_OTUS-COMP-LOGO-WHITE-1-32x32.png" sizes="32x32" />
<link rel="icon" href="https://otus.ru/journal/wp-content/uploads/2020/11/cropped-OTUS_logo_OTUS-COMP-LOGO-WHITE-1-192x192.png" sizes="192x192" />
<link rel="apple-touch-icon" href="https://otus.ru/journal/wp-content/uploads/2020/11/cropped-OTUS_logo_OTUS-COMP-LOGO-WHITE-1-180x180.png" />
<meta name="msapplication-TileImage" content="https://otus.ru/journal/wp-content/uploads/2020/11/cropped-OTUS_logo_OTUS-COMP-LOGO-WHITE-1-270x270.png" />
<style type="text/css" id="wp-custom-css">
#menu-item-10406 .wpel-icon {
display: none;
}
#menu-item-10407 .wpel-icon {
display: none;
}
.otus-login-site a .wpel-icon {
display: none;
}
.menu-menju-navykov-container a .wpel-icon {
display: none;
}
.otus-login-site a
{
background: #ffd709;
border-radius: 12px;
color: #0f0f10;
font-size: 14px;
font-weight: 700;
line-height: 20px;
display: block;
text-align: center;
padding: 8px 25px;
}
.main-footer.dark {
background: linear-gradient(90deg, #a64fc5, #4f54e6);
border-color: transparent;
}
.main-footer.bold .copyright {
color: #fff;
}
.main-footer.bold .to-top i {
color: #fff;
}
.main-footer.bold .back-to-top {
color: #fff;
}
.nav__scroll {
overflow-x: auto;
-webkit-overflow-scrolling: touch;
}
.scrollable-menu .menu {
display: flex;
}
.nav__scroll
{
background: linear-gradient(90deg, #a64fc5, #4f54e6);
}
.scrollable-menu .menu .menu-item {
flex: 0 0 auto;
padding: 15px 15px;
}
.scrollable-menu .menu .menu-item a {
color: #fff;
}
.nav__scroll::-webkit-scrollbar{background-color:#fff;height:5px;}
.nav__scroll::-webkit-scrollbar-thumb{background-color:#dcdcdc;}
.nav__scroll::-webkit-scrollbar-track{-webkit-border-radius:0;border-radius:0;background-color:#fff;}/
body {
min-width: 320px;
}
.banner-click img {
margin: 0 auto;
display: block;
}
.banner-click {
cursor: pointer;
}
.banner-footer-area {
margin-bottom: 20px;
}
.banner-left-area {
margin-top: 40px;
} </style>
<!--Start VDZ Yandex Metrika Plugin-->
<!-- Yandex.Metrika counter --><script type="text/javascript" >(function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};m[i].l=1*new Date();k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})(window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");ym(34531570, "init", {clickmap:true, trackLinks:true, accurateTrackBounce:true, webvisor:true, trackHash:true, ecommerce:"dataLayer"});</script>
<noscript><div><img src="https://mc.yandex.ru/watch/34531570" style="position:absolute; left:-9999px;" alt="" /></div></noscript>
<!-- /Yandex.Metrika counter --><!--START ADD EVENTS FROM CF7--><script type='text/javascript'>document.addEventListener( 'wpcf7submit', function( event ) {
//event.detail.contactFormId;
if(ym){
//console.log(event.detail);
ym(34531570, 'reachGoal', 'VDZ_SEND_CONTACT_FORM_7');
ym(34531570, 'params', {
page_url: window.location.href,
status: event.detail.status,
locale: event.detail.contactFormLocale,
form_id: event.detail.contactFormId,
});
}
}, false );
</script><!--END ADD EVENTS FROM CF7-->
<!--End VDZ Yandex Metrika Plugin-->
</head>
<body class="post-template-default single single-post postid-11530 single-format-standard right-sidebar lazy-normal has-lb">
<div class="main-wrap">
<header id="main-head" class="main-head head-nav-below has-search-modal simple simple-boxed">
<div class="inner inner-head" data-sticky-bar="0">
<div class="wrap cf wrap-head">
<div class="left-contain">
<span class="mobile-nav"><i class="fa fa-bars"></i></span>
<div class="title">
<a href="https://otus.ru/journal/" title="OTUS JOURNAL" rel="home" data-wpel-link="internal">
<span class="text-logo"><img src="/journal/wp-content/themes/contentberg/img/logo_site.svg" alt="OTUS JOURNAL"></span>
</a>
</div>
</div>
<div class="navigation-wrap inline">
<nav class="navigation inline simple light" data-sticky-bar="0">
<div class="menu-rubriki-container"><ul id="menu-rubriki" class="menu"><li id="menu-item-109" class="menu-item menu-item-type-taxonomy menu-item-object-category current-post-ancestor current-menu-parent current-post-parent menu-cat-1 menu-item-109"><a href="https://otus.ru/journal/category/pro-it/" data-wpel-link="internal"><span>Про IT</span></a></li>
<li id="menu-item-113" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-cat-4 menu-item-113"><a href="https://otus.ru/journal/category/polza/" data-wpel-link="internal"><span>Полезное</span></a></li>
<li id="menu-item-114" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-cat-3 menu-item-114"><a href="https://otus.ru/journal/category/lifestyle/" data-wpel-link="internal"><span>Лайфстайл</span></a></li>
<li id="menu-item-10406" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10406"><a href="https://otus.ru/catalog/courses" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right"><span>Обучение</span><span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10407" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10407"><a href="https://otus.ru/about" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right"><span>Информация</span><span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
</ul></div> </nav>
</div>
<div class="actions">
<div class="otus-login-site">
<a href="https://otus.ru/login/" target="_blank" data-wpel-link="external" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Войти<span class="wpel-icon wpel-image wpel-icon-6"></span></a>
</div>
<a href="#" title="Search" class="search-link"><i class="fa fa-search"></i></a>
</div>
</div>
</div>
</header> <!-- .main-head -->
<div class="nav nav_disable nav_colored nav_transparent course-categories__nav nav__scroll ">
<div class="container wrap">
<div class="links inline simple light scrollable-menu">
<div class="menu-menju-navykov-container"><ul id="menu-menju-navykov" class="menu"><li id="menu-item-10413" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10413"><a href="https://otus.ru/categories/programming/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Программирование<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10414" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10414"><a href="https://otus.ru/categories/architecture/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Архитектура<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10415" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10415"><a href="https://otus.ru/categories/operations/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Инфраструктура<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10416" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10416"><a href="https://otus.ru/categories/information-security-courses/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Безопасность<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10417" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10417"><a href="https://otus.ru/categories/data-science/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Data Science<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10418" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10418"><a href="https://otus.ru/categories/gamedev/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">GameDev<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10419" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10419"><a href="https://otus.ru/categories/marketing-business/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Управление<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10420" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10420"><a href="https://otus.ru/categories/analytics/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Аналитика и анализ<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10421" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10421"><a href="https://otus.ru/categories/testing/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Тестирование<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
</ul></div> </div>
</div>
</div>
<div class="main wrap">
<div class="ts-row cf">
<div class="col-8 main-content cf">
<article id="post-11530" class="the-post post-11530 post type-post status-publish format-standard category-pro-it">
<header class="post-header the-post-header cf">
<div class="post-meta the-post-meta">
<span class="post-cat">
<a href="https://otus.ru/journal/category/pro-it/" class="category" data-wpel-link="internal">Про IT</a>
</span>
<h1 class="post-title">
Полное руководство по iptables: как настроить firewall в Linux
</h1>
<a href="https://otus.ru/journal/polnoe-rukovodstvo-po-iptables-kak-nastroit-firewall-v-linux/" class="date-link" data-wpel-link="internal"><time class="post-date">23 апреля, 2025</time></a>
</div>
<div class="featured">
</div>
</header><!-- .post-header -->
<div class="post-content description cf entry-content content-normal">
<div id="ez-toc-container" class="ez-toc-v2_0_61 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction">
<div class="ez-toc-title-container">
<p class="ez-toc-title " >Содержание</p>
<span class="ez-toc-title-toggle"><a href="#" class="ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle" aria-label="Toggle Table of Content"><span class="ez-toc-js-icon-con"><span class=""><span class="eztoc-hide" style="display:none;">Toggle</span><span class="ez-toc-icon-toggle-span"><svg style="fill: #999;color:#999" xmlns="http://www.w3.org/2000/svg" class="list-377408" width="20px" height="20px" viewBox="0 0 24 24" fill="none"><path d="M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z" fill="currentColor"></path></svg><svg style="fill: #999;color:#999" class="arrow-unsorted-368013" xmlns="http://www.w3.org/2000/svg" width="10px" height="10px" viewBox="0 0 24 24" version="1.2" baseProfile="tiny"><path d="M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z"/></svg></span></span></span></a></span></div>
<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-1" href="#%D0%97%D0%B0%D1%87%D0%B5%D0%BC_%D0%BD%D1%83%D0%B6%D0%B5%D0%BD_iptables" title="Зачем нужен iptables?">Зачем нужен iptables?</a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-2" href="#Stateless_%D0%B8_stateful_%D1%84%D0%B8%D0%BB%D1%8C%D1%82%D1%80%D0%B0%D1%86%D0%B8%D1%8F_%D0%B2_%D1%87%D1%91%D0%BC_%D1%80%D0%B0%D0%B7%D0%BD%D0%B8%D1%86%D0%B0" title="Stateless и stateful фильтрация: в чём разница?">Stateless и stateful фильтрация: в чём разница?</a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class="ez-toc-link ez-toc-heading-3" href="#%D0%9F%D1%80%D0%B0%D0%B2%D0%B8%D0%BB%D0%B0_Rules" title="Правила (Rules)">Правила (Rules)</a></li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class="ez-toc-link ez-toc-heading-4" href="#%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80_%D0%B1%D0%BB%D0%BE%D0%BA%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B0_SSH-%D0%B4%D0%BE%D1%81%D1%82%D1%83%D0%BF%D0%B0" title="Пример: блокировка SSH-доступа">Пример: блокировка SSH-доступа</a></li></ul></li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-5" href="#%D0%A6%D0%B5%D0%BF%D0%BE%D1%87%D0%BA%D0%B8_Chains" title="Цепочки (Chains)">Цепочки (Chains)</a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class="ez-toc-link ez-toc-heading-6" href="#INPUT" title="INPUT">INPUT</a></li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class="ez-toc-link ez-toc-heading-7" href="#OUTPUT" title="OUTPUT">OUTPUT</a></li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class="ez-toc-link ez-toc-heading-8" href="#FORWARD" title="FORWARD">FORWARD</a></li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class="ez-toc-link ez-toc-heading-9" href="#PREROUTING" title="PREROUTING">PREROUTING</a></li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class="ez-toc-link ez-toc-heading-10" href="#POSTROUTING" title="POSTROUTING">POSTROUTING</a></li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class="ez-toc-link ez-toc-heading-11" href="#nat" title="nat">nat</a></li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class="ez-toc-link ez-toc-heading-12" href="#mangle" title="mangle">mangle</a></li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class="ez-toc-link ez-toc-heading-13" href="#raw" title="raw">raw</a></li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class="ez-toc-link ez-toc-heading-14" href="#security" title="security">security</a></li></ul></li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-15" href="#%D0%9A%D0%B0%D0%BA_%D0%B2%D1%8B%D0%B1%D1%80%D0%B0%D1%82%D1%8C_%D0%BD%D1%83%D0%B6%D0%BD%D1%83%D1%8E_%D1%82%D0%B0%D0%B1%D0%BB%D0%B8%D1%86%D1%83" title="Как выбрать нужную таблицу?">Как выбрать нужную таблицу?</a></li></ul></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-16" href="#%D0%94%D0%B5%D0%B9%D1%81%D1%82%D0%B2%D0%B8%D1%8F_Targets" title="Действия (Targets)">Действия (Targets)</a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class="ez-toc-link ez-toc-heading-17" href="#ACCEPT" title="ACCEPT">ACCEPT</a></li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class="ez-toc-link ez-toc-heading-18" href="#DROP" title="DROP">DROP</a></li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class="ez-toc-link ez-toc-heading-19" href="#REJECT" title="REJECT">REJECT</a></li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class="ez-toc-link ez-toc-heading-20" href="#LOG" title="LOG">LOG</a></li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class="ez-toc-link ez-toc-heading-21" href="#QUEUE" title="QUEUE">QUEUE</a></li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class="ez-toc-link ez-toc-heading-22" href="#RETURN" title="RETURN">RETURN</a></li></ul></li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-23" href="#%D0%9E%D1%81%D0%BE%D0%B1%D1%8B%D0%B5_targets_%D0%B4%D0%BB%D1%8F_%D1%82%D0%B0%D0%B1%D0%BB%D0%B8%D1%86%D1%8B_nat" title="Особые targets (для таблицы nat):">Особые targets (для таблицы nat):</a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class="ez-toc-link ez-toc-heading-24" href="#DNAT" title="DNAT">DNAT</a></li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class="ez-toc-link ez-toc-heading-25" href="#SNAT" title="SNAT">SNAT</a></li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class="ez-toc-link ez-toc-heading-26" href="#MASQUERADE" title="MASQUERADE">MASQUERADE</a></li></ul></li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-27" href="#%D0%A1%D0%B8%D0%BD%D1%82%D0%B0%D0%BA%D1%81%D0%B8%D1%81_iptables_%D0%BA%D0%BB%D1%8E%D1%87%D0%B8_%D0%B8_%D0%BF%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80%D1%8B" title="Синтаксис iptables: ключи и параметры">Синтаксис iptables: ключи и параметры</a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class="ez-toc-link ez-toc-heading-28" href="#%D0%9E%D0%BF%D1%86%D0%B8%D0%B8_%D1%84%D0%B8%D0%BB%D1%8C%D1%82%D1%80%D0%B0%D1%86%D0%B8%D0%B8_%D1%82%D1%80%D0%B0%D1%84%D0%B8%D0%BA%D0%B0" title="Опции фильтрации трафика">Опции фильтрации трафика</a></li></ul></li></ul></li></ul></nav></div>
<p class="has-large-font-size"><strong>Что такое iptables?</strong></p>
<p>iptables — это один из самых надёжных инструментов для настройки межсетевого экрана (firewall) в Linux. Он встроен прямо в ядро системы и работает на уровне сетевого стека. Это значит: когда к вашему серверу летит пакет — iptables решает, пустить его или нет. И хотя на первый взгляд он выглядит как «утилита для терминала», под капотом у него мощный механизм управления сетевым трафиком: от базовой фильтрации до сложных сценариев NAT, логирования и контроля доступа.</p>
<p>С 2001 года, начиная с версии ядра 2.4, iptables предустановлен во всех основных дистрибутивах Linux. </p>
<p>Работает iptables через командную строку, и для любых действий нужен root-доступ. Чтобы проверить, установлен ли инструмент в системе и какая версия используется, достаточно ввести:</p>
<figure class="wp-block-image"><img decoding="async" src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXfn4Ra-Amnn-8Al_O-3SkKlmSwOCYWFKMT1OvuJv39yEblMbNCPgbuJK5Etaf--wLd7lmZipVWpgPoB0lgQDvTKLGYvvecaSVhSPCPPWgfg9uM-Mr9gMaO9fLx1NOHKm910I8gN?key=Nn79-a1fLpqx26osKRYtvgOJ" alt="Полное руководство по iptables: как настроить firewall в Linux"/></figure>
<p>Если вы видите ответ — всё готово к работе. Теперь можно переходить к правилам, цепочкам и таблицам — именно они задают логику работы firewall.</p>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%97%D0%B0%D1%87%D0%B5%D0%BC_%D0%BD%D1%83%D0%B6%D0%B5%D0%BD_iptables"></span><strong>Зачем нужен iptables?</strong><span class="ez-toc-section-end"></span></h2>
<p>iptables — это многофункциональный инструмент, который помогает вам контролировать, <strong>что именно происходит с трафиком на сервере</strong> — от простых фильтров до гибкой маршрутизации и настройки качества обслуживания.</p>
<p>Вот ключевые задачи, которые решает iptables:</p>
<ul>
<li><strong>Фильтрация пакетов </strong> Можно настраивать как простую фильтрацию (по IP-адресам, портам, протоколам), так и отслеживать состояния соединений. Вы можете, например, разрешить только входящие ответы на исходящие запросы — и автоматически отбрасывать остальное.</li>
<li><strong>Настройка NAT, PAT и NAPT</strong><strong><br></strong> iptables позволяет настроить NAT (Network Address Translation) — трансляцию адресов, которая необходима, если у вас частная подсеть за роутером. PAT (Port Address Translation) и NAPT (Network Address and Port Translation) дают возможность «подвязывать» внешние запросы к конкретным внутренним машинам и портам. Это основа для работы практически всех домашних и корпоративных сетей.</li>
<li><strong>Управление приоритетами через QoS</strong><strong><br></strong> Хотите, чтобы VoIP-трафик шёл быстрее, чем фоновые обновления? iptables поддерживает метки и классификацию трафика, что позволяет реализовать управление приоритетами (Quality of Service). Это особенно полезно в системах с ограниченной пропускной способностью, где важно обеспечить стабильность критичных сервисов.</li>
<li><strong>Изменение заголовков пакетов</strong><strong><br></strong> Благодаря таблице mangle, iptables даёт возможность переписывать отдельные поля в заголовках IP-пакетов — например, менять TTL, маркировать трафик, настраивать маршруты по политике (policy routing) и многое другое. Это уже тонкая инженерия, но она даёт полный контроль над тем, как ваш трафик ведёт себя внутри сети.</li>
</ul>
<p>Прежде чем переходить к более сложным функциям — таким как NAT или QoS, — важно чётко понимать, <strong>как работает фильтрация трафика на базовом уровне</strong>. Именно с этого начинается настройка firewall: с понимания разницы между <strong>stateless</strong> и <strong>stateful</strong> фильтрацией. От этого зависит, насколько точно вы сможете управлять входящими и исходящими соединениями.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="Stateless_%D0%B8_stateful_%D1%84%D0%B8%D0%BB%D1%8C%D1%82%D1%80%D0%B0%D1%86%D0%B8%D1%8F_%D0%B2_%D1%87%D1%91%D0%BC_%D1%80%D0%B0%D0%B7%D0%BD%D0%B8%D1%86%D0%B0"></span><strong>Stateless и stateful фильтрация: в чём разница?</strong><span class="ez-toc-section-end"></span></h3>
<p><strong>Stateless-фильтрация</strong> — это самый базовый уровень проверки. Она работает с каждым пакетом по отдельности, не вникая в контекст. Если в правиле указан IP, порт или протокол — iptables просто сверяет входящий пакет с этими условиями и сразу принимает решение: пропустить или отклонить. Это быстро и просто, но не даёт представления о том, к какому соединению относится пакет и в каком он состоянии.</p>
<p><strong>Stateful-фильтрация</strong> идёт дальше. Она отслеживает полную картину соединения: знает, был ли установлен сеанс, какие пакеты уже прошли, и ожидается ли ответ. Благодаря встроенному <strong>механизму отслеживания состояний (connection tracking)</strong>, iptables может отличать новые соединения от уже существующих и автоматически блокировать подозрительный трафик. Например, можно разрешить входящие ответы только на исходящие соединения, а всё остальное — отбрасывать.</p>
<p>Теперь подробнее поговорим о правилах и из чего они состоят</p>
<h4 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9F%D1%80%D0%B0%D0%B2%D0%B8%D0%BB%D0%B0_Rules"></span><strong>Правила (Rules)</strong><span class="ez-toc-section-end"></span></h4>
<p>В iptables всё строится на правилах — они задают конкретные условия обработки пакетов. Каждое правило — это своего рода <strong>инструкция для ядра Linux</strong>, объясняющая, что делать с пакетом, если он соответствует определённым признакам.</p>
<p>Структура любого правила включает три ключевых компонента:</p>
<p><strong>1. Критерий (условие)</strong><strong><br></strong>Это то, по чему система будет «опознавать» нужный трафик. В качестве критериев можно использовать:</p>
<ul>
<li>IP-адрес источника (-s 192.168.1.10)</li>
<li>IP-адрес назначения (-d 10.0.0.1)</li>
<li>Порт (—dport 22)</li>
<li>Протокол (-p tcp, -p udp)</li>
<li>Интерфейс (-i eth0, -o eth1)</li>
<li>Состояние соединения (—state NEW, ESTABLISHED, RELATED)</li>
</ul>
<p>Вы можете комбинировать сразу несколько условий, чтобы точно задать, какой трафик нужно обрабатывать.</p>
<p><strong>2. Действие (target)</strong><strong><br></strong>Когда критерий совпал, iptables должен выполнить какое-то действие. Это и есть «решение» правила. Основные варианты:</p>
<ul>
<li>ACCEPT — пропустить пакет</li>
<li>DROP — молча отбросить</li>
<li>REJECT — отклонить с уведомлением</li>
<li>LOG — записать в лог (но не блокировать)</li>
<li>RETURN — вернуться к предыдущей цепочке</li>
<li>Специальные действия, например DNAT, SNAT, MASQUERADE — для работы с NAT</li>
</ul>
<p><strong>3. Счётчик</strong><strong><br></strong>У каждого правила есть встроенный счётчик: он показывает, сколько раз правило сработало — сколько пакетов (и байт) оно обработало. Это удобно для отладки, мониторинга и понимания, какие правила действительно задействованы в работе.</p>
<h4 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80_%D0%B1%D0%BB%D0%BE%D0%BA%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B0_SSH-%D0%B4%D0%BE%D1%81%D1%82%D1%83%D0%BF%D0%B0"></span><strong>Пример: блокировка SSH-доступа</strong><span class="ez-toc-section-end"></span></h4>
<p>Допустим, вы хотите заблокировать доступ к серверу по SSH (порт 22). Пример простого правила:</p>
<p><code>iptables -A INPUT -p tcp --dport 22 -j DROP</code></p>
<p>Что здесь происходит:</p>
<ul>
<li>-A INPUT — добавляем правило в цепочку входящих соединений</li>
<li>-p tcp — фильтруем TCP-пакеты</li>
<li>—dport 22 — применяем только к трафику, идущему на порт 22</li>
<li>-j DROP — действие: отбросить пакет</li>
</ul>
<p>Результат: любое входящее подключение по SSH будет тихо отклонено, без ответа. Удобно, если вы хотите закрыть доступ без лишнего шума.</p>
<p>(В конце статьи вы найдёте таблицу синтаксиса для iptables с подробным описанием действий)</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="%D0%A6%D0%B5%D0%BF%D0%BE%D1%87%D0%BA%D0%B8_Chains"></span><strong>Цепочки (Chains)</strong><span class="ez-toc-section-end"></span></h3>
<p>Чтобы iptables знал, когда и где применять определённые правила, все они объединяются в <strong>цепочки</strong>. Цепочка — это <strong>набор последовательных условий</strong>, через которые поэтапно проходит каждый сетевой пакет. В зависимости от того, на каком этапе обработки находится пакет, он попадает в одну из цепочек.</p>
<p>Цепочки бывают двух типов:</p>
<ul>
<li><strong>Базовые (встроенные)</strong> — всегда присутствуют по умолчанию </li>
<li><strong>Пользовательские (custom)</strong> — создаются вручную пользователем для логической группировки</li>
</ul>
<h4 class="wp-block-heading"><span class="ez-toc-section" id="INPUT"></span><strong>INPUT</strong><span class="ez-toc-section-end"></span></h4>
<p>Обрабатывает <strong>все входящие пакеты</strong>, направленные <strong>непосредственно на этот хост</strong>.<br>Если ваш сервер получает SSH-соединение, HTTP-запрос или пинг — этот трафик проходит через цепочку INPUT.</p>
<p>Пример: разрешить входящие соединения на порт 443 (HTTPS):</p>
<p><code>iptables -A INPUT -p tcp --dport 443 -j ACCEPT</code></p>
<h4 class="wp-block-heading"><span class="ez-toc-section" id="OUTPUT"></span><strong>OUTPUT</strong><span class="ez-toc-section-end"></span></h4>
<p>Отвечает за <strong>все исходящие пакеты</strong>, которые <strong>отправляет сам хост</strong>.<br>Например, когда сервер делает запрос к внешнему API или скачивает обновления — эти пакеты проходят через OUTPUT.</p>
<p>Пример: запретить серверу отправлять любые DNS-запросы:</p>
<p><code>iptables -A OUTPUT -p udp --dport 53 -j DROP</code></p>
<h4 class="wp-block-heading"><span class="ez-toc-section" id="FORWARD"></span><strong>FORWARD</strong><span class="ez-toc-section-end"></span></h4>
<p>Используется для <strong>транзитного трафика</strong>, который проходит <strong>через хост</strong>, но не предназначен ему напрямую.<br>Актуально, если сервер используется как роутер или NAT-шлюз. Всё, что перенаправляется — идёт через FORWARD.</p>
<p>Пример: разрешить форвардинг трафика между двумя интерфейсами:</p>
<p><code>iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT</code></p>
<h4 class="wp-block-heading"><span class="ez-toc-section" id="PREROUTING"></span><strong>PREROUTING</strong><span class="ez-toc-section-end"></span></h4>
<p>Эта цепочка применяется <strong>до маршрутизации</strong>, то есть до того, как ядро определит, куда направить пакет.<br>Обычно используется для <strong>изменения адреса назначения (DNAT)</strong>. Полезно, если вы перенаправляете внешний трафик на внутренние ресурсы.</p>
<p>Пример: перенаправить HTTP-запросы на внутренний сервер:</p>
<p><code>iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 192.168.1.100:80</code></p>
<h4 class="wp-block-heading"><span class="ez-toc-section" id="POSTROUTING"></span><strong>POSTROUTING</strong><span class="ez-toc-section-end"></span></h4>
<p>Срабатывает <strong>после маршрутизации</strong>, перед тем как пакет покинет интерфейс.<br>Используется для <strong>маскарадинга (MASQUERADE)</strong> или изменения адреса источника (SNAT) — чтобы сервер подставлял нужный внешний IP.</p>
<p>Пример: скрыть локальные IP-адреса за внешним интерфейсом:</p>
<p><code>iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE</code></p>
<p>Каждая цепочка обрабатывает пакеты строго <strong>в своей зоне ответственности</strong>, и важно правильно выбирать, куда вы добавляете правило. Ошибка в выборе цепочки может привести к тому, что правило не сработает, даже если оно написано корректно.</p>
<p>Все правила и цепочки в iptables не существуют сами по себе — они сгруппированы внутри <strong>таблиц</strong>. О них и поговорим ниже.</p>
<p><strong>Таблицы (Tables)</strong></p>
<p>Таблица — это логический контейнер, определяющий <strong>цель обработки трафика</strong>. В зависимости от задачи (фильтрация, трансляция, модификация и т.д.), iptables применяет соответствующую таблицу.</p>
<p>Каждая таблица содержит <strong>свои цепочки</strong>, и в одном правиле обязательно нужно понимать, в какой таблице вы работаете.</p>
<p>Вот основные таблицы, которые используются на практике:</p>
<p><strong>filter</strong></p>
<p>Это <strong>основная и самая часто используемая таблица</strong>. Именно она отвечает за принятие решений: <strong>пропускать, отклонять или блокировать трафик</strong>.</p>
<p>Если вы не указываете таблицу вручную, iptables по умолчанию работает именно с filter.<br>Цепочки внутри: INPUT, OUTPUT, FORWARD.</p>
<p>Пример:</p>
<p><code>iptables -A INPUT -p tcp --dport 22 -j ACCEPT</code></p>
<h4 class="wp-block-heading"><span class="ez-toc-section" id="nat"></span><strong>nat</strong><span class="ez-toc-section-end"></span></h4>
<p>Таблица для настройки <strong>сетевой трансляции адресов (Network Address Translation)</strong>.<br>Используется при перенаправлении портов, подмене исходного или конечного адреса. Без nat не обойтись при создании шлюзов, маршрутизаторов, прокси и организации доступа из внешнего мира к внутренним сервисам.</p>
<p>Цепочки внутри: PREROUTING, POSTROUTING, OUTPUT.</p>
<p>Типичные действия:</p>
<ul>
<li>SNAT — подмена источника</li>
<li>DNAT — подмена назначения</li>
<li>MASQUERADE — маскарадинг (динамический SNAT)</li>
</ul>
<p><code>iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE</code></p>
<h4 class="wp-block-heading"><span class="ez-toc-section" id="mangle"></span><strong>mangle</strong><span class="ez-toc-section-end"></span></h4>
<p>Эта таблица предназначена для <strong>глубокой настройки пакетов</strong>. Она позволяет модифицировать заголовки, маркировать трафик и использовать эти метки для дальнейшей маршрутизации или приоритизации.</p>
<p>Используется при настройке <strong>QoS</strong>, сложных схем маршрутизации, балансировке нагрузки и firewall’ах с политиками.</p>
<p>Цепочки внутри: PREROUTING, OUTPUT, INPUT, FORWARD, POSTROUTING.</p>
<p>Пример:</p>
<p><code>iptables -t mangle -A PREROUTING -p tcp --dport 80 -j MARK --set-mark 1</code></p>
<h4 class="wp-block-heading"><span class="ez-toc-section" id="raw"></span><strong>raw</strong><span class="ez-toc-section-end"></span></h4>
<p>Специализированная таблица, которая <strong>работает до включения механизма отслеживания соединений (connection tracking)</strong>. Используется, если нужно <strong>исключить определённые пакеты из stateful-фильтрации</strong>, либо настроить приоритет обработки вручную.</p>
<p>Цепочки внутри: PREROUTING, OUTPUT.</p>
<p>Пример:</p>
<p><code>iptables -t raw -A PREROUTING -p icmp -j NOTRACK</code></p>
<h4 class="wp-block-heading"><span class="ez-toc-section" id="security"></span><strong>security</strong><span class="ez-toc-section-end"></span></h4>
<p>Редко используемая таблица, связанная с <strong>метками SELinux</strong>. Она применяется для реализации <strong>дополнительных политик безопасности на уровне ядра</strong>. Используется в специализированных окружениях, где настроен SELinux и нужны ограничения доступа к ресурсам на основе контекста безопасности.</p>
<p>Цепочки внутри: INPUT, OUTPUT, FORWARD.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9A%D0%B0%D0%BA_%D0%B2%D1%8B%D0%B1%D1%80%D0%B0%D1%82%D1%8C_%D0%BD%D1%83%D0%B6%D0%BD%D1%83%D1%8E_%D1%82%D0%B0%D0%B1%D0%BB%D0%B8%D1%86%D1%83"></span><strong>Как выбрать нужную таблицу?</strong><span class="ez-toc-section-end"></span></h3>
<ul>
<li>Если нужно просто разрешить или запретить трафик — используйте <strong>filter</strong></li>
<li>Хотите настроить переадресацию или NAT — используйте <strong>nat</strong></li>
<li>Нужно пометить трафик или изменить заголовки — берите <strong>mangle</strong></li>
<li>Хотите исключить соединение из трекинга — подходит <strong>raw</strong></li>
<li>Работаете с SELinux — используйте <strong>security</strong></li>
</ul>
<p>Правильный выбор таблицы — это залог того, что правило сработает так, как вы задумали. Поэтому всегда начинайте с вопроса: <strong>какой эффект вы хотите получить?</strong> — и уже от этого отталкивайтесь при выборе таблицы и цепочки.</p>
<p>Теперь, когда вы понимаете, как работают <strong>цепочки</strong> и в какие <strong>таблицы</strong> они сгруппированы, пора разобраться с тем, <strong>что именно делает iptables, когда пакет соответствует заданному правилу</strong>. На этом этапе в дело вступают <strong>действия</strong>, или по-другому — <strong>targets</strong>.</p>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%94%D0%B5%D0%B9%D1%81%D1%82%D0%B2%D0%B8%D1%8F_Targets"></span><strong>Действия (Targets)</strong><span class="ez-toc-section-end"></span></h2>
<p>Каждое правило в iptables заканчивается действием — это команда, которую ядро должно выполнить, если пакет прошёл все фильтры и условия правила. Именно <strong>действие определяет судьбу пакета</strong>: разрешить, заблокировать, переадресовать или просто записать в лог.</p>
<p>Вот основные типы действий, которые вы будете использовать чаще всего:</p>
<h4 class="wp-block-heading"><span class="ez-toc-section" id="ACCEPT"></span><strong>ACCEPT</strong><span class="ez-toc-section-end"></span></h4>
<p>Пропустить пакет дальше по стеку, как ни в чём не бывало. Это означает, что пакет прошёл проверку и может быть доставлен приложению или передан дальше по маршруту.<br>Используется для разрешения трафика.</p>
<p><strong>Пример:</strong> разрешить входящие соединения на порт 80:</p>
<p><code>iptables -A INPUT -p tcp --dport 80 -j ACCEPT</code></p>
<h4 class="wp-block-heading"><span class="ez-toc-section" id="DROP"></span><strong>DROP</strong><span class="ez-toc-section-end"></span></h4>
<p>Молча отбросить пакет. Никаких уведомлений, никаких ICMP-ответов — пакет просто исчезает. Это самый строгий и «тихий» способ блокировки. Особенно полезен при защите от сканеров и брутфорса.</p>
<p><strong>Пример:</strong> заблокировать пинг:</p>
<p><code>iptables -A INPUT -p icmp -j DROP</code></p>
<h4 class="wp-block-heading"><span class="ez-toc-section" id="REJECT"></span><strong>REJECT</strong><span class="ez-toc-section-end"></span></h4>
<p>Отбросить пакет, но <strong>уведомить отправителя</strong>, что соединение запрещено. В зависимости от протокола, может вернуться ICMP-сообщение или TCP RST. Используется, если хотите вести себя вежливо и явно показать, что соединение не разрешено.</p>
<p><strong>Пример:</strong> отклонить вход по Telnet с уведомлением:</p>
<p><code>iptables -A INPUT -p tcp --dport 23 -j REJECT</code></p>
<h4 class="wp-block-heading"><span class="ez-toc-section" id="LOG"></span><strong>LOG</strong><span class="ez-toc-section-end"></span></h4>
<p>Не влияет на прохождение пакета — просто записывает информацию о нём в системный журнал (/var/log/syslog или journalctl). Это удобно для мониторинга, отладки и анализа трафика. Часто используется вместе с DROP.</p>
<p><strong>Пример:</strong> логировать все SSH-подключения:</p>
<p><code>iptables -A INPUT -p tcp --dport 22 -j LOG --log-prefix \"SSH attempt: \"</code></p>
<h4 class="wp-block-heading"><span class="ez-toc-section" id="QUEUE"></span><strong>QUEUE</strong><span class="ez-toc-section-end"></span></h4>
<p>Передаёт пакет в пользовательское пространство — например, для обработки с помощью nfqueue или других внешних приложений. Это используется редко, но полезно в сложных конфигурациях, например, при интеграции с антивирусами, IDS/IPS или кастомной логикой.</p>
<h4 class="wp-block-heading"><span class="ez-toc-section" id="RETURN"></span><strong>RETURN</strong><span class="ez-toc-section-end"></span></h4>
<p>Прекращает выполнение текущей цепочки и <strong>возвращает управление</strong> в предыдущую (например, в базовую). Полезно при использовании <strong>пользовательских цепочек</strong>, когда вы хотите завершить их выполнение и передать обработку дальше.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9E%D1%81%D0%BE%D0%B1%D1%8B%D0%B5_targets_%D0%B4%D0%BB%D1%8F_%D1%82%D0%B0%D0%B1%D0%BB%D0%B8%D1%86%D1%8B_nat"></span><strong>Особые targets (для таблицы </strong><strong>nat</strong><strong>):</strong><span class="ez-toc-section-end"></span></h3>
<h4 class="wp-block-heading"><span class="ez-toc-section" id="DNAT"></span><strong>DNAT</strong><span class="ez-toc-section-end"></span></h4>
<p>Изменяет адрес назначения пакета. Используется в PREROUTING для переадресации внешнего трафика на внутренние сервисы.</p>
<p><strong>Пример:</strong> перенаправить порт 80 на внутренний сервер:</p>
<p><code>iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to 192.168.1.10:8080</code></p>
<h4 class="wp-block-heading"><span class="ez-toc-section" id="SNAT"></span><strong>SNAT</strong><span class="ez-toc-section-end"></span></h4>
<p>Изменяет адрес источника. Применяется в POSTROUTING, когда вы хотите, чтобы внешний мир видел другой IP-адрес, например, IP-шлюза.</p>
<p><strong>Пример:</strong> подменить исходящий адрес:</p>
<p><code>iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 203.0.113.1</code></p>
<h4 class="wp-block-heading"><span class="ez-toc-section" id="MASQUERADE"></span><strong>MASQUERADE</strong><span class="ez-toc-section-end"></span></h4>
<p>Вариант SNAT, который <strong>автоматически подставляет внешний IP интерфейса</strong>. Удобен, когда IP динамический (например, при подключении через PPPoE или мобильный интернет).</p>
<p><strong>Пример:</strong> маскарадинг для всей локальной сети:</p>
<p>bash</p>
<p>Копировать код</p>
<p><code>iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE</code></p>
<p>Каждое действие играет свою роль в цепочке принятия решений. И чем точнее вы их используете — тем эффективнее работает ваш firewall. Главное — не путать контексты: ACCEPT и DROP работают в таблице filter, а SNAT и DNAT — только в nat.</p>
<p>Ну а теперь давайте закрепим на практике — как же использовать всю полученную информацию и как <strong>правильно составить правило в iptables? </strong></p>
<p>Каждое правило в iptables строится по одному и тому же принципу: <strong>определить условия</strong> (фильтры) и <strong>назначить действие</strong>. Чем точнее вы зададите параметры — тем эффективнее будет защита или обработка трафика.</p>
<p>Вот пример:<br>Допустим, вы хотите <strong>заблокировать доступ к веб-серверу на порту 80 от конкретного IP-адреса</strong> — например, от 192.168.2.2.</p>
<p><code>iptables -A INPUT -p tcp -s 192.168.2.2 --dport 80 -j DROP</code></p>
<p>Давайте разберем по частям что здесь указано:</p>
<ul>
<li>-A INPUT<br>Добавляем правило в <strong>цепочку INPUT</strong>, то есть это правило будет применяться ко всем входящим соединениям, направленным к самому хосту.</li>
<li>-p tcp<br>Указываем протокол — в данном случае <strong>TCP</strong>, потому что HTTP работает поверх TCP.</li>
<li>-s 192.168.2.2<br>Это <strong>IP-адрес источника</strong>. Мы фильтруем только пакеты, отправленные с этого адреса.</li>
<li>—dport 80<br>Порт назначения — <strong>80</strong>, стандартный порт для HTTP. То есть правило будет применяться только к трафику, направленному к веб-серверу.</li>
<li>-j DROP<br>Действие: <strong>отбросить пакет</strong>. Клиент не получит ответа, соединение будет просто прервано.</li>
</ul>
<p>Если вы хотите отменить действие правила — не редактируйте его вручную. Вместо этого используйте <strong>тот же синтаксис</strong>, но замените -A (append) на -D (delete):</p>
<p><code>iptables -D INPUT -p tcp -s 192.168.2.2 --dport 80 -j DROP</code></p>
<p>Это удалит ранее добавленное правило. Именно поэтому важно <strong>документировать правила или сохранять их в файл</strong> — чтобы потом было легко откатить изменения.</p>
<p>Писать правила — несложно, если вы понимаете структуру и порядок аргументов. Но чтобы делать это уверенно и без ошибок, важно знать <strong>основной синтаксис iptables</strong> — какие ключи использовать, за что они отвечают, и как задаются условия фильтрации</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="%D0%A1%D0%B8%D0%BD%D1%82%D0%B0%D0%BA%D1%81%D0%B8%D1%81_iptables_%D0%BA%D0%BB%D1%8E%D1%87%D0%B8_%D0%B8_%D0%BF%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80%D1%8B"></span><strong>Синтаксис iptables: ключи и параметры</strong><span class="ez-toc-section-end"></span></h3>
<p>Команда iptables строится по принципу:<br><strong>таблица → цепочка → условия → действие</strong>.</p>
<p>Чаще всего таблица по умолчанию — filter, и её можно не указывать. Но остальные элементы всегда задаются явно.</p>
<p>Ниже — <strong>основные ключи</strong>, которые используются для управления правилами:</p>
<figure class="wp-block-table"><table><tbody><tr><td><strong>Ключ</strong></td><td><strong>Назначение</strong></td></tr><tr><td>-A</td><td>Добавить правило в конец цепочки</td></tr><tr><td>-D</td><td>Удалить правило из цепочки</td></tr><tr><td>-I</td><td>Вставить правило в начало цепочки или по индексу</td></tr><tr><td>-R</td><td>Заменить правило по номеру</td></tr><tr><td>-F</td><td>Очистить цепочку (удалить все правила)</td></tr><tr><td>-P</td><td>Задать политику по умолчанию для цепочки (ACCEPT/DROP)</td></tr></tbody></table></figure>
<hr class="wp-block-separator has-alpha-channel-opacity"/>
<h4 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9E%D0%BF%D1%86%D0%B8%D0%B8_%D1%84%D0%B8%D0%BB%D1%8C%D1%82%D1%80%D0%B0%D1%86%D0%B8%D0%B8_%D1%82%D1%80%D0%B0%D1%84%D0%B8%D0%BA%D0%B0"></span><strong>Опции фильтрации трафика</strong><span class="ez-toc-section-end"></span></h4>
<p>Именно с помощью этих ключей вы описываете <strong>условия</strong>, по которым iptables будет определять, какому правилу соответствует пакет:</p>
<figure class="wp-block-table"><table><tbody><tr><td><strong>Опция</strong></td><td><strong>Назначение</strong></td></tr><tr><td>`-p tcp</td><td>udp</td></tr><tr><td>-s</td><td>IP-адрес источника</td></tr><tr><td>-d</td><td>IP-адрес назначения</td></tr><tr><td>-i</td><td>Входной сетевой интерфейс (например, eth0)</td></tr><tr><td>-o</td><td>Выходной сетевой интерфейс</td></tr><tr><td>—dport</td><td>Порт назначения (например, —dport 80 для HTTP)</td></tr><tr><td>—sport</td><td>Порт источника</td></tr><tr><td>-j</td><td>Действие, которое нужно выполнить (ACCEPT, DROP, LOG и т.д.)</td></tr></tbody></table></figure>
<p><strong>Подведем итоги:</strong></p>
<p>В этой статье мы разобрали:</p>
<ul>
<li>Что такое iptables и зачем он нужен</li>
<li>Разницу между stateless- и stateful-фильтрацией</li>
<li>Основы: как устроены правила, цепочки и таблицы</li>
<li>Какие действия (targets) применяются к пакетам</li>
<li>Как писать и редактировать правила</li>
<li>Как работает синтаксис, ключи и параметры</li>
</ul>
<p>Чем вам помогут эти навыки?</p>
<ul>
<li>Эффективно строить правила для защиты серверов и сетей</li>
<li>Отлаживать и тестировать настройки без риска «запороть» соединение</li>
<li>Быстро реагировать на сетевые угрозы — от DDoS до нежеланных сканеров</li>
<li>Понимать, где и как в системе проходит каждый сетевой пакет</li>
</ul>
<p>iptables — это инструмент, который действительно стоит освоить. Даже базовое владение позволяет существенно повысить уровень защиты и стабильности работы Linux-сервера. А по мере роста компетенций вы сможете выстраивать более сложные схемы маршрутизации, балансировки, фильтрации и приоритезации трафика.</p>
<p>Если вы хотите идти глубже — изучите nftables, firewalld или настройку fail2ban в связке с iptables. Но именно iptables остаётся классикой и фундаментом, с которого стоит начать.</p>
</div><!-- .post-content -->
<div class="the-post-foot cf">
<div class="tag-share cf">
<div class="post-share">
<div class="post-share-icons cf">
<span class="counters">
</span>
<a href="https://www.facebook.com/sharer.php?u=https%3A%2F%2Fotus.ru%2Fjournal%2Fpolnoe-rukovodstvo-po-iptables-kak-nastroit-firewall-v-linux%2F" class="link facebook wpel-icon-right" target="_blank" title="Share on Facebook" data-wpel-link="external" rel="nofollow external noopener noreferrer"><i class="fa fa-facebook"></i><span class="wpel-icon wpel-image wpel-icon-6"></span></a>
<a href="https://twitter.com/intent/tweet?url=https%3A%2F%2Fotus.ru%2Fjournal%2Fpolnoe-rukovodstvo-po-iptables-kak-nastroit-firewall-v-linux%2F&text=%D0%9F%D0%BE%D0%BB%D0%BD%D0%BE%D0%B5%20%D1%80%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE%20%D0%BF%D0%BE%20iptables%3A%20%D0%BA%D0%B0%D0%BA%20%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B8%D1%82%D1%8C%20firewall%20%D0%B2%20Linux" class="link twitter wpel-icon-right" target="_blank" title="Share on Twitter" data-wpel-link="external" rel="nofollow external noopener noreferrer"><i class="fa fa-twitter"></i><span class="wpel-icon wpel-image wpel-icon-6"></span></a>
<a href="https://www.linkedin.com/shareArticle?mini=true&url=https%3A%2F%2Fotus.ru%2Fjournal%2Fpolnoe-rukovodstvo-po-iptables-kak-nastroit-firewall-v-linux%2F" class="link linkedin wpel-icon-right" target="_blank" title="LinkedIn" data-wpel-link="external" rel="nofollow external noopener noreferrer"><i class="fa fa-linkedin"></i><span class="wpel-icon wpel-image wpel-icon-6"></span></a>
<a href="https://pinterest.com/pin/create/button/?url=https%3A%2F%2Fotus.ru%2Fjournal%2Fpolnoe-rukovodstvo-po-iptables-kak-nastroit-firewall-v-linux%2F&media=&description=%D0%9F%D0%BE%D0%BB%D0%BD%D0%BE%D0%B5%20%D1%80%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE%20%D0%BF%D0%BE%20iptables%3A%20%D0%BA%D0%B0%D0%BA%20%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B8%D1%82%D1%8C%20firewall%20%D0%B2%20Linux" class="link pinterest wpel-icon-right" target="_blank" title="Pinterest" data-wpel-link="external" rel="nofollow external noopener noreferrer"><i class="fa fa-pinterest-p"></i><span class="wpel-icon wpel-image wpel-icon-6"></span></a>
</div>
</div>
</div>
</div>
<div class="post-nav">
<div class="post previous cf">
<a href="https://otus.ru/journal/bpmn-na-praktike-primery-i-oshibki/" title="Prev Post" class="nav-icon" data-wpel-link="internal">
<i class="fa fa-angle-left"></i>
</a>
<span class="content">
<a href="https://otus.ru/journal/bpmn-na-praktike-primery-i-oshibki/" class="image-link" rel="previous" data-wpel-link="internal">
</a>
<div class="post-meta">
<span class="label">Prev Post</span>
<div class="post-meta post-meta-b">
<h2 class="post-title">
<a href="https://otus.ru/journal/bpmn-na-praktike-primery-i-oshibki/" data-wpel-link="internal">BPMN на практике: примеры и ошибки</a>
</h2>
<div class="below">
<a href="https://otus.ru/journal/bpmn-na-praktike-primery-i-oshibki/" class="meta-item date-link" data-wpel-link="internal"><time class="post-date" datetime="2025-04-15T14:37:18+00:00">15 апреля, 2025</time></a>
<span class="meta-sep"></span>
<span class="meta-item read-time">5 Mins Read</span>
</div>
</div> </div>
</span>
</div>
<div class="post next cf">
<a href="https://otus.ru/journal/kogortnyj-analiz-ltv-i-rfm-v-sql/" title="Next Post" class="nav-icon" data-wpel-link="internal">
<i class="fa fa-angle-right"></i>
</a>
<span class="content">
<a href="https://otus.ru/journal/kogortnyj-analiz-ltv-i-rfm-v-sql/" class="image-link" rel="next" data-wpel-link="internal">
</a>
<div class="post-meta">
<span class="label">Next Post</span>
<div class="post-meta post-meta-b">
<h2 class="post-title">
<a href="https://otus.ru/journal/kogortnyj-analiz-ltv-i-rfm-v-sql/" data-wpel-link="internal">Когортный анализ, LTV и RFM в SQL</a>
</h2>
<div class="below">
<a href="https://otus.ru/journal/kogortnyj-analiz-ltv-i-rfm-v-sql/" class="meta-item date-link" data-wpel-link="internal"><time class="post-date" datetime="2025-04-24T09:08:37+00:00">24 апреля, 2025</time></a>
<span class="meta-sep"></span>
<span class="meta-item read-time">3 Mins Read</span>
</div>
</div> </div>
</span>
</div>
</div>
<section class="related-posts grid-3">
<h4 class="section-head"><span class="title">Читать ещё</span></h4>
<div class="ts-row posts cf">
<article class="post col-4">
<a href="https://otus.ru/journal/proekt-tg-autoposter-na-nest-js/" title="Проект «TG Autoposter на Nest.JS»" class="image-link" data-wpel-link="internal">
</a>
<div class="content">
<h3 class="post-title"><a href="https://otus.ru/journal/proekt-tg-autoposter-na-nest-js/" class="post-link" data-wpel-link="internal">Проект «TG Autoposter на Nest.JS»</a></h3>
<div class="post-meta">
<time class="post-date" datetime="2025-12-23T00:44:53+00:00">23 декабря, 2025</time>
</div>
</div>
</article >
<article class="post col-4">
<a href="https://otus.ru/journal/langtrainee-razrabotka-mvp-ai-platformy-dlya-personalizirovannogo-izucheniya-yazykov/" title="LangTrainee: разработка MVP AI-платформы для персонализированного изучения языков" class="image-link" data-wpel-link="internal">
</a>
<div class="content">
<h3 class="post-title"><a href="https://otus.ru/journal/langtrainee-razrabotka-mvp-ai-platformy-dlya-personalizirovannogo-izucheniya-yazykov/" class="post-link" data-wpel-link="internal">LangTrainee: разработка MVP AI-платформы для персонализированного изучения языков</a></h3>
<div class="post-meta">
<time class="post-date" datetime="2025-11-12T04:39:47+00:00">12 ноября, 2025</time>
</div>
</div>
</article >
<article class="post col-4">
<a href="https://otus.ru/journal/pochemu-my-ne-uhodim-iz-it-dazhe-kogda-hochetsya/" title="Почему мы не уходим из IT даже когда хочется" class="image-link" data-wpel-link="internal">
<img width="270" height="180" src="data:image/svg+xml,%3Csvg%20viewBox%3D%270%200%20270%20180%27%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%3E%3C%2Fsvg%3E" class="image lazyload wp-post-image" alt="Почему мы не уходим из IT даже когда хочется" title="Почему мы не уходим из IT даже когда хочется" decoding="async" data-srcset="https://otus.ru/journal/wp-content/uploads/2025/11/oj-1080x720-kopiya-1-270x180.jpg 270w, https://otus.ru/journal/wp-content/uploads/2025/11/oj-1080x720-kopiya-1-770x515.jpg 770w, https://otus.ru/journal/wp-content/uploads/2025/11/oj-1080x720-kopiya-1-370x245.jpg 370w" data-src="https://otus.ru/journal/wp-content/uploads/2025/11/oj-1080x720-kopiya-1-270x180.jpg" data-sizes="(max-width: 270px) 100vw, 270px" /> </a>
<div class="content">
<h3 class="post-title"><a href="https://otus.ru/journal/pochemu-my-ne-uhodim-iz-it-dazhe-kogda-hochetsya/" class="post-link" data-wpel-link="internal">Почему мы не уходим из IT даже когда хочется</a></h3>
<div class="post-meta">
<time class="post-date" datetime="2025-11-04T12:29:53+00:00">4 ноября, 2025</time>
</div>
</div>
</article >
</div>
</section>
</article> <!-- .the-post -->
</div>
<aside class="col-4 sidebar">
<div class="inner">
<ul>
<li id="search-2" class="widget widget_search"><h5 class="widget-title"><span>Поиск по блогу</span></h5>
<form method="get" class="search-form" action="https://otus.ru/journal/">
<label>
<span class="screen-reader-text">Search for:</span>
<input type="search" class="search-field" placeholder="Введите запрос и нажмите Enter" value="" name="s" title="Search for:" />
</label>
<button type="submit" class="search-submit"><i class="fa fa-search"></i></button>
</form>
</li>
<li id="tag_cloud-5" class="widget widget_tag_cloud"><h5 class="widget-title"><span>Метки</span></h5><div class="tagcloud"><a href="https://otus.ru/journal/tag/android-2/" class="tag-cloud-link tag-link-74 tag-link-position-1" style="font-size: 12.472222222222pt;" aria-label="Android (34 элемента)" data-wpel-link="internal">Android</a>
<a href="https://otus.ru/journal/tag/c-3/" class="tag-cloud-link tag-link-91 tag-link-position-2" style="font-size: 10.916666666667pt;" aria-label="C (23 элемента)" data-wpel-link="internal">C</a>
<a href="https://otus.ru/journal/tag/c-2/" class="tag-cloud-link tag-link-81 tag-link-position-3" style="font-size: 12.666666666667pt;" aria-label="C# (35 элементов)" data-wpel-link="internal">C#</a>
<a href="https://otus.ru/journal/tag/c/" class="tag-cloud-link tag-link-20 tag-link-position-4" style="font-size: 12.472222222222pt;" aria-label="c++ (34 элемента)" data-wpel-link="internal">c++</a>
<a href="https://otus.ru/journal/tag/computer-science/" class="tag-cloud-link tag-link-209 tag-link-position-5" style="font-size: 15.972222222222pt;" aria-label="computer science (78 элементов)" data-wpel-link="internal">computer science</a>
<a href="https://otus.ru/journal/tag/css/" class="tag-cloud-link tag-link-288 tag-link-position-6" style="font-size: 8.6805555555556pt;" aria-label="CSS (13 элементов)" data-wpel-link="internal">CSS</a>
<a href="https://otus.ru/journal/tag/data-science/" class="tag-cloud-link tag-link-151 tag-link-position-7" style="font-size: 8pt;" aria-label="Data Science (11 элементов)" data-wpel-link="internal">Data Science</a>
<a href="https://otus.ru/journal/tag/devops/" class="tag-cloud-link tag-link-98 tag-link-position-8" style="font-size: 10.138888888889pt;" aria-label="devops (19 элементов)" data-wpel-link="internal">devops</a>
<a href="https://otus.ru/journal/tag/docker/" class="tag-cloud-link tag-link-143 tag-link-position-9" style="font-size: 8.2916666666667pt;" aria-label="Docker (12 элементов)" data-wpel-link="internal">Docker</a>
<a href="https://otus.ru/journal/tag/gamedev/" class="tag-cloud-link tag-link-25 tag-link-position-10" style="font-size: 11.694444444444pt;" aria-label="gamedev (28 элементов)" data-wpel-link="internal">gamedev</a>
<a href="https://otus.ru/journal/tag/hr/" class="tag-cloud-link tag-link-103 tag-link-position-11" style="font-size: 8pt;" aria-label="hr (11 элементов)" data-wpel-link="internal">hr</a>
<a href="https://otus.ru/journal/tag/html/" class="tag-cloud-link tag-link-217 tag-link-position-12" style="font-size: 11.208333333333pt;" aria-label="HTML (25 элементов)" data-wpel-link="internal">HTML</a>
<a href="https://otus.ru/journal/tag/ios/" class="tag-cloud-link tag-link-101 tag-link-position-13" style="font-size: 8.9722222222222pt;" aria-label="iOS (14 элементов)" data-wpel-link="internal">iOS</a>
<a href="https://otus.ru/journal/tag/it/" class="tag-cloud-link tag-link-50 tag-link-position-14" style="font-size: 10.527777777778pt;" aria-label="IT (21 элемент)" data-wpel-link="internal">IT</a>
<a href="https://otus.ru/journal/tag/java/" class="tag-cloud-link tag-link-75 tag-link-position-15" style="font-size: 15.680555555556pt;" aria-label="Java (73 элемента)" data-wpel-link="internal">Java</a>
<a href="https://otus.ru/journal/tag/javascript/" class="tag-cloud-link tag-link-83 tag-link-position-16" style="font-size: 14.319444444444pt;" aria-label="JavaScript (53 элемента)" data-wpel-link="internal">JavaScript</a>
<a href="https://otus.ru/journal/tag/linux/" class="tag-cloud-link tag-link-141 tag-link-position-17" style="font-size: 11.888888888889pt;" aria-label="Linux (29 элементов)" data-wpel-link="internal">Linux</a>
<a href="https://otus.ru/journal/tag/machine-learning/" class="tag-cloud-link tag-link-167 tag-link-position-18" style="font-size: 8.6805555555556pt;" aria-label="Machine Learning (13 элементов)" data-wpel-link="internal">Machine Learning</a>
<a href="https://otus.ru/journal/tag/otus-book/" class="tag-cloud-link tag-link-261 tag-link-position-19" style="font-size: 9.9444444444444pt;" aria-label="otus book (18 элементов)" data-wpel-link="internal">otus book</a>
<a href="https://otus.ru/journal/tag/php/" class="tag-cloud-link tag-link-45 tag-link-position-20" style="font-size: 10.527777777778pt;" aria-label="PHP (21 элемент)" data-wpel-link="internal">PHP</a>
<a href="https://otus.ru/journal/tag/python/" class="tag-cloud-link tag-link-27 tag-link-position-21" style="font-size: 16.944444444444pt;" aria-label="Python (99 элементов)" data-wpel-link="internal">Python</a>
<a href="https://otus.ru/journal/tag/qa/" class="tag-cloud-link tag-link-155 tag-link-position-22" style="font-size: 11.402777777778pt;" aria-label="qa (26 элементов)" data-wpel-link="internal">qa</a>
<a href="https://otus.ru/journal/tag/sql/" class="tag-cloud-link tag-link-38 tag-link-position-23" style="font-size: 12.861111111111pt;" aria-label="SQL (37 элементов)" data-wpel-link="internal">SQL</a>
<a href="https://otus.ru/journal/tag/team-lead/" class="tag-cloud-link tag-link-364 tag-link-position-24" style="font-size: 9.9444444444444pt;" aria-label="team lead (18 элементов)" data-wpel-link="internal">team lead</a>
<a href="https://otus.ru/journal/tag/unity/" class="tag-cloud-link tag-link-24 tag-link-position-25" style="font-size: 8pt;" aria-label="unity (11 элементов)" data-wpel-link="internal">unity</a>
<a href="https://otus.ru/journal/tag/algoritmy/" class="tag-cloud-link tag-link-30 tag-link-position-26" style="font-size: 9.9444444444444pt;" aria-label="Алгоритмы (18 элементов)" data-wpel-link="internal">Алгоритмы</a>
<a href="https://otus.ru/journal/tag/bazy-dannyh/" class="tag-cloud-link tag-link-40 tag-link-position-27" style="font-size: 10.138888888889pt;" aria-label="Базы данных (19 элементов)" data-wpel-link="internal">Базы данных</a>
<a href="https://otus.ru/journal/tag/matematika/" class="tag-cloud-link tag-link-44 tag-link-position-28" style="font-size: 10.916666666667pt;" aria-label="Математика (23 элемента)" data-wpel-link="internal">Математика</a>
<a href="https://otus.ru/journal/tag/arhitektura-po/" class="tag-cloud-link tag-link-10 tag-link-position-29" style="font-size: 9.4583333333333pt;" aria-label="архитектура ПО (16 элементов)" data-wpel-link="internal">архитектура ПО</a>
<a href="https://otus.ru/journal/tag/bazy-dannyh-2/" class="tag-cloud-link tag-link-251 tag-link-position-30" style="font-size: 10.138888888889pt;" aria-label="базы данных (19 элементов)" data-wpel-link="internal">базы данных</a>
<a href="https://otus.ru/journal/tag/vebinar/" class="tag-cloud-link tag-link-201 tag-link-position-31" style="font-size: 13.930555555556pt;" aria-label="вебинар (48 элементов)" data-wpel-link="internal">вебинар</a>
<a href="https://otus.ru/journal/tag/dajdzhest/" class="tag-cloud-link tag-link-308 tag-link-position-32" style="font-size: 10.722222222222pt;" aria-label="дайджест (22 элемента)" data-wpel-link="internal">дайджест</a>
<a href="https://otus.ru/journal/tag/zapis-vebinara/" class="tag-cloud-link tag-link-226 tag-link-position-33" style="font-size: 14.902777777778pt;" aria-label="запись вебинара (61 элемент)" data-wpel-link="internal">запись вебинара</a>
<a href="https://otus.ru/journal/tag/zapis-uroka/" class="tag-cloud-link tag-link-272 tag-link-position-34" style="font-size: 16.069444444444pt;" aria-label="запись урока (80 элементов)" data-wpel-link="internal">запись урока</a>
<a href="https://otus.ru/journal/tag/informacionnaya-bezopasnost/" class="tag-cloud-link tag-link-232 tag-link-position-35" style="font-size: 10.138888888889pt;" aria-label="информационная безопасность (19 элементов)" data-wpel-link="internal">информационная безопасность</a>
<a href="https://otus.ru/journal/tag/karera-v-it/" class="tag-cloud-link tag-link-292 tag-link-position-36" style="font-size: 9.9444444444444pt;" aria-label="карьера в IT (18 элементов)" data-wpel-link="internal">карьера в IT</a>
<a href="https://otus.ru/journal/tag/podborka/" class="tag-cloud-link tag-link-7 tag-link-position-37" style="font-size: 12.666666666667pt;" aria-label="подборка (35 элементов)" data-wpel-link="internal">подборка</a>
<a href="https://otus.ru/journal/tag/podborka-statej/" class="tag-cloud-link tag-link-219 tag-link-position-38" style="font-size: 15.777777777778pt;" aria-label="подборка статей (75 элементов)" data-wpel-link="internal">подборка статей</a>
<a href="https://otus.ru/journal/tag/programmirovanie/" class="tag-cloud-link tag-link-65 tag-link-position-39" style="font-size: 22pt;" aria-label="программирование (332 элемента)" data-wpel-link="internal">программирование</a>
<a href="https://otus.ru/journal/tag/proekt/" class="tag-cloud-link tag-link-321 tag-link-position-40" style="font-size: 11.888888888889pt;" aria-label="проект (29 элементов)" data-wpel-link="internal">проект</a>
<a href="https://otus.ru/journal/tag/proektnaya-rabota/" class="tag-cloud-link tag-link-310 tag-link-position-41" style="font-size: 11.597222222222pt;" aria-label="проектная работа (27 элементов)" data-wpel-link="internal">проектная работа</a>
<a href="https://otus.ru/journal/tag/seti/" class="tag-cloud-link tag-link-181 tag-link-position-42" style="font-size: 12.958333333333pt;" aria-label="сети (38 элементов)" data-wpel-link="internal">сети</a>
<a href="https://otus.ru/journal/tag/testirovanie/" class="tag-cloud-link tag-link-69 tag-link-position-43" style="font-size: 13.930555555556pt;" aria-label="тестирование (48 элементов)" data-wpel-link="internal">тестирование</a>
<a href="https://otus.ru/journal/tag/upravlenie-komandoj/" class="tag-cloud-link tag-link-63 tag-link-position-44" style="font-size: 11.694444444444pt;" aria-label="управление командой (28 элементов)" data-wpel-link="internal">управление командой</a>
<a href="https://otus.ru/journal/tag/habr-2/" class="tag-cloud-link tag-link-203 tag-link-position-45" style="font-size: 13.930555555556pt;" aria-label="хабр (48 элементов)" data-wpel-link="internal">хабр</a></div>
</li>
</ul>
</div>
</aside>
</div> <!-- .ts-row -->
</div> <!-- .main -->
<footer class="main-footer dark bold">
<section class="lower-footer cf">
<div class="wrap">
<div class="links">
<div class="menu-menju-navykov-container"><ul id="menu-menju-navykov-1" class="menu"><li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10413"><a href="https://otus.ru/categories/programming/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Программирование<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10414"><a href="https://otus.ru/categories/architecture/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Архитектура<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10415"><a href="https://otus.ru/categories/operations/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Инфраструктура<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10416"><a href="https://otus.ru/categories/information-security-courses/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Безопасность<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10417"><a href="https://otus.ru/categories/data-science/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Data Science<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10418"><a href="https://otus.ru/categories/gamedev/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">GameDev<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10419"><a href="https://otus.ru/categories/marketing-business/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Управление<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10420"><a href="https://otus.ru/categories/analytics/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Аналитика и анализ<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10421"><a href="https://otus.ru/categories/testing/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Тестирование<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
</ul></div> </div>
<p class="copyright"> © 2015-2026 OTUS </p>
<div class="to-top">
<a href="#" class="back-to-top"><i class="fa fa-angle-up"></i> Top</a>
</div>
</div>
</section>
</footer>
</div> <!-- .main-wrap -->
<div class="mobile-menu-container off-canvas" id="mobile-menu">
<a href="#" class="close"><i class="fa fa-times"></i></a>
<div class="logo">
</div>
<ul class="mobile-menu"></ul>
</div>
<div class="search-modal-wrap">
<div class="search-modal-box" role="dialog" aria-modal="true">
<form method="get" class="search-form" action="https://otus.ru/journal/">
<input type="search" class="search-field" name="s" placeholder="Search..." value="" required />
<button type="submit" class="search-submit visuallyhidden">Submit</button>
<p class="message">
Type above and press <em>Enter</em> to search. Press <em>Esc</em> to cancel. </p>
</form>
</div>
</div>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/plugins/clearfy/components/comments-plus/assets/js/url-span.js" id="wbcr-comments-plus-url-span-js"></script>
<script type="text/javascript" id="ez-toc-scroll-scriptjs-js-extra">
/* <![CDATA[ */
var eztoc_smooth_local = {"scroll_offset":"30"};
/* ]]> */
</script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/plugins/easy-table-of-contents/assets/js/smooth_scroll.min.js" id="ez-toc-scroll-scriptjs-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/plugins/easy-table-of-contents/vendor/js-cookie/js.cookie.min.js" id="ez-toc-js-cookie-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/plugins/easy-table-of-contents/vendor/sticky-kit/jquery.sticky-kit.min.js" id="ez-toc-jquery-sticky-kit-js"></script>
<script type="text/javascript" id="ez-toc-js-js-extra">
/* <![CDATA[ */
var ezTOC = {"smooth_scroll":"1","visibility_hide_by_default":"","scroll_offset":"30","fallbackIcon":"<span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span>"};
/* ]]> */
</script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/plugins/easy-table-of-contents/assets/js/front.min.js" id="ez-toc-js-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/custom-script.js" id="custom-script-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/magnific-popup.js" id="magnific-popup-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/jquery.fitvids.js" id="jquery-fitvids-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-includes/js/imagesloaded.min.js" id="imagesloaded-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/object-fit-images.js" id="object-fit-images-js"></script>
<script type="text/javascript" id="contentberg-theme-js-extra">
/* <![CDATA[ */
var Bunyad = {"custom_ajax_url":"\/journal\/polnoe-rukovodstvo-po-iptables-kak-nastroit-firewall-v-linux\/"};
/* ]]> */
</script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/theme.js" id="contentberg-theme-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/theia-sticky-sidebar.js" id="theia-sticky-sidebar-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/jquery.slick.js" id="jquery-slick-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/jarallax.js" id="jarallax-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-includes/js/masonry.min.js" id="masonry-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-includes/js/jquery/jquery.masonry.min.js" id="jquery-masonry-js"></script>
</body>
</html>
<!-- Cache served by breeze CACHE - Last modified: Mon, 09 Mar 2026 16:51:01 GMT -->