
Проверили: 0/1
Это старая версия документа!
Iptables
iptables - утилита, которая управляет встроенным в ядро брандмауэром netfilter. Состоит из цепочек правил, которые применяются последовательно. Для понимания работы iptables необходимо разобраться с тем, как может вести себя сетевой пакет. В зависимости от таблицы маршрутизации пакет может:
- может быть отброшен, если вообще нам не предназначен;
- может пройти транзитом, например, если наш компьютер является маршрутизатором;
- может предназначаться приложению, находящемуся на компьютере;
- может отправляться от приложения, находящемуся на компьютере.
Соответственно, в iptables для этого есть 3 различные цепочки правил (вариант с отброшенным пакетом рассматривать не будем):
- forward
- input
- output
В общем виде, пути сетевого пакета можно увидеть на этой картинке
Рассмотрим путь пакета более подробно.
Prerouting
В эту цепочку пакет попадает перед iptables, до того момента, когда будет известно что делать с пакетом и куда он направляется. Первая таблица, с которой встретится пакет - raw.
RAW - таблица для работы с сырыми пакетами, до того, как они прошли обработку
Следующим идет conntrack (connection tracking), который позволяет отследить соединения, то есть определить какому соединению/сеансу принадлежит пакет. Состояние пакета может быть новое (NEW), уже установленное (ESTABLISHED), дополнение к уже существующему (RELATED) и другие. Conntrack нужен для того, чтобы не проверять пакеты дважды (на входе и на выходе).
Далее переходим к таблице Mangle, с помощью которой можно модифицировать заголовки пакета. Например, с помощью такой модификации можно изменить поля TTL и TOS.
NAT - network address translation. Механизм, предназначенный для подмены ip адресов получателя и/или отправителя. Так как на этом этапе мы не знаем кому предназначен пакет, то логично сразу изменить адрес получателя - сделать dNAT (destination NAT).
После prerouting, исходя из таблицы маршрутизации нашего устройства, определяем нам ли предназначен пакет.
Forwarding
Если пакет нам не предназначен, то применяется цепочка Forward. В этой цепочке 2 таблицы - mangle и filter. Таблица Mangle по-прежнему позволяет модифицировать заголовки пакета. А вот таблица Filter наконец-то будет применять какие-либо правила к пакетам.
Таблица Filter в цепочке Forward будет применять правила исключительно к тем пакетам, которые будут проходить транзитом!
В этой таблице можно фильтровать пакеты - разрешать доступ по определенному порту, запрещать соединения с каких-либо адресов и т.д.