nftables ΠΏΠ°ΠΊΠ΅Ρ‚Π΅Π½ Ρ„ΠΈΠ»Ρ‚ΡŠΡ€ вСрсия 0.9.9

Π˜Π·Π΄Π°Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° Ρ„ΠΈΠ»Ρ‚ΡŠΡ€Π° Π·Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ 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.

ΠŸΠ°ΠΊΠ΅Ρ‚ΡŠΡ‚ nftables Π²ΠΊΠ»ΡŽΡ‡Π²Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈ Π·Π° Ρ„ΠΈΠ»Ρ‚ΡŠΡ€ Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ работят Π² потрСбитСлското пространство, Π΄ΠΎΠΊΠ°Ρ‚ΠΎ Π½ΠΈΠ²ΠΎΡ‚ΠΎ Π½Π° ядрото сС прСдоставя ΠΎΡ‚ подсистСмата nf_tables, която Π΅ част ΠΎΡ‚ ядрото Π½Π° Linux ΠΎΡ‚ вСрсия 3.13. На Π½ΠΈΠ²ΠΎ ядро ​​сС прСдоставя само ΠΎΠ±Ρ‰ интСрфСйс, нСзависим ΠΎΡ‚ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ», ΠΊΠΎΠΉΡ‚ΠΎ прСдоставя основни Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π·Π° ΠΈΠ·Π²Π»ΠΈΡ‡Π°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ ΠΎΡ‚ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ, ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π°Π½Π΅ Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с Π΄Π°Π½Π½ΠΈ ΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΏΠΎΡ‚ΠΎΠΊΠ°.

Π‘Π°ΠΌΠΈΡ‚Π΅ ΠΏΡ€Π°Π²ΠΈΠ»Π° Π·Π° Ρ„ΠΈΠ»Ρ‚Ρ€ΠΈΡ€Π°Π½Π΅ ΠΈ спСцифичнитС Π·Π° ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° ΠΌΠ°Π½ΠΈΠΏΡƒΠ»Π°Ρ‚ΠΎΡ€ΠΈ сС ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°Ρ‚ Π² Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ Π½Π° потрСбитСлското пространство, слСд ΠΊΠΎΠ΅Ρ‚ΠΎ Ρ‚ΠΎΠ·ΠΈ Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ сС Π·Π°Ρ€Π΅ΠΆΠ΄Π° Π² ядрото с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° интСрфСйса Netlink ΠΈ сС изпълнява Π² ядрото Π² спСциална Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½Π° машина, наподобяваща BPF (Berkeley Packet Filters). Π’ΠΎΠ·ΠΈ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΏΡ€Π°Π²ΠΈ възмоТно Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ намаляванС Π½Π° Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π½Π° филтриращия ΠΊΠΎΠ΄, Ρ€Π°Π±ΠΎΡ‚Π΅Ρ‰ Π½Π° Π½ΠΈΠ²ΠΎ ядро, ΠΈ прСмСстванС Π½Π° всички Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π° ΠΏΡ€Π°Π²ΠΈΠ»Π°Ρ‚Π° Π·Π° Π°Π½Π°Π»ΠΈΠ· ΠΈ Π»ΠΎΠ³ΠΈΠΊΠ°Ρ‚Π° Π½Π° Ρ€Π°Π±ΠΎΡ‚Π° с ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΠΈ Π² потрСбитСлското пространство.

