Издание на пакетния филтър nftables 1.1.0

Публикувано издание на пакетния филтър nftables 1.1.0, който унифицира интерфейсите за филтриране на пакети за IPv4, IPv6, ARP и мрежови мостове (планирано да замени iptables, ip6tables, arptables и ebtables). Значителната промяна в номера на версията не е свързана с кардинални изменения, а е следствие на последователната нумерация в десетичната система (предишното издание беше 1.0.9). В същото време е публикувано и изданието на съпътстващата библиотека libnftnl 1.2.7, която предоставя нискочастотен API за взаимодействие с подсистемата nf_tables.

В пакет nftables влизат компоненти на пакетния филтър, работещи в пространството на потребителя, докато на ниво ядро, работата се осигурява от подсистемата nf_tables, включена в ядрото на Linux, започвайки от версия 3.13. На ниво ядро се предоставя само общ интерфейс, независим от конкретен протокол, който предлага основни функции за извличане на данни от пакети, извършване на операции с данни и управление на потока.

Правилата за филтриране и специфичните за протоколите обработчици се компилират в байткод в пространството на потребителя, след което този байткод се зарежда в ядрото чрез интерфейса Netlink и се изпълнява в ядрото в специален, наподобяващ BPF (Berkeley Packet Filters). Подобен подход позволява значително да се намали размерът на кода за филтриране, работещ в ядрото, и да се изнесат всички функции за разбиране на правилата и логиката за работа с протоколите в пространството на потребителя. виртуална машина,което наподобява BPF (Berkeley Packet Filters). Подобен подход позволява значително да се намали размерът на кода за филтриране, работещ в ядрото, и да се изнесат всички функции за разбиране на правилата и логиката на работа с протоколите в пространството на потребителя.

Основни промени:

  • В изразите map е добавена поддръжка за променливи: define dst_map = { ::1234 : 5678 } table ip6 nat { map dst_map { typeof ip6 daddr : tcp dport; elements = $dst_map } chain prerouting { ip6 nexthdr tcp redirect to ip6 daddr map @dst_map } }
  • Добавена е поддръжка за VLAN: ip saddr 10.1.1.1 icmp type echo-request vlan id set 321 # payload ether type 8021ad vlan id 10 vlan type 8021q vlan id 100 vlan type ip accept
  • За изразите «log» е активиран нов стрингов препроцесор с поддръжка за променливи: define message=»test» log prefix «my $message»
  • При изчисляването на значението на израза «meta hour» е реализирана обработка на отрицателно изместване в часовата зона, зададена чрез променливата на средата TZ: TZ=UTC-4 nft add rule x y meta hour «22:00»
  • Осигурено е преобразуване на реда на байтовете при използване на изрази ct и meta, а също така и при операции по сливане и задаване на диапазони в set-набори. map mapv6 { typeof ip6 dscp : meta mark; } meta mark set ip6 dscp map @map1 ще бъде получен байткод: [ payload load 2b @ network header + 0 => reg 1 ] [ bitwise reg 1 = ( reg 1 & 0x0000c00f ) ^ 0x00000000 ] [ byteorder reg 1 = ntoh(reg 1, 2, 2) ] [ bitwise reg 1 = ( reg 1 > 0x00000006 ) ] [ lookup reg 1 set mapv6 dreg 1 ] [ meta set mark with reg 1 ]
  • Възобновена е поддръжката на командата «replace rule». replace rule ip t1 c1 handle 3 ‘jhash ip protocol . ip saddr mod 170 vmap { 0-94 : goto wan1, 95-169 : goto wan2, 170-269 }”
  • Възобновена е възможността за добавяне на мрежови устройства в съществуващи flowtable: create flowtable inet filter f1 { hook ingress priority 0; counter } add flowtable inet filter f1 { devices = { dummy1 } ; }
  • Решени са проблеми при използването на командата «create set»: define ip-block-4 = { 1.1.1.1 } create set netdev filter ip-block-4-test { type ipv4_addr flags interval auto-merge elements = $ip-block-4 }
  • Решени са проблеми при използването на цифровото представяне на опции tcp: tcp option 254
  • Решени са проблеми при използването на изрази meta и ct с map-набори: meta mark set vlan id map { 1 : 0x00000001, 4095 : 0x00004095 }
  • В изразите payload и concat е забранено указването на данни с размер над 512 байта.
  • При изпълнение на командата «nft describe» е реализирано отчитане на стойности от файловете group, rt_mark и rt_realms, разположени в директориите /etc/iproute2/ и /usr/share/iproute2/. # nft describe meta rtclassid meta expression, datatype realm (routing realm) (basetype integer), 32 bits предварително дефинирани символни константи от /etc/iproute2/rt_realms (в десетичен вид): cosmos 0 Отхвърляне на израз с диапазон meta mark set 0-100
  • Ускорена е операцията по извеждане на списъка с таблици. Реализирана е поддръжка на опцията -t/—terse за ускоряване на командите «list table» и «list set».
  • Осигурено е преобразуването на изрази meter в динамични set-набори: add rule t c tcp dport 80 meter m size 128 { ip saddr timeout 2s limit rate 10/second } ще бъде преобразуван в set m { type ipv4_addr size 128 flags dynamic,timeout } tcp dport 80 update @m { ip saddr timeout 2s limit rate 10/second burst 5 packets }
  • В представянето в JSON формат е добавена поддръжка на обекти synproxy и map-набори с комбинирани данни.
  • В set-наборите, зададени в JSON формат, е реализирана поддръжка на флага auto-merge.
  • При използване на представянето в JSON формат е разрешено указването на няколко устройства в блока «chain».
  • При използване на опции -f/—filename е осигурена обработка на пътища относно директорията на текущия файл.
  • При използване на опции -I/—include обхождението на пътищата по подразбиране сега се извършва от края на списъка.
  • Настроени са опциите -o/—optimize с изрази, съдържащи броячи на стойности: # nft -c -o -f ruleset.nft Обединяване: ruleset.nft:5:17-45: ct state invalid counter drop ruleset.nft:6:17-59: ct state established,related counter accept в: ct state vmap { invalid counter : drop, established counter : accept, related counter : accept } Обединяване: ruleset.nft:7:17-43: tcp dport 80 counter accept ruleset.nft:8:17-44: tcp dport 123 counter accept в: tcp dport { 80, 123 } counter accept Обединяване: ruleset.nft:9:17-64: ip saddr 1.1.1.1 ip daddr 2.2.2.2 counter accept ruleset.nft:10:17-62: ip saddr 1.1.1.2 ip daddr 3.3.3.3 counter drop в: ip saddr . ip daddr vmap { 1.1.1.1 . 2.2.2.2 counter : accept, 1.1.1.2 . 3.3.3.3 counter : drop }
  • Възстановена е съвместимостта с дампове на елемента set, създадени в nftables преди версия 0.9.8.

Източник: opennet.ru

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster