nftables с нуля #2: NAT — masquerade и port forwarding

Прошлый выпуск серии закрыл базовые table/chain/rule и default drop. NAT — отдельные chain с hook prerouting (для DNAT, до маршрутизации) и postrouting (для SNAT/masquerade, после): table ip nat { chain postrouting { type nat hook postrouting priority 100; oif "eth0" masquerade } chain prerouting { type nat hook prerouting priority -100; tcp dport 8080 dnat to 192.168.1.10:80 } } masquerade — SNAT с автоопределением текущего IP интерфейса, удобен при динамическом внешнем адресе (в отличие от snat to <ip> с фиксированным). dnat to ip:port пробрасывает внешний порт на внутренний хост — тот же принцип, что iptables -t nat -A PREROUTING -j DNAT, только nftables держит NAT как обычную table с полем type nat. ...

10 сентября 2026 г. · llexa

nftables с нуля #1: таблицы, цепочки и первое правило

nftables заменяет разом iptables, ip6tables и arptables — один синтаксис на все семейства адресов, и весь рулсет заменяется атомарно, без окна с частично применёнными правилами. nft add table inet filter nft add chain inet filter input { type filter hook input priority 0 \; policy drop \; } nft add rule inet filter input iif lo accept nft add rule inet filter input ct state established,related accept nft add rule inet filter input tcp dport 22 accept nft list ruleset hook input — стадия перехвата пакетов (input/output/forward), priority — порядок среди chains на том же hook. Правила читаются сверху вниз, как в pg_hba.conf. Рулсет живёт только в памяти ядра — дамп в файл через nft list ruleset > /etc/nftables.conf. ...

31 июля 2026 г. · llexa