nftables ፓኬት ማጣሪያ 1.0.3 መለቀቅ

የ nftables 1.0.3 ፓኬት ማጣሪያ ታትሟል፣የፓኬት ማጣሪያ በይነገጾችን ለIPv4፣ IPv6፣ ARP እና የአውታረ መረብ ድልድዮች አንድ የሚያደርግ (የአይፒ ፕላስ፣ ip6table፣ arptables እና ebtables ለመተካት ያለመ)። ለ nftables 1.0.3 መለቀቅ ወደ ሥራ የሚያስፈልጉ ለውጦች በሊኑክስ 5.18 ከርነል ውስጥ ተካትተዋል።

የ nftables ጥቅል በተጠቃሚ ቦታ ውስጥ የሚሰሩ የፓኬት ማጣሪያ ክፍሎችን ያካትታል፣ የከርነል ደረጃ ደግሞ በ nf_tables ንዑስ ሲስተም ነው የቀረበው፣ 3.13 ከተለቀቀ በኋላ የሊኑክስ ከርነል አካል ነው። በከርነል ደረጃ፣ መረጃን ከፓኬቶች ለማውጣት፣በመረጃ ላይ ስራዎችን ለመስራት እና ፍሰትን ለመቆጣጠር መሰረታዊ ተግባራትን የሚሰጥ አጠቃላይ ፕሮቶኮል-ገለልተኛ በይነገጽ ብቻ ነው የሚቀርበው።

የማጣራት ደንቦቹ እራሳቸው እና ፕሮቶኮል-ተኮር ተቆጣጣሪዎች በተጠቃሚ-ስፔስ ባይትኮድ ውስጥ ይሰበሰባሉ, ከዚያ በኋላ ይህ ባይት ኮድ የ Netlink በይነገጽን በመጠቀም ወደ ከርነል ተጭኖ እና BPF (በርክሌይ ፓኬት ማጣሪያዎች) በሚመስል ልዩ ቨርቹዋል ማሽን ውስጥ በከርነል ውስጥ ይፈጸማል። ይህ አካሄድ በከርነል ደረጃ የሚሰራውን የማጣሪያ ኮድ መጠን በከፍተኛ ሁኔታ ለመቀነስ እና ሁሉንም የመተንተን ደንቦችን እና ከፕሮቶኮሎች ጋር አብሮ የመስራት አመክንዮ ወደ ተጠቃሚ ቦታ ለማንቀሳቀስ ያስችላል።

ዋና ፈጠራዎች፡-

  • Set-lists አሁን የሚዛመደውን የአውታረ መረብ በይነገጽ ስሞችን በማስክ ይደግፋሉ፡ ለምሳሌ፡ በ"*" ቁምፊ ተጠቅመው የተገለጹ፡ ሠንጠረዥ inet testifsets { set simple_wild { type ifname flags interval element = {"abcdef*""ሌላ ስም", "ppp0" }} ሰንሰለት v4icmp {አይነት ማጣሪያ መንጠቆ ግብዓት ቅድሚያ 0; ፖሊሲ መቀበል; iifname @simple_ዱር ቆጣሪ ፓኬቶች 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, 4.4.4.8-1.2.3.0} እና ከዚያ አዲስ ኤለመንቶችን ከጨመርን # nft አክል ip xy {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, 4.4.4.8-XNUMX}

    በነባር የተከለሉ ንጥሎች ውስጥ ከሚወድቁት ዝርዝር ውስጥ ነጠላ ንጥሎችን ሲያስወግዱ ክልሉ ይቀንሳል ወይም ይከፈላል።

  • ብዙ የአድራሻ ትርጉም (NAT) ደንቦችን ከ "-o/--optimize" አማራጭ ጋር በተጠራው ደንብ አመቻች ውስጥ ወደ ካርታ ዝርዝር ለማጣመር ድጋፍ ታክሏል። ለምሳሌ፣ ለስብስቡ # cat ruleset.nft table ip x { chain y { type nat hook postrouting priorit srcnat; የፖሊሲ ውድቀት; ip saddr 1.1.1.1 tcp dport 8000 snat ወደ 4.4.4.4:80 ip saddr 2.2.2.2 tcp dport 8001 snat to 5.5.5.5:90}}

    "nft -o -c -f ruleset.nft" ን ማስፈጸም የተለየውን "ip saddr" ደንቦችን ወደ ካርታ ዝርዝር ይለውጣል፡ snat ወደ 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 ruleset.nft table ip x { […] chain nat_dns_acme { udp length 47-63 @th,160,128 0x0e373135363130333131303735353203 goto nat62d 78th,160,128 0 0x31393032383939353831343037320e5301e ጎቶ nat_dns_this_62 udp ርዝማኔ 78-160,128 @th,0 0x31363436323733373931323934300e5301e goto nat_dns_saturn_62 udp ርዝመት 78-160,128e 0 0e goto nat_dns_saturn_32393535373539353636383732310 udp length 5302-62 @th,78 160,128x0e0e goto natturns}38353439353637323038363633390e goto natturn}5303

    ከማመቻቸት በኋላ የካርታ ዝርዝር እናገኛለን: 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 add rule xy ip saddr። @ih,32,32 {1.1.1.1. 0x14፣ 2.2.2.2 0x1e } ወይም ሠንጠረዥ x { set y { typeof ip saddr . @ih,32,32 ንጥረ ነገሮች = {1.1.1.1. 0x14}}
  • በማገናኘት ስራዎች ውስጥ የኢንቲጀር ራስጌ መስኮችን ለመለየት ተጨማሪ ድጋፍ: ሠንጠረዥ inet t { map m1 { ዓይነት udp ርዝመት . @ih,32,32፡ ብይን ይጠቁማል የጊዜ ክፍተት ክፍሎች = {20-80። 0x14፡ ተቀበል፣ 1-10 0xa: drop } } ሰንሰለት c {አይነት ማጣሪያ መንጠቆ ግብዓት ቅድሚያ 0; የፖሊሲ ውድቀት; udp ርዝመት . @ih,32,32 vmap @m1 }}
  • የTCP አማራጮችን ዳግም ለማስጀመር ተጨማሪ ድጋፍ (ከሊኑክስ ከርነል 5.18+ ጋር ብቻ ይሰራል)፡ tcp flags syn reset tcp option sack-perm
  • የሰንሰለት ውፅዓት ትዕዛዞችን ("nft list chain xy") በፍጥነት መፈጸም።

ምንጭ: opennet.ru

አስተያየት ያክሉ