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

ಪ್ಯಾಕೆಟ್ ಫಿಲ್ಟರ್ nftables 1.0.3 ಬಿಡುಗಡೆಯನ್ನು ಪ್ರಕಟಿಸಲಾಗಿದೆ, IPv4, IPv6, ARP ಮತ್ತು ನೆಟ್‌ವರ್ಕ್ ಸೇತುವೆಗಳಿಗಾಗಿ ಪ್ಯಾಕೆಟ್ ಫಿಲ್ಟರಿಂಗ್ ಇಂಟರ್‌ಫೇಸ್‌ಗಳನ್ನು ಏಕೀಕರಿಸುತ್ತದೆ (iptables, ip6table, arptables ಮತ್ತು ebtables ಅನ್ನು ಬದಲಿಸುವ ಗುರಿಯನ್ನು ಹೊಂದಿದೆ). nftables 1.0.3 ಬಿಡುಗಡೆಯು ಕಾರ್ಯನಿರ್ವಹಿಸಲು ಅಗತ್ಯವಿರುವ ಬದಲಾವಣೆಗಳನ್ನು Linux 5.18 ಕರ್ನಲ್‌ನಲ್ಲಿ ಸೇರಿಸಲಾಗಿದೆ.

nftables ಪ್ಯಾಕೇಜ್ ಬಳಕೆದಾರರ ಜಾಗದಲ್ಲಿ ಕಾರ್ಯನಿರ್ವಹಿಸುವ ಪ್ಯಾಕೆಟ್ ಫಿಲ್ಟರ್ ಘಟಕಗಳನ್ನು ಒಳಗೊಂಡಿದೆ, ಆದರೆ ಕರ್ನಲ್-ಮಟ್ಟದ ಕೆಲಸವನ್ನು nf_tables ಉಪವ್ಯವಸ್ಥೆಯಿಂದ ಒದಗಿಸಲಾಗುತ್ತದೆ, ಇದು ಬಿಡುಗಡೆಯಾದ 3.13 ರಿಂದ ಲಿನಕ್ಸ್ ಕರ್ನಲ್‌ನ ಭಾಗವಾಗಿದೆ. ಕರ್ನಲ್ ಮಟ್ಟವು ಪ್ಯಾಕೆಟ್‌ಗಳಿಂದ ಡೇಟಾವನ್ನು ಹೊರತೆಗೆಯಲು, ಡೇಟಾ ಕಾರ್ಯಾಚರಣೆಗಳನ್ನು ನಿರ್ವಹಿಸಲು ಮತ್ತು ಹರಿವಿನ ನಿಯಂತ್ರಣಕ್ಕೆ ಮೂಲಭೂತ ಕಾರ್ಯಗಳನ್ನು ಒದಗಿಸುವ ಸಾಮಾನ್ಯ ಪ್ರೋಟೋಕಾಲ್-ಸ್ವತಂತ್ರ ಇಂಟರ್ಫೇಸ್ ಅನ್ನು ಮಾತ್ರ ಒದಗಿಸುತ್ತದೆ.

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

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

  • ಸೆಟ್ ಪಟ್ಟಿಗಳು ಈಗ ಮಾಸ್ಕ್ ಮೂಲಕ ನೆಟ್‌ವರ್ಕ್ ಇಂಟರ್‌ಫೇಸ್ ಹೆಸರುಗಳನ್ನು ಹೊಂದಿಸುವುದನ್ನು ಬೆಂಬಲಿಸುತ್ತವೆ, ಉದಾಹರಣೆಗೆ, “*” ಚಿಹ್ನೆಯನ್ನು ಬಳಸಿಕೊಂಡು ನಿರ್ದಿಷ್ಟಪಡಿಸಲಾಗಿದೆ: ಟೇಬಲ್ inet testifsets {set simple_wild { type ifname flags interval elements = { “abcdef*”, “othername”, “ppp0” } } ಚೈನ್ v4icmp {ಟೈಪ್ ಫಿಲ್ಟರ್ ಹುಕ್ ಇನ್‌ಪುಟ್ ಆದ್ಯತೆ 0; ನೀತಿ ಸ್ವೀಕರಿಸಿ; iifname @simple_wild ಕೌಂಟರ್ ಪ್ಯಾಕೆಟ್‌ಗಳು 0 ಬೈಟ್‌ಗಳು 0 iifname { “abcdef*”, “eth0” } ಕೌಂಟರ್ ಪ್ಯಾಕೆಟ್‌ಗಳು 0 ಬೈಟ್‌ಗಳು 0 }}
  • ಕಾರ್ಯಾಚರಣೆಯ ಸಮಯದಲ್ಲಿ ಛೇದಿಸುವ ಸೆಟ್-ಲಿಸ್ಟ್ ಅಂಶಗಳ ಸ್ವಯಂಚಾಲಿತ ವಿಲೀನವನ್ನು ಅಳವಡಿಸಲಾಗಿದೆ. ಹಿಂದೆ, "ಸ್ವಯಂ-ವಿಲೀನ" ಆಯ್ಕೆಯನ್ನು ಹೊಂದಿಸಿದಾಗ, ವಿಲೀನವನ್ನು ನಿಯಮಗಳನ್ನು ಘೋಷಿಸುವ ಹಂತದಲ್ಲಿ ನಡೆಸಲಾಯಿತು, ಆದರೆ ಈಗ ಕಾರ್ಯಾಚರಣೆಯ ಸಮಯದಲ್ಲಿ ಹೊಸ ಅಂಶಗಳನ್ನು ಹೆಚ್ಚಿಸಿದಾಗ ಅದು ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ. ಉದಾಹರಣೆಗೆ, ಘೋಷಣೆಯ ಹಂತದಲ್ಲಿ, ಪಟ್ಟಿಯನ್ನು ಹೊಂದಿಸಲಾಗಿದೆ y {ಧ್ವಜಗಳ ಮಧ್ಯಂತರ ಸ್ವಯಂ-ವಿಲೀನ ಅಂಶಗಳು = { 1.2.3.0, 1.2.3.255/1.2.3.0, 24, 3.3.3.3, 4.4.4.4-4.4.4.4 , 4.4.4.8 , 3.3.3.4 } } ಅನ್ನು ಅಂಶಗಳಾಗಿ ಪರಿವರ್ತಿಸಲಾಗುತ್ತದೆ = { 3.3.3.5/1.2.3.0, 24-3.3.3.3, 3.3.3.5-4.4.4.4 } ಮತ್ತು ನಂತರ ನೀವು ಹೊಸ ಅಂಶಗಳನ್ನು ಸೇರಿಸಿದರೆ # nft ಅಂಶವನ್ನು ಸೇರಿಸಿ ip xy {4.4.4.8 -1.2.3.0, 1.2.4.255 } ಅಂಶಗಳಂತೆ ಕಾಣುತ್ತದೆ = { 3.3.3.6-1.2.3.0, 1.2.4.255-3.3.3.3, 3.3.3.6-4.4.4.4 }

    ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ಶ್ರೇಣಿಯ ಐಟಂಗಳೊಳಗೆ ಬರುವ ಪಟ್ಟಿಯಿಂದ ಪ್ರತ್ಯೇಕ ಐಟಂಗಳನ್ನು ನೀವು ತೆಗೆದುಹಾಕಿದಾಗ, ಶ್ರೇಣಿಯನ್ನು ಸಂಕ್ಷಿಪ್ತಗೊಳಿಸಲಾಗುತ್ತದೆ ಅಥವಾ ವಿಭಜಿಸಲಾಗುತ್ತದೆ.

  • ಬಹು ವಿಳಾಸ ಅನುವಾದ (NAT) ನಿಯಮಗಳನ್ನು ನಕ್ಷೆ ಪಟ್ಟಿಗೆ ಸಂಯೋಜಿಸುವ ಬೆಂಬಲವನ್ನು ನಿಯಮಗಳ ಆಪ್ಟಿಮೈಜರ್‌ಗೆ ಸೇರಿಸಲಾಗಿದೆ, ಇದನ್ನು "-o/-ಆಪ್ಟಿಮೈಜ್" ಆಯ್ಕೆಯನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸಿದಾಗ ಕರೆಯಲಾಗುತ್ತದೆ. ಉದಾಹರಣೆಗೆ, ಸೆಟ್ # cat ruleet.nft ಟೇಬಲ್ ip x { chain y { ಟೈಪ್ ನ್ಯಾಟ್ ಹುಕ್ ಪೋಸ್ಟ್‌ರೌಟಿಂಗ್ ಆದ್ಯತೆ srcnat; ನೀತಿ ಕುಸಿತ; ip saddr 1.1.1.1 tcp dport 8000 ಸ್ನ್ಯಾಟ್ ಟು 4.4.4.4:80 ip saddr 2.2.2.2 tcp dport 8001 ಸ್ನ್ಯಾಟ್ 5.5.5.5:90 } }

    "nft -o -c -f ruleset.nft" ಅನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುವುದರಿಂದ ಪ್ರತ್ಯೇಕ "ip saddr" ನಿಯಮಗಳನ್ನು ನಕ್ಷೆ ಪಟ್ಟಿಗೆ ಪರಿವರ್ತಿಸುತ್ತದೆ: snat to ip saddr . tcp dport ನಕ್ಷೆ {1.1.1.1. 8000: 4.4.4.4. 80, 2.2.2.2. 8001: 5.5.5.5. 90}

    ಅಂತೆಯೇ, ಕಚ್ಚಾ ಅಭಿವ್ಯಕ್ತಿಗಳನ್ನು ನಕ್ಷೆ ಪಟ್ಟಿಗಳಾಗಿ ಪರಿವರ್ತಿಸಬಹುದು: # cat ruleet.nft ಟೇಬಲ್ ip x { […] chain nat_dns_acme { udp length 47-63 @th,160,128 0x0e373135363130333131303735353203 ಉದ್ದ ,62 78x160,128e0e goto nat_dns_this_0 udp ಉದ್ದ 31393032383939353831343037320-5301 @th,62 78x160,128e0e goto nat_dns_saturn_0 udp length 31363436323733373931323934300-5301 @th,62 78x160,128e0 0e goto nat_dns_saturn_32393535373539353636383732310 udp length 5302-62 @th,78 160,128x0e0e goto nat_dns_saturn_38353439353637323038363633390 ಡ್ರಾಪ್ } }

    ಆಪ್ಟಿಮೈಸೇಶನ್ ನಂತರ ನಾವು ನಕ್ಷೆ ಪಟ್ಟಿಯನ್ನು ಪಡೆಯುತ್ತೇವೆ: udp ಉದ್ದ . @th,160,128 vmap {47-63 . 0x0e373135363130333131303735353203 : goto nat_dns_dnstc, 62-78 . 0x0e31393032383939353831343037320e : goto nat_dns_this_5301, 62-78 . 0x0e31363436323733373931323934300e : goto nat_dns_saturn_5301, 62-78 . 0x0e32393535373539353636383732310e : goto nat_dns_saturn_5302, 62-78 . 0x0e38353439353637323038363633390e : goto nat_dns_saturn_5303 }

  • ಸಂಯೋಜನೆಯ ಕಾರ್ಯಾಚರಣೆಗಳಲ್ಲಿ ಕಚ್ಚಾ ಅಭಿವ್ಯಕ್ತಿಗಳ ಬಳಕೆಯನ್ನು ಅನುಮತಿಸಲಾಗಿದೆ. ಉದಾಹರಣೆಗೆ: #nft ಆಡ್ ರೂಲ್ xy ip saddr. @ih,32,32 { 1.1.1.1 . 0x14, 2.2.2.2 0x1e } ಅಥವಾ ಟೇಬಲ್ x { ಸೆಟ್ ವೈ { ಟೈಪ್ ಆಫ್ ಐಪಿ ಸ್ಯಾಡ್‌ಆರ್ . @ih,32,32 ಅಂಶಗಳು = { 1.1.1.1 . 0x14 }}}
  • ಸಂಯೋಜನೆಯ ಕಾರ್ಯಾಚರಣೆಗಳಲ್ಲಿ ಪೂರ್ಣಾಂಕ ಹೆಡರ್ ಕ್ಷೇತ್ರಗಳನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸಲು ಬೆಂಬಲವನ್ನು ಸೇರಿಸಲಾಗಿದೆ: ಟೇಬಲ್ inet t { map m1 { typeof udp length . @ih,32,32 : ತೀರ್ಪು ಫ್ಲ್ಯಾಗ್ಸ್ ಮಧ್ಯಂತರ ಅಂಶಗಳು = { 20-80 . 0x14: ಸ್ವೀಕರಿಸಿ, 1-10 . 0xa : ಡ್ರಾಪ್ } } ಚೈನ್ ಸಿ {ಟೈಪ್ ಫಿಲ್ಟರ್ ಹುಕ್ ಇನ್‌ಪುಟ್ ಆದ್ಯತೆ 0; ನೀತಿ ಕುಸಿತ; udp ಉದ್ದ. @ih,32,32 vmap @m1 }}
  • TCP ಆಯ್ಕೆಗಳನ್ನು ಮರುಹೊಂದಿಸಲು ಬೆಂಬಲವನ್ನು ಸೇರಿಸಲಾಗಿದೆ (Linux ಕರ್ನಲ್ 5.18+ ನೊಂದಿಗೆ ಮಾತ್ರ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ): tcp ಫ್ಲ್ಯಾಗ್‌ಗಳು ಸಿನ್ ರೀಸೆಟ್ tcp ಆಯ್ಕೆ ಸ್ಯಾಕ್-ಪರ್ಮ್
  • ಚೈನ್ ಔಟ್‌ಪುಟ್ ಕಮಾಂಡ್‌ಗಳ ("nft ಪಟ್ಟಿ ಚೈನ್ xy") ಕಾರ್ಯಗತಗೊಳಿಸುವಿಕೆಯನ್ನು ವೇಗಗೊಳಿಸಲಾಗಿದೆ.

ಮೂಲ: opennet.ru

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