Прошлый выпуск серии закрыл базовые 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.

#nftables