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 ರಿಂದ ಲಿನಕ್ಸ್ ಕರ್ನಲ್‌ನ ಭಾಗವಾಗಿದೆ. ಕರ್ನಲ್ ಮಟ್ಟವು ಪ್ಯಾಕೆಟ್‌ಗಳಿಂದ ಡೇಟಾವನ್ನು ಹೊರತೆಗೆಯಲು, ಡೇಟಾ ಕಾರ್ಯಾಚರಣೆಗಳನ್ನು ನಿರ್ವಹಿಸಲು ಮತ್ತು ಹರಿವಿನ ನಿಯಂತ್ರಣಕ್ಕೆ ಮೂಲಭೂತ ಕಾರ್ಯಗಳನ್ನು ಒದಗಿಸುವ ಸಾಮಾನ್ಯ ಪ್ರೋಟೋಕಾಲ್-ಸ್ವತಂತ್ರ ಇಂಟರ್ಫೇಸ್ ಅನ್ನು ಮಾತ್ರ ಒದಗಿಸುತ್ತದೆ.

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

ಮುಖ್ಯ ಆವಿಷ್ಕಾರಗಳು:

  • ಸೆಟ್ ಪಟ್ಟಿಗಳಿಗೆ "*" ಮಾಸ್ಕ್ ಎಲಿಮೆಂಟ್‌ಗೆ ಬೆಂಬಲವನ್ನು ಸೇರಿಸಲಾಗಿದೆ, ಇದು ಸೆಟ್‌ನಲ್ಲಿ ವ್ಯಾಖ್ಯಾನಿಸಲಾದ ಇತರ ಅಂಶಗಳ ಅಡಿಯಲ್ಲಿ ಬರದ ಯಾವುದೇ ಪ್ಯಾಕೇಜ್‌ಗಳಿಗೆ ಪ್ರಚೋದಿಸಲ್ಪಡುತ್ತದೆ. ಟೇಬಲ್ x {ಮ್ಯಾಪ್ ಬ್ಲಾಕ್‌ಲಿಸ್ಟ್ {ಟೈಪ್ ipv4_addr : ತೀರ್ಪು ಫ್ಲ್ಯಾಗ್‌ಗಳ ಮಧ್ಯಂತರ ಅಂಶಗಳು = { 192.168.0.0/16 : ಸ್ವೀಕರಿಸಿ, 10.0.0.0/8 : ಸ್ವೀಕರಿಸಿ, * : ಡ್ರಾಪ್ } } ಚೈನ್ ವೈ {ಟೈಪ್ ಫಿಲ್ಟರ್ ಹುಕ್ ಪೂರ್ವನಿರ್ಧರಿತ ಆದ್ಯತೆ 0; ನೀತಿ ಸ್ವೀಕರಿಸಿ; ip saddr vmap @blocklist }}
  • “--define” ಆಯ್ಕೆಯನ್ನು ಬಳಸಿಕೊಂಡು ಕಮಾಂಡ್ ಲೈನ್‌ನಿಂದ ವೇರಿಯೇಬಲ್‌ಗಳನ್ನು ವ್ಯಾಖ್ಯಾನಿಸಲು ಸಾಧ್ಯವಿದೆ. # cat test.nft ಟೇಬಲ್ netdev x { chain y {ಟೈಪ್ ಫಿಲ್ಟರ್ ಹುಕ್ ಪ್ರವೇಶ ಸಾಧನಗಳು = $dev ಆದ್ಯತೆ 0; ನೀತಿ ಕುಸಿತ; } } # nft —define dev="{ eth0, eth1 }" -f test.nft
  • ನಕ್ಷೆ ಪಟ್ಟಿಗಳಲ್ಲಿ, ಸ್ಥಿರ (ಸ್ಟೇಟ್‌ಫುಲ್) ಅಭಿವ್ಯಕ್ತಿಗಳ ಬಳಕೆಯನ್ನು ಅನುಮತಿಸಲಾಗಿದೆ: ಟೇಬಲ್ ಇನೆಟ್ ಫಿಲ್ಟರ್ {ಮ್ಯಾಪ್ ಪೋರ್ಟ್‌ಮ್ಯಾಪ್ {ಟೈಪ್ inet_service : ತೀರ್ಪು ಕೌಂಟರ್ ಅಂಶಗಳು = { 22 ಕೌಂಟರ್ ಪ್ಯಾಕೆಟ್‌ಗಳು 0 ಬೈಟ್‌ಗಳು 0 : ಜಂಪ್ ssh_input, * ಕೌಂಟರ್ ಪ್ಯಾಕೆಟ್‌ಗಳು 0 ಬೈಟ್‌ಗಳು 0 : ಡ್ರಾಪ್ } } ಚೈನ್ ssh_input { } chain wan_input { tcp dport vmap @portmap } ಚೈನ್ ಪ್ರಿರೌಟಿಂಗ್ {ಟೈಪ್ ಫಿಲ್ಟರ್ ಹುಕ್ ಪ್ರಿರೂಟಿಂಗ್ ಆದ್ಯತೆ ಕಚ್ಚಾ; ನೀತಿ ಸ್ವೀಕರಿಸಿ; iif vmap { "lo" : ಜಂಪ್ wan_input } } }
  • ನೀಡಲಾದ ಪ್ಯಾಕೆಟ್ ಕುಟುಂಬಕ್ಕೆ ಹ್ಯಾಂಡ್ಲರ್‌ಗಳ ಪಟ್ಟಿಯನ್ನು ಪ್ರದರ್ಶಿಸಲು "ಪಟ್ಟಿ ಹುಕ್ಸ್" ಆಜ್ಞೆಯನ್ನು ಸೇರಿಸಲಾಗಿದೆ: # nft ಪಟ್ಟಿ ಹುಕ್ಸ್ ip ಸಾಧನ eth0 ಕುಟುಂಬ ip { hook ingress { +0000000010 chain netdev xy [nf_tables] +0000000300 chain inet mw [nf_tables ಪುಟ್] { -0000000100 chain ip ab [nf_tables] +0000000300 chain inet mz [nf_tables] } ಹುಕ್ ಫಾರ್ವರ್ಡ್ { -0000000225 selinux_ipv4_forward 0000000000 chain 0000000225 iptac4 selinux_ipv0000000225_output } ಹುಕ್ ಪೋಸ್ಟ್‌ರೌಟಿಂಗ್ { +4 XNUMX selinux_ipvXNUMX_postroute }}
  • ಕ್ಯೂ ಬ್ಲಾಕ್‌ಗಳು ಬಳಕೆದಾರರ ಜಾಗದಲ್ಲಿ ಸರತಿ ಸಾಲುಗಳಿಗೆ ಪ್ಯಾಕೆಟ್‌ಗಳನ್ನು ವಿತರಿಸಲು jhash, symhash ಮತ್ತು numgen ಅಭಿವ್ಯಕ್ತಿಗಳನ್ನು ಸಂಯೋಜಿಸಲು ಅನುವು ಮಾಡಿಕೊಡುತ್ತದೆ. … ಸಿಮ್ಹಾಶ್ ಮೋಡ್ 65536 ಗೆ ಕ್ಯೂ … ಕ್ಯೂ ಫ್ಲ್ಯಾಗ್‌ಗಳು ಬೈಪಾಸ್ ಟು ನಮ್‌ಜೆನ್ ಇಂಕ್ ಮೋಡ್ 65536… ಕ್ಯೂ ಝಾಶ್ ಓಯಿಫ್ . ಮೆಟಾ ಮಾರ್ಕ್ ಮೋಡ್ 32 "ಕ್ಯೂ" ಅನ್ನು ಅನಿಯಂತ್ರಿತ ಕೀಗಳ ಆಧಾರದ ಮೇಲೆ ಬಳಕೆದಾರರ ಜಾಗದಲ್ಲಿ ಸರದಿಯನ್ನು ಆಯ್ಕೆ ಮಾಡಲು ನಕ್ಷೆ ಪಟ್ಟಿಗಳೊಂದಿಗೆ ಸಂಯೋಜಿಸಬಹುದು. ... ಕ್ಯೂ ಫ್ಲ್ಯಾಗ್‌ಗಳು ಒಯಿಫ್‌ನೇಮ್ ನಕ್ಷೆಗೆ ಬೈಪಾಸ್ ಮಾಡಿ { "eth0" : 0, "ppp0" : 2, "eth1" : 2 }
  • ಹಲವಾರು ನಕ್ಷೆಗಳಲ್ಲಿ ಸೆಟ್ ಪಟ್ಟಿಯನ್ನು ಒಳಗೊಂಡಿರುವ ಅಸ್ಥಿರಗಳನ್ನು ವಿಸ್ತರಿಸಲು ಸಾಧ್ಯವಿದೆ. ಇಂಟರ್ಫೇಸ್‌ಗಳನ್ನು ವ್ಯಾಖ್ಯಾನಿಸಿ = { eth0, eth1 } ಟೇಬಲ್ ip x { chain y {ಟೈಪ್ ಫಿಲ್ಟರ್ ಹುಕ್ ಇನ್‌ಪುಟ್ ಆದ್ಯತೆ 0; ನೀತಿ ಸ್ವೀಕರಿಸಿ; iifname vmap { lo : ಸ್ವೀಕರಿಸಿ, $ ಇಂಟರ್‌ಫೇಸ್‌ಗಳು : ಡ್ರಾಪ್ } } } # nft -f x.nft # nft ಪಟ್ಟಿ ನಿಯಮಗಳು ಟೇಬಲ್ ip x { ಚೈನ್ ವೈ { ಟೈಪ್ ಫಿಲ್ಟರ್ ಹುಕ್ ಇನ್‌ಪುಟ್ ಆದ್ಯತೆ 0; ನೀತಿ ಸ್ವೀಕರಿಸಿ; iifname vmap { "lo" : ಸ್ವೀಕರಿಸಿ, "eth0" : ಡ್ರಾಪ್, "eth1" : ಡ್ರಾಪ್ } } }
  • ಮಧ್ಯಂತರಗಳಲ್ಲಿ vmaps (ತೀರ್ಪಿನ ನಕ್ಷೆ) ಸಂಯೋಜನೆಯನ್ನು ಅನುಮತಿಸಲಾಗಿದೆ: # nft ನಿಯಮವನ್ನು ಸೇರಿಸಿ xy tcp dport . ip saddr vmap { 1025-65535 . 192.168.10.2 : ಸ್ವೀಕರಿಸಿ }
  • NAT ಮ್ಯಾಪಿಂಗ್‌ಗಳಿಗಾಗಿ ಸರಳೀಕೃತ ಸಿಂಟ್ಯಾಕ್ಸ್. ವಿಳಾಸ ಶ್ರೇಣಿಗಳನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸಲು ಅನುಮತಿಸಲಾಗಿದೆ: ... ip saddr ನಕ್ಷೆಗೆ snat { 10.141.11.4 : 192.168.2.2-192.168.2.4 } ಅಥವಾ ಸ್ಪಷ್ಟ IP ವಿಳಾಸಗಳು ಮತ್ತು ಪೋರ್ಟ್‌ಗಳು: ... dnat to ip saddr ನಕ್ಷೆ { 10.141.11.4 . 192.168.2.3 } ಅಥವಾ IP ಶ್ರೇಣಿಗಳು ಮತ್ತು ಪೋರ್ಟ್‌ಗಳ ಸಂಯೋಜನೆಗಳು: ... dnat to ip saddr . tcp dport ನಕ್ಷೆ { 80 . 192.168.1.2: 80-10.141.10.2. 10.141.10.5-8888 }

ಮೂಲ: opennet.ru

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