i-nftables packet filter 0.9.9 ukukhululwa

ΠžΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ выпуск ΠΏΠ°ΠΊΠ΅Ρ‚Π½ΠΎΠ³ΠΎ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π° nftables 0.9.9, ΡƒΠ½ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΡŽΡ‰Π΅Π³ΠΎ интСрфСйсы Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² для IPv4, IPv6, ARP ΠΈ сСтСвых мостов (Π½Π°Ρ†Π΅Π»Π΅Π½ Π½Π° Π·Π°ΠΌΠ΅Π½Ρƒ iptables, ip6table, arptables ΠΈ ebtables). ΠžΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ выпуск ΡΠΎΠΏΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ libnftnl 1.2.0, ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π΅ΠΉ Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹ΠΉ API для взаимодСйствия с подсистСмой nf_tables. НСобходимыС для Ρ€Π°Π±ΠΎΡ‚Ρ‹ выпуска nftables 0.9.9 измСнСния Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ Π² состав ядра Linux 5.13-rc1.

Ipakethe ye-nftables ibandakanya iinxalenye zepakethe zokucoca ezisebenza kwindawo yomsebenzisi, ngelixa umsebenzi we-kernel-level unikezelwa yi-nf_tables subsystem, ebiyinxalenye ye-Linux kernel ukususela ekukhululweni kwe-3.13. Inqanaba le-kernel libonelela kuphela i-generic protocol-independent interface ebonelela ngemisebenzi esisiseko yokukhupha idatha kwiipakethi, ukwenza imisebenzi yedatha, kunye nokulawula ukuhamba.

Imithetho yokucoca kunye ne-protocol-specific handlers ihlanganiswe kwi-bytecode kwindawo yomsebenzisi, emva koko le bytecode ilayishwe kwi-kernel isebenzisa ujongano lwe-Netlink kwaye iqhutywe kwi-kernel kumatshini okhethekileyo okhumbuza i-BPF (i-Berkeley Packet Filters). Le ndlela ikuvumela ukuba unciphise kakhulu ubungakanani bekhowudi yokucoca esebenza kwinqanaba le-kernel kwaye uhambise yonke imisebenzi yokwahlulahlula imithetho kunye nengqiqo yokusebenza kunye neeprotocol kwindawo yomsebenzisi.

