nftables ಪ್ಯಾಕೆಟ್ ಫಿಲ್ಟರ್ 1.0.6 ಬಿಡುಗಡೆ

ಪ್ಯಾಕೆಟ್ ಫಿಲ್ಟರ್ nftables 1.0.6 ಬಿಡುಗಡೆಯನ್ನು ಪ್ರಕಟಿಸಲಾಗಿದೆ, IPv4, IPv6, ARP ಮತ್ತು ನೆಟ್‌ವರ್ಕ್ ಸೇತುವೆಗಳಿಗಾಗಿ ಪ್ಯಾಕೆಟ್ ಫಿಲ್ಟರಿಂಗ್ ಇಂಟರ್‌ಫೇಸ್‌ಗಳನ್ನು ಏಕೀಕರಿಸುತ್ತದೆ (iptables, ip6table, arptables ಮತ್ತು ebtables ಅನ್ನು ಬದಲಿಸುವ ಗುರಿಯನ್ನು ಹೊಂದಿದೆ). nftables ಪ್ಯಾಕೇಜ್ ಬಳಕೆದಾರರ ಜಾಗದಲ್ಲಿ ಕಾರ್ಯನಿರ್ವಹಿಸುವ ಪ್ಯಾಕೆಟ್ ಫಿಲ್ಟರ್ ಘಟಕಗಳನ್ನು ಒಳಗೊಂಡಿದೆ, ಆದರೆ ಕರ್ನಲ್-ಮಟ್ಟದ ಕೆಲಸವನ್ನು nf_tables ಉಪವ್ಯವಸ್ಥೆಯಿಂದ ಒದಗಿಸಲಾಗುತ್ತದೆ, ಇದು ಬಿಡುಗಡೆಯಾದ 3.13 ರಿಂದ ಲಿನಕ್ಸ್ ಕರ್ನಲ್‌ನ ಭಾಗವಾಗಿದೆ. ಕರ್ನಲ್ ಮಟ್ಟವು ಪ್ಯಾಕೆಟ್‌ಗಳಿಂದ ಡೇಟಾವನ್ನು ಹೊರತೆಗೆಯಲು, ಡೇಟಾ ಕಾರ್ಯಾಚರಣೆಗಳನ್ನು ನಿರ್ವಹಿಸಲು ಮತ್ತು ಹರಿವಿನ ನಿಯಂತ್ರಣಕ್ಕೆ ಮೂಲಭೂತ ಕಾರ್ಯಗಳನ್ನು ಒದಗಿಸುವ ಸಾಮಾನ್ಯ ಪ್ರೋಟೋಕಾಲ್-ಸ್ವತಂತ್ರ ಇಂಟರ್ಫೇಸ್ ಅನ್ನು ಮಾತ್ರ ಒದಗಿಸುತ್ತದೆ.

ಫಿಲ್ಟರಿಂಗ್ ನಿಯಮಗಳು ಮತ್ತು ಪ್ರೋಟೋಕಾಲ್-ನಿರ್ದಿಷ್ಟ ಹ್ಯಾಂಡ್ಲರ್‌ಗಳನ್ನು ಯೂಸರ್-ಸ್ಪೇಸ್ ಬೈಟ್‌ಕೋಡ್‌ಗೆ ಸಂಕಲಿಸಲಾಗುತ್ತದೆ, ನಂತರ ಈ ಬೈಟ್‌ಕೋಡ್ ಅನ್ನು ನೆಟ್‌ಲಿಂಕ್ ಇಂಟರ್ಫೇಸ್ ಬಳಸಿ ಕರ್ನಲ್‌ಗೆ ಲೋಡ್ ಮಾಡಲಾಗುತ್ತದೆ ಮತ್ತು ಬಿಪಿಎಫ್ (ಬರ್ಕ್ಲಿ ಪ್ಯಾಕೆಟ್ ಫಿಲ್ಟರ್‌ಗಳು) ಹೋಲುವ ವಿಶೇಷ ವರ್ಚುವಲ್ ಗಣಕದಲ್ಲಿ ಕರ್ನಲ್‌ನಲ್ಲಿ ಕಾರ್ಯಗತಗೊಳಿಸಲಾಗುತ್ತದೆ. ಈ ವಿಧಾನವು ಕರ್ನಲ್ ಮಟ್ಟದಲ್ಲಿ ಚಾಲನೆಯಲ್ಲಿರುವ ಫಿಲ್ಟರಿಂಗ್ ಕೋಡ್‌ನ ಗಾತ್ರವನ್ನು ಗಮನಾರ್ಹವಾಗಿ ಕಡಿಮೆ ಮಾಡಲು ಮತ್ತು ಪಾರ್ಸಿಂಗ್ ನಿಯಮಗಳ ಎಲ್ಲಾ ಕಾರ್ಯಗಳನ್ನು ಮತ್ತು ಪ್ರೋಟೋಕಾಲ್‌ಗಳೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುವ ತರ್ಕವನ್ನು ಬಳಕೆದಾರರ ಜಾಗಕ್ಕೆ ಸರಿಸಲು ಸಾಧ್ಯವಾಗಿಸುತ್ತದೆ.

