nftables ప్యాకెట్ ఫిల్టర్ 0.9.9 విడుదల

IPv0.9.9, IPv4, ARP మరియు నెట్‌వర్క్ బ్రిడ్జ్‌ల కోసం ప్యాకెట్ ఫిల్టరింగ్ ఇంటర్‌ఫేస్‌లను ఏకీకృతం చేస్తూ ప్యాకెట్ ఫిల్టర్ nftables 6 విడుదల ప్రచురించబడింది (iptables, ip6table, arptables మరియు ebtables స్థానంలో ఉంది). అదే సమయంలో, సహచర లైబ్రరీ libnftnl 1.2.0 విడుదల ప్రచురించబడింది, ఇది nf_tables సబ్‌సిస్టమ్‌తో పరస్పర చర్య చేయడానికి తక్కువ-స్థాయి APIని అందిస్తుంది. nftables 0.9.9 విడుదల పని చేయడానికి అవసరమైన మార్పులు Linux కెర్నల్ 5.13-rc1లో చేర్చబడ్డాయి.

nftables ప్యాకేజీ వినియోగదారు స్థలంలో అమలు చేసే ప్యాకెట్ ఫిల్టర్ భాగాలను కలిగి ఉంటుంది, అయితే కెర్నల్-స్థాయి పని nf_tables సబ్‌సిస్టమ్ ద్వారా అందించబడుతుంది, ఇది విడుదలైన 3.13 నుండి Linux కెర్నల్‌లో భాగంగా ఉంది. కెర్నల్ స్థాయి సాధారణ ప్రోటోకాల్-స్వతంత్ర ఇంటర్‌ఫేస్‌ను మాత్రమే అందిస్తుంది, ఇది ప్యాకెట్‌ల నుండి డేటాను సంగ్రహించడం, డేటా కార్యకలాపాలు చేయడం మరియు ఫ్లో నియంత్రణ కోసం ప్రాథమిక విధులను అందిస్తుంది.

ఫిల్టరింగ్ నియమాలు మరియు ప్రోటోకాల్-నిర్దిష్ట హ్యాండ్లర్లు యూజర్-స్పేస్ బైట్‌కోడ్‌లో కంపైల్ చేయబడతాయి, ఆ తర్వాత ఈ బైట్‌కోడ్ నెట్‌లింక్ ఇంటర్‌ఫేస్‌ని ఉపయోగించి కెర్నల్‌లోకి లోడ్ చేయబడుతుంది మరియు BPF (బర్కిలీ ప్యాకెట్ ఫిల్టర్‌లు)ని పోలి ఉండే ప్రత్యేక వర్చువల్ మెషీన్‌లో కెర్నల్‌లో అమలు చేయబడుతుంది. ఈ విధానం కెర్నల్ స్థాయిలో నడుస్తున్న ఫిల్టరింగ్ కోడ్ పరిమాణాన్ని గణనీయంగా తగ్గించడం మరియు పార్సింగ్ నియమాల యొక్క అన్ని విధులు మరియు ప్రోటోకాల్‌లతో పని చేసే లాజిక్‌లను వినియోగదారు స్థలంలోకి తరలించడం సాధ్యం చేస్తుంది.

