6.1 KiB
6.1 KiB
iptables
Таблицы
filter
- основная таблица для фильтрации пакетов, используется по умолчанию;nat
- управление преобразованием сетевых адресов;mangle
- модификация и замена содержимого сетевых пакетов вне контекста NAT и фильтрации пакетов;raw
- предназначена для работы с сырыми пакетами, пока они еще не прошли обработку
Цепочки
Цепочки бывают базовые/встроенные и пользовательские (можно создать самому).
В новую цепочку можно направлять пакеты чтобы подвергуть их анализу правил. Например для отладки правил или настройки особого движения пакетов как это сделано в Docker
INPUT
- входящий трафик (адресованный локальному хосту);FORWARD
- транзитный трафик поступающий на локальную машину с целью передачи его на другую машину (трафик передаваемый в docker контейнер тоже будет считаться транзитным), при этом транзитный трафик проходит в обоих направлениях;OUTPUT
- исходящий из локального хоста трафик
Правила - условия и действия
Правило - состоит из условия/критерия (если нет значит применяется ко всему трафику) действия (может не быть) и счетчика (для учета пакетов попавших под правило).
основные действия с правилами:
-A
- добавить правило в цепочку;-С
- проверить все правила;-D
- удалить правило;-I
- вставить правило с нужным номером;-L
- вывести все правила в текущей цепочке;-S
- вывести все правила;-F
- очистить все правила;-N
- создать цепочку;-X
- удалить цепочку;-P
- установить действие по умолчанию.
Условия:
-p
- протокол (TCP, UDP, ICMP, ALL);-s
- ip адрес источника (можно с маской 10.0.0.0/24), допускается отрицание (т.е. все кроме)-s ! 10.0.0.0/24
;-d
- ip адрес получателя (аналогично-s
);-i
- интерфейс с которого пришел пакет (только дляINPUT
,FORWARD
,PREROUTING
), напримерens3
, допускается указатьens+
что означает все имена интерфейсов начинающиеся с заданной строки, допускается отрицание-i ! ens+
;-o
- интерфейс локального хоста, из которого выходит трафик (только дляOUTPUT
,FORWARD
,PREROUTING
);--sport
- порт с которого был отправлен TCP/UDP пакет (допускаются имена служб из/etc/services
), поддерживаются диапазоны вида20:80
что значит от 20 до 80 порта, так же можно опустить одно из значений:80
(от 0 до 80) или20:
(от 20 до 65535), отрицание поддерживается даже к диапазонам--sport ! 20:80
;--dport
- аналогично--sport
только речь идет про порт, которому адресован пакет;--icmp-type
- тип ICMP сообщения (номер или название), поддерживается отрицание. RFC 792 илиiptables --protocol icmp --help
;-m mac --mac-source
- MAC адрес устройства передавшего пакет, поддерживается отрицание;-m state --state
- состояние соединения:INVALID
- неизвестное соединение, возможно ошибочное;NEW
- новое соединение;ESTABLISHED
- уже установленное соединение;RELATED
- пакет принадлежит уже существующему соединению, но он отправляется по новому
-m ttl
- Time To Live:--ttl-eq N
- TTL пакета равен N;--ttl-lt N
- TTL пакета меньше N;--ttl-gt N
- TTL пакета больше N
Действия:
ACCEPT
- пакет принят в текущей таблице;DROP
- пакет сбрасывается и перестает движение в системе;LOG
- пакет журналируется и продолжает дальнейшие движение по цепочке правил и таблицам (рассмотрим ниже)REJECT
- аналогично DROP только отдает сообщение об ошибке на хост отправителя (работает на всех цепочках таблицы filter):--reject-with
- тип ответа, RFC 793 илиiptables -j REJECT -h
RETURN
- возврат пакета в вышестоящую цепочку для применения действия по умолчанию, при отсутствии вышестоящей цепочки применится действие по умолчанию
Примеры
- Просмотр текущих правил
iptables -L
более наглядно
iptables -vnL --line-numbers