Перейти к содержимому
netfilter

netfilter

Коротко

Подсистема ядра для фильтрации, NAT и conntrack. Hook-points PREROUTING, INPUT, FORWARD, OUTPUT, POSTROUTING. Поверх hooks работают iptables, nftables и eBPF.

Hook order

ingress -> PREROUTING -> [routing] -> INPUT -> local
                                   -> FORWARD -> POSTROUTING -> egress
local -> OUTPUT -> [routing] -> POSTROUTING -> egress

iptables vs nftables

Аспектiptablesnftables
backendx_tablesnf_tables
таблицыfilter, nat, mangle, raw, securityпроизвольные, named
familyодин на v4 (ip6tables на v6)inet, ip, ip6, arp, bridge, netdev
atomic updateнет, правило за правиломда, через transactions
sets/mapsipset (внешний)встроены
статусlegacy с RHEL 9 / kernel 5.xdefault везде

conntrack

/proc/net/nf_conntrack - state table.

States. NEW, ESTABLISHED, RELATED, INVALID, UNTRACKED.

sysctlЧто
net.netfilter.nf_conntrack_maxразмер таблицы
net.netfilter.nf_conntrack_tcp_timeout_establishedдефолт 5 дней
net.netfilter.nf_conntrack_bucketsbucket count для hashtable

NAT

  • SNAT/DNAT в PREROUTING/POSTROUTING
  • conntrack хранит NAT mapping
  • masquerade - SNAT на адрес исходящего интерфейса

See also