ServerAID
Найти гайд, команду, тег… ⌘ K
Глоссарий  ·  термин

iptables — что это и зачем

iptables — классический брандмауэр Linux: набор правил, по которым ядро пропускает или блокирует сетевые пакеты. На современной Ubuntu заменён на nftables и обычно скрыт за UFW; саму команду `iptables` напрямую трогают редко, но понимать её стоит — на ней построена вся сетевая безопасность.

iptables

iptables — классический брандмауэр Linux: набор правил, по которым ядро пропускает или блокирует сетевые пакеты. На современной Ubuntu заменён на nftables и обычно скрыт за UFW; саму команду iptables напрямую трогают редко, но понимать её стоит — на ней построена вся сетевая безопасность.

Что это в одном абзаце

Когда сетевой пакет приходит на сервер или уходит с него, ядро Linux прогоняет его через цепочку правил — это и есть netfilter, фреймворк фильтрации в ядре. iptables — это CLI-утилита, через которую вы добавляете и просматриваете эти правила. Каждое правило говорит: «если пакет с такими-то признаками — сделать с ним вот это». Базовые действия: ACCEPT (пропустить), DROP (молча выбросить), REJECT (отбить ошибкой).

# Показать все текущие правила
sudo iptables -L -n -v

# Заблокировать входящие с конкретного IP
sudo iptables -A INPUT -s 1.2.3.4 -j DROP

# Разрешить SSH из приватной сети
sudo iptables -A INPUT -s 10.0.0.0/8 -p tcp --dport 22 -j ACCEPT

В чистом виде iptables-команды громоздкие, поэтому для рутинной работы используют надстройки: UFW на Ubuntu, firewalld на RHEL/Fedora.

Цепочки и таблицы

iptables-правила сгруппированы в цепочки. Стандартные цепочки:

  • INPUT — пакеты, адресованные этому серверу (включая SSH-подключения извне).
  • OUTPUT — пакеты, исходящие с сервера.
  • FORWARD — пакеты, проходящие сквозь сервер (для маршрутизатора или Docker-хоста).

У каждой цепочки есть политика по умолчанию (что делать, если ни одно правило не сработало): обычно ACCEPT, но в строгих конфигурациях ставят DROP — «всё запрещено, кроме явно разрешённого».

Цепочки сгруппированы в таблицы:

  • filter — основная фильтрация (ACCEPT/DROP). По умолчанию.
  • nat — преобразование адресов (для проброса портов и NAT-роутинга, в том числе у Docker).
  • mangle — модификация заголовков пакетов (TOS, TTL).
  • raw — раннее вмешательство до conntrack.

В типовой работе вы видите только filter — на остальные таблицы натыкаетесь редко.

Переход с iptables на nftables

С 2018 года в Linux появилась более современная подсистема — nftables. Она:

  • Объединяет IPv4 и IPv6 правила в одной утилите (nft), вместо параллельных iptables и ip6tables.
  • Имеет более чистый и читаемый синтаксис.
  • Быстрее на больших правилосписках (тысячи правил).

Начиная с Debian 11 и Ubuntu 22.04, iptables — это обёртка: ваши команды iptables -A INPUT ... транслируются в правила nftables под капотом. Команда называется iptables-nft, и она сосуществует со старой iptables-legacy (которая до сих пор в комплекте, но не используется по умолчанию).

Проверить, какой бэкенд у вас активен:

sudo update-alternatives --display iptables
sudo iptables -V                 # должно содержать "(nf_tables)"

Поэтому фраза «iptables в nftables» — это не о миграции правил, а о том, что они уже работают через nftables: команда iptables физически работает с nft-таблицами. Прямо писать в nft стоит, если вы делаете что-то новое; старые скрипты с iptables-restore будут работать.

Кто использует iptables на Ubuntu

В чистом виде — почти никто. Поверх iptables/nftables работают надстройки:

  • UFW (Uncomplicated Firewall) — стандартный фронт на Ubuntu. Команды типа sudo ufw allow 22/tcp под капотом транслируются в правила netfilter. Подробно — UFW на Ubuntu.
  • fail2ban — сервис, который читает логи (auth.log, nginx access) и при подозрительной активности сам пишет правила в iptables/nftables. Подробно — fail2ban для SSH.
  • Docker — при старте контейнера с -p 80:80 Docker сам создаёт правила в таблице nat для проброса порта. Поэтому при включённом UFW могут возникать неожиданности — Docker обходит UFW через цепочку DOCKER-USER.
  • Kubernetes / kube-proxy — для маршрутизации сервисов внутри кластера тоже использует netfilter.