ప్రధాన ఆవిష్కరణలు:

  • ఫ్లోటేబుల్ ప్రాసెసింగ్‌ను నెట్‌వర్క్ అడాప్టర్ వైపుకు తరలించే సామర్థ్యం అమలు చేయబడింది, 'ఆఫ్‌లోడ్' ఫ్లాగ్‌ని ఉపయోగించి ప్రారంభించబడింది. ఫ్లోటేబుల్ అనేది ప్యాకెట్ రీడైరెక్షన్ యొక్క మార్గాన్ని ఆప్టిమైజ్ చేయడానికి ఒక మెకానిజం, దీనిలో అన్ని రూల్ ప్రాసెసింగ్ చైన్‌ల పూర్తి పాసేజ్ మొదటి ప్యాకెట్‌కు మాత్రమే వర్తించబడుతుంది మరియు ఫ్లోలోని అన్ని ఇతర ప్యాకెట్‌లు నేరుగా ఫార్వార్డ్ చేయబడతాయి. టేబుల్ ip గ్లోబల్ {flotable f {హుక్ ప్రవేశ ప్రాధాన్యత ఫిల్టర్ + 1 పరికరాలు = { lan3, lan0, వాన్ } ఫ్లాగ్‌లు ఆఫ్‌లోడ్ } చైన్ ఫార్వర్డ్ {టైప్ ఫిల్టర్ హుక్ ఫార్వర్డ్ ప్రాధాన్యత ఫిల్టర్; విధానం అంగీకరించాలి; ip ప్రోటోకాల్ {tcp, udp } ఫ్లో యాడ్ @f } చైన్ పోస్ట్ {టైప్ నాట్ హుక్ పోస్ట్‌రౌటింగ్ ప్రాధాన్యత ఫిల్టర్; విధానం అంగీకరించాలి; oifname "వాన్" మాస్క్వెరేడ్ } }
  • ప్రాసెస్ ద్వారా పట్టిక యొక్క ప్రత్యేక వినియోగాన్ని నిర్ధారించడానికి యజమాని ఫ్లాగ్‌ను టేబుల్‌కి జోడించడానికి మద్దతు జోడించబడింది. ప్రక్రియ ముగిసినప్పుడు, దానితో అనుబంధించబడిన పట్టిక స్వయంచాలకంగా తొలగించబడుతుంది. ప్రక్రియ గురించిన సమాచారం వ్యాఖ్య రూపంలో నిబంధనల డంప్‌లో ప్రదర్శించబడుతుంది: టేబుల్ ip x { # progname nft ఫ్లాగ్‌ల యజమాని గొలుసు y { రకం ఫిల్టర్ హుక్ ఇన్‌పుట్ ప్రాధాన్యత ఫిల్టర్; విధానం అంగీకరించాలి; కౌంటర్ ప్యాకెట్లు 1 బైట్లు 309 } }
  • IEEE 802.1ad స్పెసిఫికేషన్ (VLAN స్టాకింగ్ లేదా QinQ)కి మద్దతు జోడించబడింది, ఇది ఒకే ఈథర్నెట్ ఫ్రేమ్‌లో బహుళ VLAN ట్యాగ్‌లను ప్రత్యామ్నాయం చేయడానికి ఒక మార్గాన్ని నిర్వచిస్తుంది. ఉదాహరణకు, బాహ్య ఈథర్నెట్ ఫ్రేమ్ 8021ad మరియు vlan id=342 రకాన్ని తనిఖీ చేయడానికి, మీరు నిర్మాణాన్ని ఉపయోగించవచ్చు ... ఈథర్‌నెట్ ఫ్రేమ్ 802.1ad/vlan id=342 యొక్క బాహ్య రకాన్ని తనిఖీ చేయడానికి ఈథర్ టైప్ 8021ad vlan id 1, సమూహ 802.1 q/vlan id=2 మరియు తదుపరి IP ప్యాకెట్ ఎన్‌క్యాప్సులేషన్: ... ఈథర్ రకం 8021ad vlan id 1 vlan రకం 8021q vlan id 2 vlan రకం ip కౌంటర్
  • ఏకీకృత సోపానక్రమం cgroups v2ని ఉపయోగించి వనరుల నిర్వహణకు మద్దతు జోడించబడింది. cgroups v2 మరియు v1 మధ్య ఉన్న ముఖ్యమైన తేడా ఏమిటంటే, CPU వనరులను కేటాయించడం కోసం, మెమరీ వినియోగాన్ని నియంత్రించడం కోసం మరియు I/O కోసం ప్రత్యేక సోపానక్రమాలకు బదులుగా, అన్ని రకాల వనరుల కోసం సాధారణ cgroups సోపానక్రమాన్ని ఉపయోగించడం. ఉదాహరణకు, మొదటి స్థాయి cgroupv2లోని సాకెట్ పూర్వీకులు “system.slice” మాస్క్‌తో సరిపోలుతుందో లేదో తనిఖీ చేయడానికి, మీరు నిర్మాణాన్ని ఉపయోగించవచ్చు: ... సాకెట్ cgroupv2 స్థాయి 1 “system.slice”
  • SCTP ప్యాకెట్ల భాగాలను తనిఖీ చేసే సామర్థ్యం జోడించబడింది (దీనికి అవసరమైన కార్యాచరణ Linux కెర్నల్ 5.14లో కనిపిస్తుంది). ఉదాహరణకు, ప్యాకెట్‌లో 'డేటా' రకం మరియు ఫీల్డ్ 'రకం'తో భాగం ఉందో లేదో తనిఖీ చేయడానికి: ... sctp భాగం డేటా ఉంది ... sctp భాగం డేటా రకం 0
  • నియమం లోడింగ్ ఆపరేషన్ అమలు "-f" ఫ్లాగ్‌ని ఉపయోగించి సుమారు రెండు సార్లు వేగవంతం చేయబడింది. నిబంధనల జాబితా అవుట్‌పుట్ కూడా వేగవంతం చేయబడింది.
  • ఫ్లాగ్ బిట్‌లు సెట్ చేయబడి ఉన్నాయో లేదో తనిఖీ చేయడానికి ఒక కాంపాక్ట్ ఫారమ్ అందించబడింది. ఉదాహరణకు, స్నాట్ మరియు dnat స్థితి బిట్‌లు సెట్ చేయబడలేదని తనిఖీ చేయడానికి, మీరు పేర్కొనవచ్చు: ... ct స్థితి ! బిట్‌మాస్క్ సిన్‌లో సిన్ బిట్ సెట్ చేయబడిందో లేదో తనిఖీ చేయడానికి snat,dnat, ack: ... tcp ఫ్లాగ్‌లు syn / syn,ack బిట్‌మాస్క్ syn,ack,fin,rstలో ఫిన్ మరియు rst బిట్‌లు సెట్ చేయబడలేదని తనిఖీ చేయడానికి ... tcp ఫ్లాగ్స్ ! = ఫిన్, rst / syn,ack, fin,rst
  • సెట్/మ్యాప్ రకం నిర్వచనాలలో "తీర్పు" కీవర్డ్‌ను అనుమతించండి: మ్యాప్ xm { typeof iifname . ip ప్రోటోకాల్ వ డిపోర్ట్: తీర్పు ;}

మూలం: opennet.ru

ఒక వ్యాఖ్యను జోడించండి