ಪ್ರಮುಖ ಬದಲಾವಣೆಗಳು:

  • В оптимизаторе правил, вызываемом при указании опции «-o/—optimize», налажена автоматическая упаковка правил через их объединение и преобразование в map- и set-списки. Например, правила # cat ruleset.nft table ip x { chain y { type filter hook input priority filter; policy drop; meta iifname eth1 ip saddr 1.1.1.1 ip daddr 2.2.2.3 accept meta iifname eth1 ip saddr 1.1.1.2 ip daddr 2.2.2.4 accept meta iifname eth1 ip saddr 1.1.1.2 ip daddr 2.2.3.0/24 accept meta iifname eth1 ip saddr 1.1.1.2 ip daddr 2.2.4.0-2.2.4.10 accept meta iifname eth2 ip saddr 1.1.1.3 ip daddr 2.2.2.5 accept } } после выполнения «nft -o -c -f ruleset.nft» будут преобразованы в следующим образом: ruleset.nft:4:17-74: meta iifname eth1 ip saddr 1.1.1.1 ip daddr 2.2.2.3 accept ruleset.nft:5:17-74: meta iifname eth1 ip saddr 1.1.1.2 ip daddr 2.2.2.4 accept ruleset.nft:6:17-77: meta iifname eth1 ip saddr 1.1.1.2 ip daddr 2.2.3.0/24 accept ruleset.nft:7:17-83: meta iifname eth1 ip saddr 1.1.1.2 ip daddr 2.2.4.0-2.2.4.10 accept ruleset.nft:8:17-74: meta iifname eth2 ip saddr 1.1.1.3 ip daddr 2.2.2.5 accept into: iifname . ip saddr . ip daddr { eth1 . 1.1.1.1 . 2.2.2.3, eth1 . 1.1.1.2 . 2.2.2.4, eth1 . 1.1.1.2 . 2.2.3.0/24, eth1 . 1.1.1.2 . 2.2.4.0-2.2.4.10, eth2 . 1.1.1.3 . 2.2.2.5 } accept
  • Оптимизатор также может преобразовывать в более компактную форму правила, в которых уже используются простые set-списки, например правила: # cat ruleset.nft table ip filter { chain input { type filter hook input priority filter; policy drop; iifname «lo» accept ct state established,related accept comment «In traffic we originate, we trust» iifname «enp0s31f6» ip saddr { 209.115.181.102, 216.197.228.230 } ip daddr 10.0.0.149 udp sport 123 udp dport 32768-65535 accept iifname «enp0s31f6» ip saddr { 64.59.144.17, 64.59.150.133 } ip daddr 10.0.0.149 udp sport 53 udp dport 32768-65535 accept } } после выполнения «nft -o -c -f ruleset.nft» будут упакованы следующим образом: ruleset.nft:6:22-149: iifname «enp0s31f6» ip saddr { 209.115.181.102, 216.197.228.230 } ip daddr 10.0.0.149 udp sport 123 udp dport 32768-65535 accept ruleset.nft:7:22-143: iifname «enp0s31f6» ip saddr { 64.59.144.17, 64.59.150.133 } ip daddr 10.0.0.149 udp sport 53 udp dport 32768-65535 accept into: iifname . ip saddr . ip daddr . udp sport . udp dport { enp0s31f6 . 209.115.181.102 . 10.0.0.149 . 123 . 32768-65535, enp0s31f6 . 216.197.228.230 . 10.0.0.149 . 123 . 32768-65535, enp0s31f6 . 64.59.144.17 . 10.0.0.149 . 53 . 32768-65535, enp0s31f6 . 64.59.150.133 . 10.0.0.149 . 53 . 32768-65535 } accept
  • Решена проблема с генерацией байткода для слияния интервалов, в которых применяются типы с разным порядком следования байтов, например IPv4 (сетевой порядок следования байтов) и meta mark (системный порядок следования байтов). table ip x { map w { typeof ip saddr . meta mark : verdict flags interval counter elements = { 127.0.0.1-127.0.0.4 . 0x123434-0xb00122 : accept, 192.168.0.10-192.168.1.20 . 0x0000aa00-0x0000aaff : accept, } } chain k { type filter hook input priority filter; policy drop; ip saddr . meta mark vmap @w } }
  • Налажено сопоставления редких протоколов при использовании raw-выражений, например: meta l4proto 91 @th,400,16 0x0 accept
  • Решены проблемы с включением правил с интервалами: insert rule x y tcp sport { 3478-3497, 16384-16387 } counter accept
  • Улучшен API JSON, в котором появилась поддержка выражений в set- и map-списках.
  • В расширениях к python-библиотеке nftables разрешена загрузка наборов правил для обработки в режиме проверки («-c») и добавлена поддержка внешнего определения переменных.
  • В элементах set-списков разрешено добавление комментариев.
  • В byte ratelimit разрешено указания нулевого значения.

ಮೂಲ: opennet.ru

ಕಾಮೆಂಟ್ ಅನ್ನು ಸೇರಿಸಿ