packet filter nftables 1.1.6 áááŻááŻááşááąááźáŽá¸ IPv4á IPv6á ARP áážááˇáş network bridges (iptablesá ip6tableá arptables áážááˇáş ebtables) ááťáŹá¸áĄáá˝ááş packet filtering interfaces ááťáŹá¸ááᯠááąáŤááşá¸á ááşá¸ááźáŽá¸ ááŻááşááąááŹá¸ááŤáááşá áá áşááťáááşáááşá¸áážáŹáááşá áĄááąáŹáşá áŹááźááˇáşáááŻááş libnftnl 1.3.1 ááᯠááŻááşááąáá˛áˇááźáŽá¸ nf_tables á áá áşáá˝á˛ááťáŹá¸áážááˇáş áĄááźááşáĄáážááşááŻáśáˇááźááşáááşáĄáá˝ááş áĄáááˇáşááááˇáş API ááᯠááąá¸ááąáŹááşáá˛áˇáááşá
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 áááŻáˇ áá˝ážáąáˇááąá¸áááşá
áĄáááááźáąáŹááşá¸áá˛áážáŻááťáŹá¸-
- vxlaná geneve áážááˇáş erspan áá˛áˇáááŻáˇááąáŹ ááąáŤáˇááŤá¸ááąáŹ áĽáááşáááŻááşááąáŤááşá¸ááŻáśá áśááťáŹá¸áĄáá˝ááş áĄááźááˇáşáĄáááśáˇáááŻá¸áážáŻ- table netdev global { tunnel t1 { id 10 ip saddr 192.168.2.10 ip daddr 192.168.2.11 sport index 1025 dport 20010 span 2 ttl tunnel t2 { id 10 ip saddr 192.168.3.10 ip daddr 192.168.3.11 sport 1025 dport 21021 ttl 1 erspan { version 1 index 2 } } áá˝ááşá¸áááş { type filter hook ingress device ;0 áŚá¸á áŹá¸ááąá¸ áĽáááşáááŻááşááąáŤááşá¸áĄáááş ip saddr ááźáąááŻáś { 10.141.10.12 : "t1", 10.141.10.13 : "t2" } fwd to erspan1 } } á ááşá¸ááťááşá¸ááťáŹá¸ááᯠááááşááŽá áááşáááş erspan1 áá˝ááşáááş ááťááşáážáŹááźááşááᯠáááşááŽá¸áááˇáşáááş- ip link add dev erspan1 áĄááťááŻá¸áĄá áŹá¸ erspan ááźááşá
- netdev áááŻááşáá˝ááşáá°áážá áá˝ááşáááşáĄááşááŹááąáˇá áşáĄáááşááťáŹá¸áá˝ááş ááťááşáážáŹááŻáśá¸ááťáŹá¸áĄáá˝ááş ááśáˇáááŻá¸áážáŻ ááąáŤááşá¸áááˇáşááŹá¸áááşá áĽáááŹáĄáŹá¸ááźááˇáşá vlan á ááşáĄáŹá¸ááŻáśá¸áĄáá˝ááş áĄáááşáĄáá˝áŹá¸áĄáᏠá á áşááŻááşáážáŻáá˝ááş áĄááźáąááśáá˝ááşá¸áááşáá áşááŻááᯠáááˇáşáááşá áááşáááş áááşáážááşáááŻááşáááş- áááŹá¸ netdev t { chain c { type filter hook ingress devices = { "vlan*", "veth0" } áŚá¸á áŹá¸ááąá¸ filter; áá°ááŤááááşááś; } }
- kernel ááŤáážáááąáŹ á áá áşááťáŹá¸áá˝ááş Linux 6.18+ áááş local processing áĄáá˝ááş network bridge interface áááŻáˇ L2 frames ááťáŹá¸ áááŻáˇáá˝ážááşááźááşá¸ááᯠááśáˇáááŻá¸ááąá¸áááşá áĽáááŹáĄáŹá¸ááźááˇáşá MAC address de:ad:00:00:be:ef áĄáá˝ááş Ethernet frame áĄáŹá¸ááŻáśá¸ááᯠIP stack áááŻáˇ áá˝ážááşááźáŹá¸áááşáĄáá˝ááşá áááşáááşáážááşáááŻááşáááş- table bridge global { chain pre { type filter hook prerouting priority 0; policy accept; ether daddr de:ad:00:00:be:ef meta pkttype set host ether daddr set meta ibrhwaddr accept } }
- "./configure --with-fuzzer" áážáá áşáááˇáş áááşááąáŹááşááťáááşá áá˝ááˇáşááŹá¸áááˇáş afl++ (american fuzzy lop++) toolchain ááᯠáĄááŻáśá¸ááźáŻá áááąááťáŹáááąáᏠá ááşá¸áááşááźááşá¸áĄáá˝ááş áĄááźáąááśáĄááąáŹááşáĄáĄáŻáśáĄáá áşáá áşááŻááᯠáááşáááˇáşááŹá¸áááşá
source: opennet.ru