Iinguqulelo eziphambili:

  • Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ выноса ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ flowtable Π½Π° сторону сСтСвого Π°Π΄Π°ΠΏΡ‚Π΅Ρ€Π°, Π²ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌΠ°Ρ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Ρ„Π»Π°Π³Π° β€˜offload’. Flowtable прСдставляСт собой ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡƒΡ‚ΠΈ пСрСнаправлСния ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ², ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΏΠΎΠ»Π½ΠΎΠ΅ ΠΏΡ€ΠΎΡ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ всСх Ρ†Π΅ΠΏΠΎΡ‡Π΅ΠΊ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€Π°Π²ΠΈΠ» примСняСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚Π°, Π° всС ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ Π² ΠΏΠΎΡ‚ΠΎΠΊΠ΅ ΠΏΡ€ΠΎΠ±Ρ€Π°ΡΡ‹Π²Π°Ρ‚ΡŒ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ. table ip global { flowtable f { hook ingress priority filter + 1 devices = { lan3, lan0, wan } flags offload } chain forward { type filter hook forward priority filter; policy accept; ip protocol { tcp, udp } flow add @f } chain post { type nat hook postrouting priority filter; policy accept; oifname Β«wanΒ» masquerade } }
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° прикрСплСния ΠΊ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Ρ„Π»Π°Π³Π° для привязки ΠΊ Π²Π»Π°Π΄Π΅Π»ΡŒΡ†Ρƒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ эксклюзивноС использованиС Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ процСссом. ΠŸΡ€ΠΈ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠΈ процСсса привязанная ΠΊ Π½Π΅ΠΌΡƒ Ρ‚Π°Π±Π»ΠΈΡ†Π° автоматичСски удаляСтся. Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ ΠΎ процСссС отобраТаСтся Π² Π΄Π°ΠΌΠΏΠ΅ ΠΏΡ€Π°Π²ΠΈΠ» Π² Ρ„ΠΎΡ€ΠΌΠ΅ коммСнтария: table ip x { # progname nft flags owner chain y { type filter hook input priority filter; policy accept; counter packets 1 bytes 309 } }
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° спСцификации IEEE 802.1ad (VLAN stacking ΠΈΠ»ΠΈ QinQ), ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰Π΅ΠΉ срСдства для подстановки Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Ρ‚Π΅Π³ΠΎΠ² VLAN Π² ΠΎΠ΄ΠΈΠ½ ΠΊΠ°Π΄Ρ€ Ethernet. НапримСр, для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Ρ‚ΠΈΠΏΠ° внСшнСго Ethernet-ΠΊΠ°Π΄Ρ€Π° 8021ad ΠΈ vlan id=342 ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ … ether type 802.1ad vlan id 342 для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ внСшнСго Ρ‚ΠΈΠΏΠ° Ethernet-ΠΊΠ°Π΄Ρ€Π° 8021ad/vlan id=1, Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ 802.1q/vlan id=2 ΠΈ дальнСйшСй инкапсуляции IP-ΠΏΠ°ΠΊΠ΅Ρ‚Π°: … ether type 8021ad vlan id 1 vlan type 8021q vlan id 2 vlan type ip counter
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° управлСния рСсурсами ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΡƒΠ½ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ cgroups v2. ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ΠΌ cgroups v2 ΠΎΡ‚ v1 являСтся ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΎΠ±Ρ‰Π΅ΠΉ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ cgroups для всСх Π²ΠΈΠ΄ΠΎΠ² рСсурсов, вмСсто Ρ€Π°Π·Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΉ для распрСдСлСния рСсурсов CPU, для рСгулирования потрСблСния памяти ΠΈ для Π²Π²ΠΎΠ΄Π°/Π²Ρ‹Π²ΠΎΠ΄Π°. НапримСр, для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ соотвСтствуСт Π»ΠΈ ΠΏΡ€Π΅Π΄ΠΎΠΊ сокСта Π½Π° ΠΏΠ΅Ρ€Π²ΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅ cgroupv2 маскС Β«system.sliceΒ» ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ½ΡΡ‚ΡƒΠΊΡ†ΠΈΡŽ: … socket cgroupv2 level 1 Β«system.sliceΒ»
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ составных частСй ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² SCTP (нСобходимая для Ρ€Π°Π±ΠΎΡ‚Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ появится Π² ядрС Linux 5.14). НапримСр, для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ наличия Π² ΠΏΠ°ΠΊΠ΅Ρ‚Π΅ chunk-Π° с Ρ‚ΠΈΠΏΠΎΠΌ β€˜data’ ΠΈ ΠΏΠΎΠ»Π΅ΠΌ β€˜type’: … sctp chunk data exists … sctp chunk data type 0
  • ΠŸΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Π² Π΄Π²Π° Ρ€Π°Π·Π° ускорСно Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΏΡ€Π°Π²ΠΈΠ» ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Ρ„Π»Π°Π³Π° Β«-fΒ». Π’Π°ΠΊΠΆΠ΅ ускорСн Π²Ρ‹Π²ΠΎΠ΄Π° списка ΠΏΡ€Π°Π²ΠΈΠ».
  • ΠŸΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»Π΅Π½Π° компактная Ρ„ΠΎΡ€ΠΌΠ° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ установки Π±ΠΈΡ‚ΠΎΠ² Π² Ρ„Π»Π°Π³Π°Ρ…. НапримСр, для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ, Ρ‡Ρ‚ΠΎ Π±ΠΈΡ‚Ρ‹ состояния snat ΠΈ dnat Π½Π΅ установлСны ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ: … ct status ! snat,dnat для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ, Ρ‡Ρ‚ΠΎ Π±ΠΈΡ‚ syn установлСн Π² Π±ΠΈΡ‚ΠΎΠ²ΠΎΠΉ маскС syn,ack: … tcp flags syn / syn,ack для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ, Ρ‡Ρ‚ΠΎ Π±ΠΈΡ‚Ρ‹ fin ΠΈ rst Π½Π΅ установлСны Π² Π±ΠΈΡ‚ΠΎΠ²ΠΎΠΉ маскС syn,ack,fin,rst: … tcp flags != fin,rst / syn,ack,fin,rst
  • Π Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ использованиС ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова Β«verdictΒ» Π² опрСдСлСниях typeof для set/map: add map x m { typeof iifname . ip protocol . th dport : verdict ;}

umthombo: opennet.ru

Yongeza izimvo