В обычной серверной практике — пользуйтесь UFW и fail2ban, не лезьте в iptables руками.

Когда лезть в iptables напрямую

  • Отладка, когда правило, поставленное через UFW или Docker, делает не то, что ожидалось. sudo iptables -L -n -v --line-numbers покажет полную картину.
  • Сценарии, которые UFW не покрывает: NAT-проброс портов, маркировка пакетов, детальная фильтрация по conntrack-состояниям.
  • Контейнеры: понимать цепочки DOCKER-USER, DOCKER, DOCKER-INGRESS.

Перед редактированием — всегда делайте дамп текущих правил, чтобы было куда откатиться:

sudo iptables-save > /root/iptables.before.$(date +%Y%m%d)

И помните: правила iptables живут в памяти ядра. После ребута они пропадут, если их не сохранил какой-нибудь сервис (netfilter-persistent, UFW, Docker).

Частые вопросы

Что такое iptables простыми словами

Это утилита, через которую вы говорите ядру Linux, какие сетевые пакеты пускать на сервер, а какие выбрасывать. Стандарт брандмауэра Linux с конца 1990-х. Сейчас под капотом работает через nftables, но команда iptables всё ещё актуальна.

iptables и nftables — это одно и то же

Не одно и то же, но связанное. nftables — современная подсистема фильтрации в ядре. iptables — более старая, частично вытесненная. На Ubuntu 22.04+ команда iptables под капотом транслируется в nftables-правила (iptables-nft-режим), поэтому в реальной системе работают именно nftables, а не «классический» iptables.

Чем UFW отличается от iptables

UFW — это упрощённая обёртка над iptables/nftables. Команды UFW (sudo ufw allow 22/tcp) транслируются в полноценные правила netfilter, но синтаксис понятнее и короче. UFW не делает того, что не умеет iptables — это просто удобный фасад.

Сохраняются ли правила iptables после ребута

По умолчанию нет — правила хранятся в памяти ядра. Чтобы они применялись при загрузке, нужен пакет iptables-persistent (или netfilter-persistent), который сохраняет правила в /etc/iptables/rules.v4 и rules.v6 и восстанавливает при старте. UFW и Docker имеют свои механизмы сохранения и применяют правила при старте сервиса.

Где смотреть текущие правила iptables

sudo iptables -L -n -v — все правила в таблице filter. -n — не резолвить IP в DNS (быстрее), -v — детальный вывод со счётчиками пакетов и байтов. С --line-numbers — увидите номера строк, по которым удобно делать iptables -D INPUT 5 (удалить пятую строку).

Что почитать

  • UFW на Ubuntu — стандартный фронт для управления iptables/nftables. Команды короче и понятнее, под капотом — те же netfilter-правила.
  • fail2ban для SSH — пример сервиса, который автоматически пишет правила в iptables при подозрительных попытках входа.
  • SSH-ключи Ubuntu — типовой стек защиты SSH: ключи (отключаем парольный вход), UFW (закрываем лишние порты), fail2ban (банит ботов через iptables).

Похожие материалы

grep — что это и зачем
Глоссарий

grep — что это и зачем

grep — стандартная команда Linux для поиска строк по шаблону внутри текстовых файлов и потоков. Берёт текст на вход, отдаёт строки, в которых нашлось совпадение. Базовый инструмент работы с логами, конфигами, выводом других команд через пайп.

Редакция
find — что это и зачем
Глоссарий

find — что это и зачем

find — стандартная команда Linux для поиска файлов и каталогов по имени, типу, правам, размеру, дате и десяткам других критериев. С помощью `-exec` поверх найденного можно сразу выполнять команды. Универсальный инструмент админа для массовой работы с файловой системой.

Редакция
snap — что это и зачем
Глоссарий

snap — что это и зачем

snap — система упаковки и установки приложений от Canonical, разработанная как альтернатива apt. Каждый snap — самодостаточный пакет со своими зависимостями, изолированный от системы через AppArmor. Используется на Ubuntu для Firefox, Chromium, microk8s и многих desktop-приложений.

Редакция
LVM — что это и зачем
Глоссарий

LVM — что это и зачем

LVM — слой абстракции между физическими дисками и файловыми системами в Linux. Объединяет диски в пулы (Volume Groups), нарезает их на логические тома (Logical Volumes) и позволяет изменять размер на лету. Альтернатива классическому partitioning, которая делает работу с дисками гибкой.

Редакция