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

የፓኬት ማጣሪያ nftables 1.0.0 ታትሟል፣ ለIPv4፣ IPv6፣ ARP እና የአውታረ መረብ ድልድዮች የፓኬት ማጣሪያ በይነገጾችን አንድ የሚያደርግ (አይፓብሌ፣ ip6table፣ አርፕታብል እና ኢብቴብል ለመተካት ያለመ)። ለ nftables 1.0.0 ልቀቶች እንዲሰሩ የሚያስፈልጉት ለውጦች በሊኑክስ 5.13 ከርነል ውስጥ ተካትተዋል። በስሪት ቁጥሩ ላይ ያለው ጉልህ ለውጥ ከማንኛውም መሰረታዊ ለውጦች ጋር የተገናኘ አይደለም፣ነገር ግን ተከታታይነት ያለው የአስርዮሽ ኖት ቁጥር መቀጠሉ ውጤት ብቻ ነው (የቀድሞው ልቀት 0.9.9 ነበር)።

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

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

ዋና ፈጠራዎች፡-

  • ለ"*" ጭንብል አካል ድጋፍ ወደ ዝርዝር ዝርዝሮች ተጨምሯል ፣ ይህም በስብስቡ ውስጥ በተገለጹ ሌሎች አካላት ስር ላልወደቁ ጥቅሎች የሚቀሰቀስ ነው። ሠንጠረዥ x {የካርታ ማገጃ ዝርዝር {አይነት ipv4_addr፡ ብይን ባንዲራዎች የጊዜ ክፍተት ክፍሎች = {192.168.0.0/16፡ ተቀበል፣ 10.0.0.0/8፡ ተቀበል፣ *፡ ጣል}} ሰንሰለት y {አይነት የማጣሪያ መንጠቆ ቅድሚያ 0; ፖሊሲ መቀበል; ip saddr vmap @ blocklist } }
  • የ "--define" አማራጭን በመጠቀም ከትዕዛዝ መስመሩ ተለዋዋጮችን መግለፅ ይቻላል. # cat test.nft ሠንጠረዥ netdev x {ሰንሰለት y {አይነት ማጣሪያ መንጠቆ ማስገቢያ መሳሪያዎች = $dev ቅድሚያ 0; የፖሊሲ ውድቀት; } } # nft —define dev="{ eth0, eth1 }" -f test.nft
  • በካርታ ዝርዝሮች ውስጥ ቋሚ (ግዛታዊ) አገላለጾችን መጠቀም ይፈቀዳል፡ ሠንጠረዥ inet ማጣሪያ {የካርታ ፖርትማፕ {ዓይነት inet_service : verdict counter elements = { 22 counter packets 0 bytes 0 : jump ssh_input, * counter packets 0 bytes 0 : drop}} ሰንሰለት ssh_input {} ሰንሰለት wan_input {tcp dport vmap @portmap} ሰንሰለት ፕሪሮውት {አይነት የማጣሪያ መንጠቆ ቅድሚያ ጥሬ; ፖሊሲ መቀበል; iif vmap {"lo"፡ ዝላይ ዋን_ግቤት}}}
  • ለአንድ የፓኬት ቤተሰብ የተቆጣጣሪዎች ዝርዝር ለማሳየት የ"ዝርዝር መንጠቆዎች" ትእዛዝ ታክሏል፡# nft list hooks ip device eth0 family ip { hook ingress { +0000000010 chain netdev xy [nf_tables] +0000000300 chain inet mw [nf_tables]} መንጠቆ ግብዓት {-0000000100 ሰንሰለት ip ab [nf_tables] +0000000300 ሰንሰለት inet mz [npu_tables] } መንጠቆ ወደፊት {-0000000225 selinux_ipv4_forward 0000000000 ሰንሰለት ip ac [nf_tables0000000225}4] መንጠቆ postrouting {+0000000225 4 selinux_ipvXNUMX_postroute}}
  • ወረፋ ብሎኮች jhash፣ symhash እና numgen አገላለጾችን በማጣመር በተጠቃሚ ቦታ ላይ ጥቅሎችን ወደ ወረፋዎች ለማሰራጨት ያስችላቸዋል። … ወረፋ ወደ ሲምሃሽ ሞድ 65536 … ወረፋ ባንዲራዎች ወደ numgen inc mod 65536 ማለፍ… ለጃሽ ኦኢፍ ወረፋ። meta mark mod 32 "queue" ከካርታ ዝርዝሮች ጋር በማጣመር በዘፈቀደ ቁልፎች ላይ በመመስረት በተጠቃሚ ቦታ ላይ ወረፋ ለመምረጥ ይቻላል. ... ወረፋ ባንዲራዎች ወደ ኦይፍ ስም ካርታ ማለፍ {"eth0" : 0, "ppp0" : 2, "eth1": 2 }
  • የስብስብ ዝርዝርን ያካተቱ ተለዋዋጮችን ወደ ብዙ ካርታዎች ማስፋፋት ይቻላል። በይነገጾች ይግለጹ = {eth0, eth1} ሠንጠረዥ ip x {ሰንሰለት y {አይነት ማጣሪያ መንጠቆ ግብዓት ቅድሚያ 0; ፖሊሲ መቀበል; iifname vmap {lo፡ ተቀበል፣ $በይነገጽ፡ ጣል}}} # nft -f x.nft # nft ዝርዝር ruleset ሠንጠረዥ ip x {ሰንሰለት y {አይነት ማጣሪያ መንጠቆ ግብዓት ቅድሚያ 0; ፖሊሲ መቀበል; iifname vmap {"lo"፡ ተቀበል፡ "eth0"፡ drop፡ "eth1"፡ drop }}}
  • vmaps (የፍርድ ካርታ) በየተወሰነ ጊዜ ማጣመር ይፈቀዳል፡# nft add rule xy tcp dport . ip saddr vmap {1025-65535 192.168.10.2: ተቀበል
  • ለ NAT ካርታዎች ቀለል ያለ አገባብ። የአድራሻ ክልሎችን እንዲገልጹ ተፈቅዶላቸዋል፡- ... snat to ip saddr ካርታ {10.141.11.4 : 192.168.2.2-192.168.2.4} ወይም ግልጽ የአይፒ አድራሻዎች እና ወደቦች፡ ... dnat ወደ ip saddr ካርታ {10.141.11.4. . 192.168.2.3 } ወይም የአይፒ ክልሎች እና ወደቦች ጥምረት፡ ... dnat ወደ ip saddr . tcp dport ካርታ {80 . 192.168.1.2፡ 80-10.141.10.2. 10.141.10.5-8888}

ምንጭ: opennet.ru

አስተያየት ያክሉ