Нусхаи филтри бастаи nftables 1.0.0

Нашри маҷмӯи филтрҳои nftables 1.0.0 нашр шуд, ки интерфейсҳои филтркунии бастаҳоро барои IPv4, IPv6, ARP ва пулҳои шабакавӣ муттаҳид мекунад (барои иваз кардани iptables, ip6table, arptables ва ebtables). Тағиротҳое, ки барои версияи nftables 1.0.0 барои кор заруранд, ба ядрои Linux 5.13 дохил карда шудаанд. Тағйироти назарраси рақами версия бо ягон тағйироти бунёдӣ алоқаманд нест, балки танҳо натиҷаи идомаи пайвастаи рақамгузорӣ дар аломати даҳӣ мебошад (барориши қаблӣ 0.9.9 буд).

Бастаи nftables ҷузъҳои филтри бастаҳоро дар бар мегирад, ки дар фазои корбар кор мекунанд, дар ҳоле ки кори сатҳи ядро ​​аз ҷониби зерсистемаи nf_tables таъмин карда мешавад, ки аз замони нашри 3.13 қисми ядрои Linux мебошад. Сатҳи ядро ​​​​танҳо интерфейси мустақили протоколро таъмин мекунад, ки вазифаҳои асосиро барои истихроҷи додаҳо аз пакетҳо, иҷрои амалиёти додаҳо ва назорати ҷараён таъмин мекунад.

Қоидаҳои филтркунӣ ва коркардкунандагони мушаххаси протокол дар фазои корбар ба байткод тартиб дода мешаванд, ки баъд аз он ин байт код бо истифода аз интерфейси Netlink ба ядро ​​бор карда мешавад ва дар ядро ​​дар мошини махсуси виртуалӣ, ки BPF-ро (Беркли Пакет Филтрҳо) ба ёд меорад, иҷро мешавад. Ин равиш ба шумо имкон медиҳад, ки андозаи коди филтркуниро, ки дар сатҳи ядро ​​кор мекунад, хеле кам кунед ва тамоми функсияҳои қоидаҳои таҳлил ва мантиқи кор бо протоколҳоро ба фазои корбар интиқол диҳед.

Навовариҳои асосӣ:

  • Дастгирии унсури ниқоби "*" ба рӯйхатҳои маҷмӯа илова карда шудааст, ки он барои ҳама бастаҳое оғоз мешавад, ки ба унсурҳои дигари дар маҷмӯа муайяншуда дохил намешаванд. ҷадвали x { Рӯйхати блоки харита {навъи ipv4_addr: ҳукми парчамҳои фосилаи унсурҳои = {192.168.0.0/16: қабул, 10.0.0.0/8: қабул, *: тарки} } занҷири y {навъи филтр қалмоқе пеш аз масир афзалият 0; қабули сиёсат; ip saddr vmap @blocklist } }
  • Бо истифода аз имконоти "--define" тағирёбандаҳоро аз сатри фармон муайян кардан мумкин аст. # cat test.nft table netdev x { занҷири y { навъи филтр дастгоҳҳои вуруди қалмоқ = $dev афзалият 0; паст кардани сиёсат; } } # nft —define dev="{ eth0, eth1 }" -f test.nft
  • Дар рӯйхатҳои харитаҳо истифодаи ифодаҳои доимӣ (статусй) иҷозат дода мешавад: ҷадвали inet filter { map portmap { type inet_service : ҳукми ҳисобкунакҳо = { 22 пакетҳои ҳисобкунак 0 байт 0 : jump ssh_input, * пакетҳои муқобил 0 байт 0 : тарк кардан } } занҷири ssh_input { } занҷири wan_input { tcp dport vmap @portmap } занҷири пеш аз масир {навъи филтр қалмоқ пеш аз масир афзалият хом; қабули сиёсат; iif vmap {"lo": ҷаҳиши wan_input} }}
  • Фармони "рӯйхати hooks" барои намоиши рӯйхати коркардкунандагон барои як оилаи бастаи додашуда илова карда шуд: # nft list hooks ip device eth0 family ip { hook ingress { +0000000010 chain netdev x y [nf_tables] +0000000300 chain inet m w [nf_tables]} { -0000000100 занҷири ip a b [nf_tables] +0000000300 занҷири inet m z [nf_tables] } қалмоқ ба пеш { -0000000225 selinux_ipv4_forward 0000000000 занҷир ip a b [nf_tables] {0000000225} v4_output } поси масир {+0000000225 4 selinux_ipvXNUMX_postroute } }
  • Блокҳои навбат имкон медиҳанд, ки ифодаҳои jhash, symhash ва numgen якҷоя карда шаванд, то пакетҳоро ба навбатҳо дар фазои корбар тақсим кунанд. … навбат ба symhash mod 65536 … навбат парчамҳоро давр задан ба numgen inc mod 65536… навбат ба jhash oif . meta mark mod 32 "навбат" инчунин метавонад бо рӯйхати харитаҳо барои интихоби навбат дар фазои корбар дар асоси калидҳои худсарона якҷоя карда шавад. ... парчамҳои навбатӣ ба харитаи oifname { "eth0" : 0, "ppp0" : 2, "eth1" : 2 }
  • Тағирёбандаҳоро, ки рӯйхати маҷмӯиро ба якчанд харитаҳо дар бар мегиранд, васеъ кардан мумкин аст. муайян кардани интерфейсҳо = { eth0, eth1 } ҷадвали ip x { занҷираи y { навъи филтр қалмоқе афзалият вуруди 0; қабули сиёсат; iifname vmap { lo : accept, $interfaces : drop } } } # nft -f x.nft # nft рӯйхати қоидаҳо ҷадвали ip x { chain y { type филтр қалмоқ афзалияти вуруди 0; қабули сиёсат; iifname vmap { "lo" : қабул кунед, "eth0" : тарк кунед, "eth1" : тарк кунед } } }
  • Якҷоя кардани vmaps (харитаи ҳукм) дар фосилавӣ иҷозат дода мешавад: # nft add rule x y tcp dport . ip saddr vmap {1025-65535. 192.168.10.2: қабул кунед}
  • Синтаксиси соддакардашуда барои харитасозии NAT. Иҷозат барои муайян кардани диапазони суроғаҳо: ... snat to ip saddr map {10.141.11.4 : 192.168.2.2-192.168.2.4 } ё суроғаҳои IP ва портҳои равшан: ... dnat ба ip saddr харитаи {10.141.11.4 : 192.168.2.3. . 80 } ё маҷмӯи диапазони IP ва портҳо: ... dnat ба ip saddr . Харитаи tcp dport {192.168.1.2. 80: 10.141.10.2-10.141.10.5. 8888-8999 }

Манбаъ: opennet.ru

Илова Эзоҳ