Iptables a input j drop

ShareIT — поделись знаниями!

Полезно

Узнать IP — адрес компьютера в интернете

Онлайн генератор устойчивых паролей

Онлайн калькулятор подсетей

Калькулятор инсталляции IP — АТС Asterisk

Руководство администратора FreePBX на русском языке

Руководство администратора Cisco UCM/CME на русском языке

Навигация

Серверные решения

Телефония

FreePBX и Asterisk

Настройка программных телефонов

Корпоративные сети

Популярное и похожее

Пошаговый ввод в домен Windows 10

Как восстановить пароль от root в CentOS 7

Установка Gnome на CentOS 6

Установка и настройка ntopng

Погружение в Iptables – теория и настройка

Большой и наглядный материал

12 минут чтения

Начиная своё знакомство с iptables, следует рассказать про netfilter. Netfilter — это набор программных хуков внутри ядра Linux, которые позволяют модулям ядра регистрировать функции обратного вызова от стека сетевых протоколов.

Хук (hook) — это программный элемент, который позволяет перехватывать функции обратного вызова в чужих процессах.

Netfilter является основой для построения Firewall’а в дистрибутивах Linux, но для того, чтобы он заработал в полную силу его нужно настроить. Как раз с помощью iptables мы можем взаимодействовать с хуками Netfilter и создавать правила фильтрации, маршрутизации, изменения и транслирования пакетов. Иногда про Netfilter забывают и называют эту связку просто iptables.

Введение

Итак, iptables — это утилита для настройки программного Firewall’а (межсетевого экрана) linux, которая предустанавливается по умолчанию во все сборки Linux, начиная с версии 2.4. Запускается iptables из командной строки (CLI) под пользователем с правами root и настраивается там же.

Можете в этом убедиться, набрав команду iptables -V в командной строке, она покажет вам версию iptables.

Почему же iptables всем так понравился, что его стали включать во все сборки Linux? Всё дело в том, что iptables действительно очень прост в настройке. С помощью него можно решить следующие задачи:

    Настроить stateless и statefull фильтрацию пакетов версий IPv4 и IPv6;

Stateless — это фильтрация, основанная на проверке статических параметров одного пакета, например: IP адрес источника и получателя, порт и другие не изменяющиеся параметры.

Statefull — это фильтрация, основанная на анализе потоков трафика. С помощью нее можно определить параметры целой TCP сессии или UDP потока.

Прежде чем переходить к практике, давайте обратимся к теории и поймём саму логику iptables.

Логика и основные понятия iptables

Правила

Как и все файрволлы, iptables оперирует некими правилами (rules), на основании которых решается судьба пакета, который поступил на интерфейс сетевого устройства (роутера).

Ну допустим у нас есть сетевое устройство с адресом 192.168.1.1, на котором мы настроили iptables таким образом, чтобы запрещать любые ssh (порт 22) соединения на данный адрес. Если есть пакет, который идёт, например, с адреса 192.168.1.15 на адрес 192.168.1.1 и порт 22, то iptables скажет: “Э, нет, брат, тебе сюда нельзя” и выбросит пакет.

Или вообще ничего не скажет и выбросит, но об этом чуть позже 🙂

Каждое правило в iptables состоит из критерия, действия и счётчика

  • Критерий — это условие, под которое должны подпадать параметры пакета или текущее соединение, чтобы сработало действие. В нашем примере – этим условием является наличие пакета на входящем интерфейсе, устанавливающего соединение на порт 22
  • Действие — операция, которую нужно проделать с пакетом или соединением в случае выполнения условий критерия. В нашем случае – запретить пакет на порт 22
  • Счетчик — сущность, которая считает сколько пакетов было подвержено действию правила и на основании этого, показывает их объём в байтах.
Цепочки

Набор правил формируется в цепочки (chains)

Существуют базовые и пользовательские цепочки.

Базовые цепочки — это набор предустановленных правил, которые есть в iptables по умолчанию.

Существует 5 базовых цепочек и различаются они в зависимости от того, какое назначение имеет пакет. Имена базовых цепочек записываются в верхнем регистре.

    PREROUTING — правила в этой цепочке применяются ко всем пакетам, которые поступают на сетевой интерфейс извне;

  • INPUT — применяются к пакетам, которые предназначаются для самого хоста или для локального процесса, запущенного на данном хосте. То есть не являются транзитными;
  • FORWARD — правила, которые применяются к транзитным пакетам, проходящими через хост, не задерживаясь;
  • OUTPUT — применяются к пакетам, которые сгенерированы самим хостом;
  • POSTROUTING — применяются к пакетам, которые должны покинуть сетевой интерфейс.
  • В базовых цепочках обязательно устанавливается политика по умолчанию, как правило – принимать (ACCEPT) или сбрасывать (DROP) пакеты. Действует она только в цепочках INPUT, FORWARD и OUTPUT

    Таблица

    Таблицы — это набор базовых и пользовательских цепочек. В зависимости от того, в какой таблице находится цепочка правил, с пакетом или соединением производятся определённые действия

    Существует 5 таблиц:

    • filter — таблица, выполняющая функции фильтрации пакетов по определённым параметрам. В большинстве случаев вы будете использовать именно её. Содержит следующие встроенные цепочки: FORWARD, INPUT, OUTPUT;
    • raw — чтобы понять предназначение этой таблицы, нужно понимать логику работы statefull firewall’а. Дело в том, что по умолчанию, iptables рассматривает каждый пакет как часть большого потока и может определить какому соединению принадлежит тот или иной пакет. С помощью raw таблицы настраиваются исключения, которые будут рассматривать пакет как отдельную, ни к чему не привязанную сущность. Содержит следующие встроенные цепочки: INPUT, OUTPUT;
    • nat — таблица, предназначенная целиком по функции трансляции сетевых адресов. Содержит следующие встроенные цепочки: PREROUTING, OUTPUT, POSTROUTING;
    • mangle — таблица, предназначенная для изменения различных заголовков пакета. Можно, например, изменить TTL, количество hop’ов и другое. Содержит следующие встроенные цепочки: PREROUTING, INPUT, FORWARD, OUTPUT, POSTROUTING>;
    • security — используется для назначения пакетам или соединениям неких меток, которые в дальнейшем может интерпретировать SElinux.
    Читайте также:  Программа для создания методичек

    Теперь мы можем представить себе логику iptables в виде следующей схемы:

    Действия

    Ну и последнее, о чем нужно рассказать, прежде чем мы с вами начнем писать правила — это target. В контексте iptables, target — это действие, которое нужно проделать с пакетом или соединением, которое совпало с критериями правила.

    Итак, наиболее используемые действия:

    • ACCEPT — разрешить прохождение пакета;
    • DROP — тихо выбросить пакет, не сообщая причин;
    • QUEUE — отправляет пакет за пределы логики iptables, в стороннее приложение. Это может понадобиться, когда нужно обработать пакет в рамках другого процесса в другой программе;
    • RETURN — остановить обработку правила и вернуться на одно правило назад. Это действие подобно break’у в языке программирования.

    Помимо этих четырех, есть ещё масса других действий, которые называются расширенными (extension modules):

    • REJECT — выбрасывает пакет и возвращает причину в виде ошибки, например: icmp unreachable;
    • LOG — просто делает запись в логе, если пакет соответствует критериям правила;

    Есть действия, которые доступны только в определенной цепочке и таблицах, например, только в табоице nat и цепочках OUTPUT и PREROUTING доступно действие DNAT, которое используется в NAT’ировании и меняет Destination IP пакета. В той же таблице, только в цепочке POSTRUNNING доступно действие SNAT, меняющее Source IP пакета.

    Отдельно остановимся на действии MASQUERADE, которое делает то же самое что SNAT, только применяется на выходном интерфейсе, когда IP адрес может меняться, например, когда назначается по DHCP.

    Пишем правила

    Отлично, теперь давайте приближаться к практике. Как Вы уже поняли, мы будем писать правила, поэтому нам нужно понять, как они строятся.

    Итак, допустим у нас есть хост с адресом 192.168.2.17, на 80 (http) порту которого, работает вэб-сервер Apache. Мы заходим на адрес http://192.168.2.17 с хоста с адресом 192.168.2.2 и всё отлично работает:

    А теперь открываем командную строку под root на хосте 192.168.2.17 и пишем:

    Попробуем открыть открыть http://192.168.2.17 ещё раз:

    Упс, не работает. Давайте теперь разбираться, что мы наделали?

    Всё очень просто – данной командой мы:

    • вызвали утилиту iptables;
    • -A — этим ключом мы указали, что нужно добавить правило к существующей цепочке;
    • INPUT — указали цепочку, к которой хотим добавить правило;
    • -p tcp — явно указали протокол TCP. Здесь также можно указывать другие протоколы (udp, icmp, sctp), или номер протокола, инкапсулируемого в IP (17 – udp, 6 – tcp и др.);
    • -s 192.168.2.2 — указали, какой адрес источника должен быть у пакета, который мы хотим фильтровать;
    • —dport 80 — указали адресованные какому порту пакеты мы хотим фильтровать. В данном случае — 80, на котором работает наш сервер Apache.
    • -j DROP — указали что нужно сделать с пакетом, параметры которого совпали с данными критериями. В данном случае – просто тихо выбросить.

    Таким образом, мы заблокировали все пакеты с адреса 192.168.2.2 на локальный порт 80 и тем самым закрыли доступ к нашему серверу Apache для данного хоста.

    Обратите внимание – мы не указывали таблицу, в цепочки которой мы хотим добавить правило. Поэтому, по умолчанию таблица — filter. Для явного указания таблицы нужно перед указанием цепочки ввести ключ -t или (—table)

    Чтобы открыть доступ опять просто поменяем ключ -A в правиле на -D, тем самым мы удалим данное правило из iptables.

    Синтаксис iptables

    Друзья, на самом деле в iptables очень богатый синтаксис правил. Полный список ключей и параметров вы можете найти в официальном гайде на iptables.org. Мы же приведём самые “ходовые” опции, которыми вы, вероятно, будете пользоваться. Чтобы вы не запутались, мы приводим их в табличках ниже.

    Для удобства, в iptables реализовано очень много сокращений для разных ключей. Например, мы писали ключ -A вместо полного —append, -p вместо полного —proto и -s вместо полного —source, дальше мы покажем, что ещё можно сократить и где применить.

    Начнём с команд для редактирования правил и цепочек – добавления, удаления, замены и так далее:

    коротко синтаксис правила применение
    -A —append добавить правило к цепочке (в самое начало)
    -D —delete удалить правило из цепочки
    -D —delete удалить правило из цепочки по номеру (1 — x)
    -I —insert вставить правило в цепочку по номеру (1 — x)
    -R —replace заменить правило в цепочке по номеру (1 — x)
    -X —delete-chain удалить цепочку (только для пользовательских)
    -E —rename-chain <старое имя цепочки> переименовать цепочку
    -N —new создание новой пользовательской цепочки
    -C —check проверит наличие правила в цепочке
    -F —flush удаляет все правила в цепочке, если цепочка не указана – удалятся все правила
    -Z —zero <цепочка> обнуляет все счётчики пакетов и байтов в цепочке или всех цепочках
    -P —policy <цепочка> изменяет политику по умолчанию, она должна основываться на встроенном target’e

    Продолжим синтаксисом настройки правил – на каком сетевом интерфейсе следить за пакетами, какой протокол проверять, адрес источника, назначения и так далее.

    Кстати, перед некоторыми параметрами можно ставить восклицательный знак — !, означающее логическое НЕ. В таблице мы пометим такие параметры таким значком – (!)

    коротко синтаксис опции применение
    -p (!) —proto протокол или номер протокола <16,7>, all — все протоколы
    -4 —ipv4 указывает версию протокола ipv4
    -6 —ipv6 указывает версию протокола ipv6
    -s (!) —source <адрес/маска> указывает ip адрес источника
    -d (!) —destination <адрес/маска> указывает ip адрес назначения
    -m —match включает дополнительные модули, явно задающимися данным ключем. например m limit —limit 3/min — установит лимит на количество пакетов в минуту
    -f (!) —fragment включает обработку фрагментированных пакетов, в которых нет параметров изначального полного пакета, содержащихся в первом фрагменте пакета
    -i (!) —in-interface обрабатывает только входящие пакеты, прилетающие на сетевой интерфейс
    -o (!) —out-interface обрабатывает только исходящие пакеты, прилетающие на сетевой интерфейс
    —set-counters <пакеты> включает счётчик для ключей—insert, —append, —replace
    Читайте также:  Aws amazon com free

    Теперь рассмотрим опции для действий, которые должны сработать по совпадению критериев:

    коротко синтаксис опции применение
    -j —jump применяет одно из действий accept, drop, reject и другие
    -g —goto переходит к другой цепочке правил

    Теперь рассмотрим какую информацию мы можем вытянуть с помощью iptables и какие опции для этого нужно использовать:

    коротко синтаксис команды применение
    -l —list <цепочка> показывает правила в цепочке или всех цепочках. по умолчанию покажет таблицу filter
    -s —list-rules <цепочка> показывает текст правила в цепочке или всех цепочках
    -n —numeric покажет параметры правила в числовом виде. например не порт будет не http, а 80
    -v —verbose выводит более подробную информацию
    -v —version покажет версию iptables
    -x —exact покажет точные значения числовых параметров
    —line-numbers покажет номера правил

    Для быстрого получения информации о настроенных правилах и о метриках их срабатывания, часто применяется команда, комбинирующая 3 ключа — iptables -nLv . Например, для настроенного нами ранее правила – вывод будет такой:

    Пример посложнее

    Давайте рассмотрим ещё один пример. Допустим у нас во локальной сети есть хост 192.168.2.19 с сервером Apache. Мы хотим сделать его доступным из Интернета. Для этого нам нужно воспользоваться возможностями таблицы nat и написать правило, которое будет перенаправлять входящий http трафик на внешний интерфейс (пусть будет enp0s3 с адресом 101.12.13.14) и порт 80 на адрес нашего сервера внутри сети и 80 порт – 192.168.2.19:80. По сути – нужно сделать проброс портов.

    Напишем такое правило:

    Теперь если мы перейдём по адресу http://101.12.13.14, то должны попасть на наш Apache.

    Возможности iptables настолько обширны, что мы могли бы начать писать новую Базу знаний по нему. В статье мы показали лишь базовые варианты применения. Это действительно великий инструмент и освоить его не так уж сложно. Надеюсь, данная статья Вам в этом поможет. Спасибо за внимание!

    Пожалуйста, расскажите почему?

    Нам жаль, что статья не была полезна для вас 🙁 Пожалуйста, если не затруднит, укажите по какой причине? Мы будем очень благодарны за подробный ответ. Спасибо, что помогаете нам стать лучше!

    Подпишитесь на нашу еженедельную рассылку, и мы будем присылать самые интересные публикации 🙂 Просто оставьте свои данные в форме ниже.

    В первой статье мы разбирались с теорией iptables. Теперь продолжим изучение на примерах. Стандартные правила для любого сервера выглядят так:

    iptables -P FORWARD DROP
    iptables -P OUTPUT ACCEPT
    iptables -A INPUT -i lo -j ACCEPT
    iptables -A INPUT -m conntrack —ctstate ESTABLISHED,RELATED -j ACCEPT
    iptables -A INPUT -p tcp —dport 22 -j ACCEPT
    iptables -P INPUT DROP

    Собственно мы разрешаем весь из ходящий трафик OUTPUT ACCEPT, запрещаем проходящий трафик FORWARD DROP и запрещаем весь входящий трафик кроме 22 порта SSH INPUT -p tcp —dport 22 -j ACCEPT. Про conntrack я писал в предыдущей статье. Собственно это базовая настройка iptables для сервера. Далее мы открываем нужный нам порты дополнительно , например 21 для FTP сервера.

    iptables -I INPUT -p tcp —dport 21 -j ACCEPT

    Может ограничить число запросов на пинг до 4 в секунду )))

    iptables -A INPUT -p icmp —icmp-type 8 -m limit —limit 4/s -j ACCEPT

    -m подключение модулей. В iptables много разных модулей. Модуль limit предназначен для ограничения нагрузки.

    —limit ( /second /minute /hour /day )Пакеты в пределах этого количества считаются удовлетворяющими критерию, сверх этого количества — не удовлетворяющими.
    –-limit-burst количество — задает длину очереди, то есть максимальную пропускную способность.

    К стати таким правилом можно бороться с ICMP-flood . Суть данной атаки в том, что ICMP-пакет при небольшом размере самого запроса требует от сетевого оборудования значительно большего объёма работы. Таким образом, при отправлении сравнительно небольшого объёма
    ICMP-запросов возникает перегрузка сетевого оборудования и значительная часть легитимных запросов теряется, не пройдя обработку.

    Типы ICMP-сообщений:

    • 0 — echo reply (echo-ответ, пинг)
    • 3 — destination unreachable (адресат недосягаем)
    • 4 — source quench (подавление источника, просьба посылать пакеты медленнее)
    • 5 — redirect (редирект)
    • 8 — echo request (echo-запрос, пинг)
    • 9 — router advertisement (объявление маршрутизатора)
    • 10 — router solicitation (ходатайство маршрутизатора)
    • 11 — time-to-live exceeded (истечение срока жизни пакета)
    • 12 — IP header bad (неправильный IPзаголовок пакета)
    • 13 — timestamp request (запрос значения счетчика времени)
    • 14 — timestamp reply (ответ на запрос значения счетчика времени)
    • 15 — information request (запрос информации)
    • 16 — information reply (ответ на запрос информации)
    • 17 — address mask request (запрос маски сети)
    • 18 — address mask reply (ответ на запрос маски сети)

    Обычно выход во внешний мир разрешают ICMP-сообщениям 0, 3, 4, 11 и 12 , в то время как на вход принимают только 3, 8 и 12 .

    Можно ограничить трафик не только по IP но и по MAC адресу.

    iptables -I INPUT -m mac —mac-source 00:00:00:00:00:01 -j DROP

    Можем ограничить число одновременных подключений по SSH до двух с одного IP.

    iptables -p tcp —syn —dport 22 -m connlimit —connlimit-above 2 -j REJECT

    —syn флаг пакета с запросом на соединение.

    Тоже самое можно сделать и по другому.

    iptables -I INPUT -p tcp —syn —dport 22 -m iplimit —iplimit-above 2 -j DROP

    Так же мы можем делать свои цепочки правил.

    iptables -N syn_flood
    iptables -A INPUT -p tcp —syn -j syn_flood
    iptables -A syn_flood -m limit —limit 500/s —limit-burst 1500 -j RETURN
    iptables -A syn_flood -j DROP

    Число новых SYN пакетов — максимум 500 в секунду, при превышении порога в 1500 — новые пакеты блокируются.

    Читайте также:  Как вывести изображение с телефона на телевизор

    iptables -N syn_flood Создание цепочки с именем syn_flood .

    iptables -A INPUT -p tcp —syn -j syn_flood Пакеты с флагом syn отправляем в цепочку syn_flood.

    iptables -A syn_flood -m limit —limit 500/s —limit-burst 1500 -j RETURN Если запросов не больше 1500 в секунду выйти из цепочки правил( RETURN ).

    iptables -A syn_flood -j DROP Заблокировать пакеты с флагом syn.

    SYN-flood очень популярная DoS атака заключается в посылке большого числа SYN пакетов на ваш сервер. При этом установка TCP связи не доводится до конца.
    Очередь полуоткрытых запросов соединений быстро заполняется, что мешает установке нормальных соединений. Так как соединение не должно быть обязательно завершено.Такая атака не требует больших ресурсов от атакующей машины, поэтому её легко реализовать и контролировать.

    Утилита командной строки iptables используется для настройки брандмауэра netfilter, встроенного в систему на базе ядра Linux.

    Данная инструкция подходит как для чайников, которые хотят разбираться в аспектах защиты сети, так и опытных специалистов в качестве шпаргалки.

    Принцип настройки

    Общий синтаксис использования iptables:

    iptables -t [номер]

    Правила netfilter распределены по 4-м таблицам, каждая из которых имеет свое назначение (подробнее ниже). Она указывается ключом -t, но если данный параметр не указан, действие будет выполняться для таблицы по умолчанию — filter.

    Команды указывают, какое именно действие мы совершаем над netfilter, например, создаем или удаляем правило.

    В каждой таблице есть цепочки, для каждой из которых создаются сами правила. Например, для вышеупомянутой таблицы filter есть три предопределенные цепочки — INPUT (входящие пакеты), OUTPUT (исходящие) и FORWARD (транзитные).

    [номер]

    Некоторые команды требуют указания номера правила, например, на удаление или редактирование.

    Условие описывает критерии отработки того или иного правила.

    Ну и, собственно, что делаем с пакетом, если он подходит под критерии условия.

    * справедливости ради, стоит отметить, что ключ с действием не обязан идти в конце. Просто данный формат чаще всего встречается в инструкциях и упрощает чтение правил.

    Ключи iptables и примеры их использования

    Для работы с таблицами (iptables -t)

    Напоминаю, все правила в netfilter распределены по таблицам. Чтобы работать с конкретной таблицей, необходимо использовать ключ -t.

    Ключ Описание
    -t filter Таблица по умолчанию. С ней работаем, если упускаем ключ -t. Встроены три цепочки — INPUT (входящие), OUTPUT (исходящие) и FORWARD (проходящие пакеты)
    -t nat Для пакетов, устанавливающий новое соединение. По умолчанию, встроены три цепочки — PREROUTING (изменение входящих), OUTPUT (изменение локальных пакетов перед отправкой) и POSTROUTING (изменение всех исходящих).
    -t mangle Для изменения пакетов. Цепочки — INPUT, OUTPUT, FORWARD, PREROUTING, POSTROUTING.
    -t raw Для создания исключений в слежении за соединениями. Цепочки: PREROUTING, OUTPUT.

    Команды

    Нижеперечисленные ключи определяют действия, которые выполняет утилита iptables.

    Ключ Описание и примеры
    -A Добавление правила в конец списка:
    iptables -A INPUT -s 192.168.0.15 -j DROP
    запретить входящие с 192.168.0.15.
    -D Удаление правила:
    iptables -D INPUT 10
    удалить правило в цепочке INPUT с номером 10.
    -I Вставка правила в определенную часть списка:
    iptables -I INPUT 5 -s 192.168.0.15 -j DROP
    вставить правило 5-м по списку.
    -R Замена правила.
    iptables -R OUTPUT 5 -s 192.168.0.15 -j ACCEPT
    заменить наше 5-е правило с запрещающего на разрешающее.
    -F Сброс правил в цепочке.
    iptables -F INPUT
    -Z Обнуление статистики.
    iptables -Z INPUT
    -N Создание цепочки.
    iptables -N CHAINNEW
    -X Удаление цепочки.
    iptables -X CHAINNEW
    -P Определение правила по умолчанию.
    iptables -P INPUT DROP
    -E Переименовывание цепочки.
    iptables -E CHAINNEW CHAINOLD

    Условия

    Данные ключи определяют условия правила.

    Ключ Описание и примеры
    -p Сетевой протокол. Допустимые варианты — TCP, UDP, ICMP или ALL.
    iptables -A INPUT -p tcp -j ACCEPT
    разрешить все входящие tcp-соединения.
    -s Адрес источника — имя хоста, IP-адрес или подсеть в нотации CIDR.
    iptables -A INPUT -s 192.168.0.50 -j DROP
    запретить входящие с узла 192.168.0.50
    -d Адрес назначения. Принцип использования аналогичен предыдущему ключу -s.
    iptables -A OUTPUT -d 192.168.0.50 -j DROP
    запретить исходящие на узел 192.168.0.50
    -i Сетевой адаптер, через который приходят пакеты (INPUT).
    iptables -A INPUT -i eth2 -j DROP
    запретить входящие для Ethernet-интерфейса eth2.
    -o Сетевой адаптер, с которого уходят пакеты (OUTPUT).
    iptables -A OUTPUT -o eth3 -j ACCEPT
    разрешить исходящие с Ethernet-интерфейса eth3.
    —dport Порт назначения.
    iptables -A INPUT -p tcp —dport 80 -j ACCEPT
    разрешить входящие на порт 80.
    —sport Порт источника.
    iptables -A INPUT -p tcp —sport 1023 -j DROP
    запретить входящие с порта 1023.

    Перечисленные ключи также поддерживают конструкцию с использованием знака !. Он инвертирует условие, например,
    iptables -A INPUT -s ! 192.168.0.50 -j DROP
    запретит соединение всем хостам, кроме 192.168.0.50.

    Действия

    Действия, которые будут выполняться над пакетом, подходящим под критерии условия. Для каждой таблицы есть свой набор допустимых действий. Указываются с использованием ключа -j.

    Таблица Действие Описание
    filter ACCEPT Разрешает пакет.
    DROP Запрещает пакет.
    REJECT Запрещает с отправкой сообщения источнику.
    nat MASQUERADE Для исходящих пакетов заменяет IP-адрес источника на адрес интерфейса, с которого уходит пакет.
    SNAT Аналогично MASQUERADE, но с указанием конкретного сетевого интерфейса, чей адрес будет использоваться для подмены.
    DNAT Подмена адреса для входящих пакетов.
    REDIRECT Перенаправляет запрос на другой порт той же самой системы.
    mangle TOS Видоизменение поля TOS (приоритезация трафика).
    DSCP Изменение DSCP (тоже приоритезация трафика).
    TTL Изменение TTL (время жизни пакета).
    HL Аналогично TTL, но для IPv6.
    MARK Маркировка пакета. Используется для последующей фильтрации или шейпинга.
    CONNMARK Маркировка соединения.
    TCPMSS Изменение значения MTU.

    Примеры часто используемых команд iptables

    Общие команды

    Просмотр правил с их номерами:

    iptables -L —line-numbers

    Для каждой таблицы смотреть правила нужно отдельно: