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

Π˜Π·Π΄Π°Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° пакСтния Ρ„ΠΈΠ»Ρ‚ΡŠΡ€ nftables 1.0.1 бСшС ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°Π½ΠΎ, обСдинявайки интСрфСйситС Π·Π° Ρ„ΠΈΠ»Ρ‚Ρ€ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ Π·Π° IPv4, IPv6, ARP ΠΈ ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈ мостовС (насочСни към замяна Π½Π° iptables, ip6table, arptables ΠΈ ebtables). ΠŸΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΈ Π·Π° Ρ€Π°Π±ΠΎΡ‚Π° Π½Π° ΠΈΠ·Π΄Π°Π½ΠΈΠ΅Ρ‚ΠΎ nftables 1.0.1, са Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈ Π² ядрото Π½Π° Linux 5.16-rc1.

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

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

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

  • НамалСна консумация Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚ ΠΏΡ€ΠΈ Π·Π°Ρ€Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° Π³ΠΎΠ»Π΅ΠΌΠΈ ΡΠΏΠΈΡΡŠΡ†ΠΈ с Π½Π°Π±ΠΎΡ€ΠΈ ΠΈ ΠΊΠ°Ρ€Ρ‚ΠΈ.
  • ΠŸΡ€Π΅Π·Π°Ρ€Π΅ΠΆΠ΄Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΡΠΏΠΈΡΡŠΡ†ΠΈΡ‚Π΅ с ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ‚ΠΈ ΠΈ ΠΊΠ°Ρ€Ρ‚ΠΈ Π΅ ускорСно.
  • Π˜Π·Π²Π΅ΠΆΠ΄Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΈΠ·Π±Ρ€Π°Π½ΠΈ Ρ‚Π°Π±Π»ΠΈΡ†ΠΈ ΠΈ Π²Π΅Ρ€ΠΈΠ³ΠΈ Π² Π³ΠΎΠ»Π΅ΠΌΠΈ Π½Π°Π±ΠΎΡ€ΠΈ ΠΎΡ‚ ΠΏΡ€Π°Π²ΠΈΠ»Π° Π΅ ускорСно. НапримСр, Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ Π·Π° изпълнСниС Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° β€žnft list rulesetβ€œ Π·Π° ΠΏΠΎΠΊΠ°Π·Π²Π°Π½Π΅ Π½Π° Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ ΠΏΡ€Π°Π²ΠΈΠ»Π° със 100 хиляди Ρ€Π΅Π΄Π° Π΅ 3.049 сСкунди, Π° ΠΏΡ€ΠΈ ΠΈΠ·Π²Π΅ΠΆΠ΄Π°Π½Π΅ само Π½Π° nat ΠΈ filter Ρ‚Π°Π±Π»ΠΈΡ†ΠΈΡ‚Π΅ (β€žnft list table natβ€œ, β€žnft list table filter ”) сС намалява Π΄ΠΎ 1.969 ΠΈ 0.697 сСкунди.
  • Π˜Π·ΠΏΡŠΠ»Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° заявки с опцията β€ž--terseβ€œ Π΅ ускорСно ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° ΠΏΡ€Π°Π²ΠΈΠ»Π° с Π³ΠΎΠ»Π΅ΠΌΠΈ ΡΠΏΠΈΡΡŠΡ†ΠΈ с Π½Π°Π±ΠΎΡ€ΠΈ ΠΈ ΠΊΠ°Ρ€Ρ‚ΠΈ.
  • Π’ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΅ Π΄Π° сС Ρ„ΠΈΠ»Ρ‚Ρ€ΠΈΡ€Π° Ρ‚Ρ€Π°Ρ„ΠΈΠΊ ΠΎΡ‚ Π²Π΅Ρ€ΠΈΠ³Π°Ρ‚Π° β€žegressβ€œ, ΠΊΠΎΠΉΡ‚ΠΎ сС ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π° Π½Π° ΡΡŠΡ‰ΠΎΡ‚ΠΎ Π½ΠΈΠ²ΠΎ ΠΊΠ°Ρ‚ΠΎ ΠΌΠ°Π½ΠΈΠΏΡƒΠ»Π°Ρ‚ΠΎΡ€Π° Π½Π° ΠΈΠ·Ρ…ΠΎΠ΄Π° във Π²Π΅Ρ€ΠΈΠ³Π°Ρ‚Π° netdev (egress hook), Ρ‚.Π΅. Π½Π° Π΅Ρ‚Π°ΠΏΠ°, ΠΊΠΎΠ³Π°Ρ‚ΠΎ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΡŠΡ‚ ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π° ΠΏΠ°ΠΊΠ΅Ρ‚ ΠΎΡ‚ мрСТовия стСк Π½Π° ядрото. Ρ‚Π°Π±Π»ΠΈΡ†Π° netdev Ρ„ΠΈΠ»Ρ‚ΡŠΡ€ { Π²Π΅Ρ€ΠΈΠ³Π° ΠΈΠ·Ρ…ΠΎΠ΄ { Ρ‚ΠΈΠΏ Ρ„ΠΈΠ»Ρ‚ΡŠΡ€ ΠΊΡƒΠΊΠ° ΠΈΠ·Ρ…ΠΎΠ΄Π½ΠΈ устройства = { eth0, eth1 } ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ 0; meta priority set ip saddr map { 192.168.10.2 : abcd:2, 192.168.10.3 : abcd:3 } } }
  • Позволява ΡΡŠΠΏΠΎΡΡ‚Π°Π²ΡΠ½Π΅ ΠΈ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€Π°Π½Π΅ Π½Π° Π±Π°ΠΉΡ‚ΠΎΠ²Π΅ Π² Π·Π°Π³Π»Π°Π²ΠΊΠ°Ρ‚Π° ΠΈ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ ΠΏΡ€ΠΈ Π΄Π°Π΄Π΅Π½ΠΎ отмСстванС. # nft добавянС Π½Π° ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ xy @ih,32,32 0x14000000 брояч # nft добавянС Π½Π° ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ xy @ih,32,32 Π½Π°Π±ΠΎΡ€ 0x14000000 брояч

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

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