Основни ΠΈΠ½ΠΎΠ²Π°Ρ†ΠΈΠΈ:

  • Π’ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚Ρ‚Π° Π·Π° прСмСстванС Π½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π° Π½Π° Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ‚Π° Π½Π° ΠΏΠΎΡ‚ΠΎΠΊΠ° към страната Π½Π° мрСТовия Π°Π΄Π°ΠΏΡ‚Π΅Ρ€ Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π°, Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Π½Π° с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Ρ„Π»Π°Π³Π° β€žΡ€Π°Π·Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅β€œ. Flowtable Π΅ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΡŠΠΌ Π·Π° ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΏΡŠΡ‚Ρ Π½Π° прСнасочванС Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ, ΠΏΡ€ΠΈ ΠΊΠΎΠΉΡ‚ΠΎ ΠΏΡŠΠ»Π½ΠΎΡ‚ΠΎ ΠΏΡ€Π΅ΠΌΠΈΠ½Π°Π²Π°Π½Π΅ Π½Π° всички Π²Π΅Ρ€ΠΈΠ³ΠΈ Π·Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° ΠΏΡ€Π°Π²ΠΈΠ»Π° сС ΠΏΡ€ΠΈΠ»Π°Π³Π° само към ΠΏΡŠΡ€Π²ΠΈΡ ΠΏΠ°ΠΊΠ΅Ρ‚, Π° всички останали ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ Π² ΠΏΠΎΡ‚ΠΎΠΊΠ° сС ΠΏΡ€Π΅ΠΏΡ€Π°Ρ‰Π°Ρ‚ Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ. table ip global { flowtable f { hook ingress priority filter + 1 devices = { lan3, lan0, wan } flags offload } chain forward { Ρ‚ΠΈΠΏ Ρ„ΠΈΠ»Ρ‚ΡŠΡ€ hook forward ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π΅Π½ Ρ„ΠΈΠ»Ρ‚ΡŠΡ€; ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° ΠΏΡ€ΠΈΠ΅ΠΌΠ°; ip ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» { tcp, udp } ΠΏΠΎΡ‚ΠΎΠΊ добавянС @f } Π²Π΅Ρ€ΠΈΠ³Π° публикация { Ρ‚ΠΈΠΏ nat hook postrouting ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π΅Π½ Ρ„ΠΈΠ»Ρ‚ΡŠΡ€; ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° ΠΏΡ€ΠΈΠ΅ΠΌΠ°; oifname "wan" маскарад } }
  • Π”ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° ΠΏΡ€ΠΈΠΊΠ°Ρ‡Π²Π°Π½Π΅ Π½Π° Ρ„Π»Π°Π³ Π½Π° собствСник към Ρ‚Π°Π±Π»ΠΈΡ†Π°, Π·Π° Π΄Π° сС Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€Π° ΠΈΠ·ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎΡ‚ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ‚Π° ΠΎΡ‚ процСс. ΠšΠΎΠ³Π°Ρ‚ΠΎ Π΄Π°Π΄Π΅Π½ процСс ΠΏΡ€ΠΈΠΊΠ»ΡŽΡ‡ΠΈ, Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ‚Π°, ΡΠ²ΡŠΡ€Π·Π°Π½Π° с Π½Π΅Π³ΠΎ, сС ΠΈΠ·Ρ‚Ρ€ΠΈΠ²Π° Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ. Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡΡ‚Π° Π·Π° процСса сС ΠΏΠΎΠΊΠ°Π·Π²Π° Π² дъмпа Π½Π° ΠΏΡ€Π°Π²ΠΈΠ»Π°Ρ‚Π° ΠΏΠΎΠ΄ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Π½Π° ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€: table ip x { # progname nft flags owner chain y { type filter hook input priority filter; ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° ΠΏΡ€ΠΈΠ΅ΠΌΠ°; брояч Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ 1 Π±Π°ΠΉΡ‚Π° 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.1 q/vlan id=2 ΠΈ Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΎ капсулиранС Π½Π° IP ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ: ... Ρ‚ΠΈΠΏ ether 8021ad vlan id 1 vlan Ρ‚ΠΈΠΏ 8021q vlan id 2 vlan Ρ‚ΠΈΠΏ ip брояч
  • Π”ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° рСсурси с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° ΡƒΠ½ΠΈΡ„ΠΈΡ†ΠΈΡ€Π°Π½Π°Ρ‚Π° йСрархия cgroups v2. ΠšΠ»ΡŽΡ‡ΠΎΠ²Π°Ρ‚Π° Ρ€Π°Π·Π»ΠΈΠΊΠ° ΠΌΠ΅ΠΆΠ΄Ρƒ cgroups v2 ΠΈ v1 Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΎΠ±Ρ‰Π° йСрархия Π½Π° cgroups Π·Π° всички Π²ΠΈΠ΄ΠΎΠ²Π΅ рСсурси, вмСсто ΠΎΡ‚Π΄Π΅Π»Π½ΠΈ ΠΉΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ Π·Π° разпрСдСлянС Π½Π° CPU рСсурси, Π·Π° Ρ€Π΅Π³ΡƒΠ»ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚ ΠΈ Π·Π° I/O. НапримСр, Π·Π° Π΄Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚Π΅ Π΄Π°Π»ΠΈ ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²Π΅Π½ΠΈΠΊΡŠΡ‚ Π½Π° сокСт Π½Π° ΠΏΡŠΡ€Π²ΠΎ Π½ΠΈΠ²ΠΎ cgroupv2 съвпада с маската β€žsystem.sliceβ€œ, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ конструкцията: ... socket cgroupv2 Π½ΠΈΠ²ΠΎ 1 β€žsystem.sliceβ€œ
  • Π”ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π·Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈ Π½Π° SCTP ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ (функционалността, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ° Π·Π° Ρ‚ΠΎΠ²Π°, Ρ‰Π΅ сС появи Π² ядрото Π½Π° Linux 5.14). НапримСр, Π·Π° Π΄Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚Π΅ Π΄Π°Π»ΠΈ Π΄Π°Π΄Π΅Π½ ΠΏΠ°ΠΊΠ΅Ρ‚ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ° част с Ρ‚ΠΈΠΏ β€žΠ΄Π°Π½Π½ΠΈβ€œ ΠΈ ΠΏΠΎΠ»Π΅ β€žΡ‚ΠΈΠΏβ€œ: ... sctp chunk data exists ... sctp chunk data type 0
  • Π˜Π·ΠΏΡŠΠ»Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° опСрацията ΠΏΠΎ Π·Π°Ρ€Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° ΠΏΡ€Π°Π²ΠΈΠ»ΠΎΡ‚ΠΎ Π΅ ускорСно ΠΏΡ€ΠΈΠ±Π»ΠΈΠ·ΠΈΡ‚Π΅Π»Π½ΠΎ Π΄Π²Π° ΠΏΡŠΡ‚ΠΈ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Ρ„Π»Π°Π³Π° β€ž-fβ€œ. Π˜Π·Π²Π΅ΠΆΠ΄Π°Π½Π΅Ρ‚ΠΎ Π½Π° списъка с ΠΏΡ€Π°Π²ΠΈΠ»Π° ΡΡŠΡ‰ΠΎ Π΅ ускорСно.
  • ΠžΡΠΈΠ³ΡƒΡ€Π΅Π½ Π΅ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π΅Π½ формуляр Π·Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π΄Π°Π»ΠΈ са Π·Π°Π΄Π°Π΄Π΅Π½ΠΈ Ρ„Π»Π°Π³ Π±ΠΈΡ‚ΠΎΠ²Π΅. НапримСр, Π·Π° Π΄Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚Π΅ Π΄Π°Π»ΠΈ Π±ΠΈΡ‚ΠΎΠ²Π΅Ρ‚Π΅ Π·Π° ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅ snat ΠΈ dnat Π½Π΅ са Π·Π°Π΄Π°Π΄Π΅Π½ΠΈ, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° посочитС: ... ct status ! snat,dnat Π·Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π΄Π°Π»ΠΈ Π±ΠΈΡ‚ΡŠΡ‚ syn Π΅ Π·Π°Π΄Π°Π΄Π΅Π½ Π² Π±ΠΈΡ‚ΠΎΠ²Π°Ρ‚Π° маска syn,ack: ... tcp Ρ„Π»Π°Π³ΠΎΠ²Π΅ syn / syn,ack Π·Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π΄Π°Π»ΠΈ Π±ΠΈΡ‚ΠΎΠ²Π΅Ρ‚Π΅ fin ΠΈ rst Π½Π΅ са Π·Π°Π΄Π°Π΄Π΅Π½ΠΈ Π² Π±ΠΈΡ‚ΠΎΠ²Π°Ρ‚Π° маска syn,ack,fin,rst: ... tcp Ρ„Π»Π°Π³ΠΎΠ²Π΅ ! = fin,rst / syn,ack,fin,rst
  • Π Π°Π·Ρ€Π΅ΡˆΠ΅Ρ‚Π΅ ΠΊΠ»ΡŽΡ‡ΠΎΠ²Π°Ρ‚Π° Π΄ΡƒΠΌΠ° "Π²Π΅Ρ€Π΄ΠΈΠΊΡ‚" Π² Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ†ΠΈΠΈΡ‚Π΅ Π½Π° set/map typeof: add map xm { typeof iifname. ip ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» th dport : ΠΏΡ€ΠΈΡΡŠΠ΄Π° ;}

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

ДобавянС Π½Π° Π½ΠΎΠ² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€