nftables 0.9.9 packet filter ááᯠááŻááşááźááşáááŻááşááŤááźáŽá áááşá¸áááş IPv4á IPv6á ARP áážááˇáş network bridge ááťáŹá¸ (iptablesá ip6tableá arptables áážááˇáş ebtables ááťáŹá¸áĄáá˝ááş áĄá áŹá¸áááŻá¸áĄááźá áş áá áşáážááşááŹá¸) áĄáá˝ááş packet filtering interface ááťáŹá¸ááᯠááąáŤááşá¸á ááşá¸ááąá¸áááşá nf_tables subsystem áážááˇáş áĄááźááşáĄáážááş áááşáá˝ááşáááşáĄáá˝ááş low-level API ááᯠááśáˇáááŻá¸ááąá¸áááˇáş áá°á¸áá˝á˛á፠libnftnl 1.2.0 library ááᯠáá áşááźááŻááşáááşáááşá¸ ááŻááşááźááşáááŻááşááŤááźáŽá nftables 0.9.9 áĄáá˝ááş áááŻáĄááşááąáŹ ááźáąáŹááşá¸áá˛áážáŻááťáŹá¸ááᯠkernel áá˝ááş áááˇáşáá˝ááşá¸ááŹá¸ááŤáááşá Linux á .áá-rcáá
nftables package áá˝ááş user space áá˝ááş áááşáááşááąáŹ packet filter components ááťáŹá¸ááŤáááşááźáŽá¸ kernel-level work ááᯠkernel á áĄá áááşáĄáááŻááşá¸áá áşááŻááźá áşáááˇáş nf_tables subsystem ááž ááśáˇáááŻá¸ááąá¸ááŤáááşá Linux ááźááˇáşááťááážáŻ 3.13 áážá á kernel level áá˝ááş generic protocol-independent interface áááŻáᏠááśáˇáááŻá¸ááąá¸ááŹá¸ááźáŽá¸ packets ááťáŹá¸ááž data ááťáŹá¸ááᯠextract ááŻááşááźááşá¸á data operations ááťáŹá¸ááᯠááŻááşááąáŹááşááźááşá¸áážááˇáş flow control áááŻáˇáĄáá˝ááş áĄááźáąááśááŻááşááąáŹááşááťááşááťáŹá¸ááᯠááąá¸ááąáŹááşááŤáááşá
filtering rules ááťáŹá¸áážááˇáş protocol-specific handler ááťáŹá¸ááᯠuser space áážá bytecode áá˛áááŻáˇ compile ááŻááşááźáŽá¸ááąáŹáẠᤠbytecode ááᯠNetlink interface ááᯠáĄááŻáśá¸ááźáŻá kernel áá˛áááŻáˇ load ááŻááşááźáŽá¸ kernel áá˝ááş special attribute ááźááˇáş execute ááŻááşáááşá virtual machineBPF (Berkeley Packet Filters) áážááˇáş áááşáá°áááşá á¤áááşá¸áááşá¸áááş kernel level áá˝ááş áááşáááşááąááąáŹ filtering code á áĄáá˝ááşáĄá áŹá¸ááᯠááááááŹáᏠááťážáąáŹáˇááťááąá¸ááźáŽá¸ rule parsing áážááˇáş protocol logic áĄáŹá¸ááŻáśá¸ááᯠuser space áááŻáˇ áá˝ážáąáˇááąá¸áááşá
áĄááá ááŽáá˝ááşáááşá¸áá áşáážáŻááťáŹá¸-
- 'offload' áĄááśááᯠáĄááŻáśá¸ááźáŻá flowtable ááŻááşááąáŹááşááźááşá¸áĄáŹá¸ áá˝ááşáááş adapter áááşáááŻáˇ áá˝ážáąáˇáááş á á˝ááşá¸áááşááᯠáĄááąáŹááşáĄáááşááąáŹáşááźáŽá¸ááźá áşáááşá Flowtable áááş packet redirection ááááşá¸ááźáąáŹááşá¸ááᯠáĄááąáŹááşá¸ááŻáśá¸ááźá áşáĄáąáŹááşááźáŻááŻááşáááˇáş ááášáááŹá¸áá áşááŻááźá áşááźáŽá¸á áááşá¸áá˝ááş rule processing chains ááťáŹá¸áĄáŹá¸ááŻáśá¸ááᯠááá packet áá˝ááşááŹáĄááŻáśá¸ááźáŻááźáŽá¸ flow áážá áĄááźáŹá¸ááąáŹ packet áĄáŹá¸ááŻáśá¸ááᯠáááŻááşáááŻááş forward ááŻááşááŤáááşá áááŹá¸ ip global { flowtable f { ááťáááş ingress áŚá¸á áŹá¸ááąá¸ filter + 1 devices = { lan3, lan0, wan } flags offload } chain forward { type filter hook forward priority filter; áá°ááŤááááşááś; ip protocol { tcp, udp } flow add @f } chain post { nat hook postrouting priority filter; áá°ááŤááááşááś; oifname "wan" áááşááąáŹááş } }
- ááŻááşáááşá¸á ááşáá áşááŻáĄáŹá¸ááźááˇáş áááŹá¸ááᯠááŽá¸áááˇáşáĄááŻáśá¸ááźáŻáážáŻááąááťáŹá áąáááş áááŻááşáážááşáĄááśááᯠá áŹá¸áá˝á˛áá áşááŻáá˝ááş áá°á¸áá˝á˛áááˇáşáá˝ááşá¸ááźááşá¸áĄáá˝ááş ááśáˇáááŻá¸áážáŻ áááşááąáŹááşá¸áááˇáşáá˝ááşá¸ááŹá¸áááşá ááŻááşáááşá¸á ááşáá áşáᯠáááşáááŻááşá¸áá˝áŹá¸ááąáŹáĄááŤá áááşá¸áážááˇáşáááşá ááşááąááąáŹ áááŹá¸ááᯠáĄáááŻáĄááťáąáŹááş ááťááşáá˝áŹá¸ááŤáááşá ááŻááşáááşá¸á ááşáážááˇáşáááşáááşáááˇáş áĄááťááşáĄáááşááᯠáážááşááťááşáá áşááŻááŻáśá áśááźááˇáş á ááşá¸ááťááşá¸á ááşá¸áááşá¸ááťáŹá¸ áĄáážááŻááşááŻáśáá˝ááş ááąáŹáşááźáááş- table ip x { # progname nft flags owner chain y { type filter hook input priority filter; áá°ááŤááááşááś; ááąáŹááşááŹáĄááŻááşááťáŹá¸ 1 bytes 309 } }
- IEEE 802.1ad áááşáážááşááťááş (VLAN stacking áááŻáˇáááŻááş QinQ) áĄáá˝ááş ááśáˇáááŻá¸áážáŻ ááąáŤááşá¸áááˇáşááŹá¸ááąáŹ VLAN áááşááşááťáŹá¸ááᯠEthernet áááááşáá áşááŻáá˛áááŻáˇ áĄá áŹá¸áááŻá¸ááźááşá¸áĄáá˝ááş áááşá¸áááşá¸áá áşááŻáĄááźá áş áááşáážááşáááşá áĽáááŹáĄáŹá¸ááźááˇáşá ááźááşá áĄáŽááŹáááşáááááş 8021ad áážááˇáş vlan id=342 áĄááťááŻá¸áĄá áŹá¸ááᯠá á áşááąá¸áááşá áááşááąáŹááşáážáŻááᯠáááşáĄááŻáśá¸ááźáŻáááŻááşáááş ... ether áĄááťááŻá¸áĄá áŹá¸ 802.1ad vlan id 342 Ethernet frame 8021ad/vlan id=1á nested 802.1 á ááźááşááĄááťááŻá¸áĄá áŹá¸ááᯠá á áşááąá¸áááşá q/vlan id=2 áážááˇáş ááąáŹááşáááş IP packet encapsulation- ... ether áĄááťááŻá¸áĄá áŹá¸ 8021ad vlan id 1 vlan áĄááťááŻá¸áĄá áŹá¸ 8021q vlan id 2 vlan áĄááťááŻá¸áĄá áŹá¸ ip ááąáŹááşááŹ
- ááąáŤááşá¸á ááşá¸ááŹá¸ááąáŹ áĄáááşáĄáąáŹááş cgroups v2 ááᯠáĄááŻáśá¸ááźáŻá áĄáááşá¸áĄááźá áşááťáŹá¸ááᯠá áŽááśáááˇáşáá˝á˛ááźááşá¸áĄáá˝ááş ááśáˇáááŻá¸áážáŻ ááąáŤááşá¸áááˇáşááŹá¸áááşá cgroups v2 áážááˇáş v1 áĄááźáŹá¸ áĄááááá˝áŹááźáŹá¸ááťááşáážáŹ áĄáááşá¸áĄááźá áşáĄááťááŻá¸áĄá áŹá¸áĄáŹá¸ááŻáśá¸áĄáá˝ááş ááŻáś cgroups hierarchy áááŻáĄááŻáśá¸ááźáŻááźááşá¸ááźá áşááźáŽá¸ CPU áĄáááşá¸áĄááźá áşááťáŹá¸áááŻáá˝á˛ááąááąá¸ááźááşá¸á áážááşááŹááşááŻáśá¸á á˝á˛áážáŻááááşá¸áážáááźááşá¸áĄáá˝ááş áážááˇáş I/O áĄáá˝ááş ááŽá¸ááźáŹá¸áĄáááşáááşá¸áĄáááˇáşááťáŹá¸áĄá áŹá¸á áĽáááŹáĄáŹá¸ááźááˇáşá ááááĄáááˇáş cgroupv2 áážá socket ááááŻá¸ááąá¸ááťáŹá¸áááş âsystem.sliceâ mask áážááˇáş áááŻááşááŽáážáŻáážáááážá á á áşááąá¸áááşá áááşááąáŹááşáážáŻááᯠáááşáĄááŻáśá¸ááźáŻáááŻááşáááş- ... socket cgroupv2 áĄáááˇáş 1 âsystem.sliceâ
- SCTP packets ááťáŹá¸á áĄá áááşáĄáááŻááşá¸ááťáŹá¸ááᯠá á áşááąá¸áááŻááşá á˝ááşá¸ááᯠáááˇáşáá˝ááşá¸ááŹá¸áááş (áááşáááşáážáŻáĄáá˝ááş áááŻáĄááşááąáŹ ááŻááşááąáŹááşááťááşáááş kernel áá˝ááş ááąáŤáşááŹááááˇáşáááş) Linux á .áá)á áĽáááŹáĄáŹá¸ááźááˇáşá packet áá˝ááş 'data' type áážááˇáş 'type' field ááŤáážáááąáŹ chunk áá áşááŻááŤáááşááźááşá¸ áážáááážá á á áşááąá¸áááş- ⌠sctp chunk data exists ⌠sctp chunk data type 0
- â-fâ áĄááśááᯠáĄááŻáśá¸ááźáŻá á ááşá¸áááşá¸áááşááźááşá¸ ááŻááşááąáŹááşááťááşááᯠáážá áşááźáááşáááˇáş áĄáážáááşááźážááˇáşáá˛áˇáááşá á ááşá¸ááťáĽáşá¸á ááşá¸áááşá¸ááťáŹá¸ ááŻááşááąá¸ááąá¸áááŻáááşá¸ áĄáážáááşááźážááˇáşáá˛áˇáááşá
- áĄááśáá áşááťáŹá¸ááᯠáááşáážááşááąá¸ááŹá¸ááźááşá¸áážáááážá á á áşááąá¸áááşáĄáá˝ááş ááąá¸áááşááąáŹááŻáśá áśá áĽáááŹáĄáŹá¸ááźááˇáşá snat áážááˇáş dnat status bits ááťáŹá¸ááᯠááááşáážááşááŹá¸ááźáąáŹááşá¸ á á áşááąá¸áááşá áááşáááşáážááşáááŻááşáááş- ... ct status ! bitmask syn,ack: ... tcp áĄááśááťáŹá¸ syn/sync áá˝ááş syn bit áááŻáááşáážááşááŹá¸ááźáąáŹááşá¸á á áşááąá¸áááşá dnat áááş bitmask syn,ack,fin,rst áá˝ááş fin áážááˇáş rst bit ááťáŹá¸áááŻááááşáážááşááŹá¸ááźáąáŹááşá¸á á áşááąá¸áááş- ... tcp áĄááśááťáŹá¸ ! = fin,rst / syn,ack,fin,rst
- set/map type of definitions áá˝ááş "á áŽáááşááťááş" ááąáŹáˇááťááşá áŹááŻáśá¸ááᯠáá˝ááˇáşááźáŻááŤ- ááźáąááŻáś xm { typeof iifname . ip ááááŻáááŻááąáŹ th dport : á áŽáááşááťááş ;}
source: opennet.ru
