nftables 0.9.9 ప్యాకెట్ ఫిల్టర్ విడుదల చేయబడింది. ఇది IPv4, IPv6, ARP, మరియు నెట్వర్క్ బ్రిడ్జ్ల కోసం ప్యాకెట్ ఫిల్టరింగ్ ఇంటర్ఫేస్లను ఏకీకృతం చేస్తుంది (iptables, ip6table, arptables, మరియు ebtables లకు ప్రత్యామ్నాయంగా లక్ష్యంగా పెట్టుకుంది). దీనితో పాటుగా, nf_tables సబ్సిస్టమ్తో పరస్పర చర్య కోసం ఒక లో-లెవల్ APIని అందించే libnftnl 1.2.0 లైబ్రరీ కూడా ఏకకాలంలో విడుదల చేయబడింది. nftables 0.9.9 కోసం అవసరమైన మార్పులు కెర్నల్లో పొందుపరచబడ్డాయి. Linux 5.13-rc1.
nftables ప్యాకేజీ యూజర్ స్పేస్లో పనిచేసే ప్యాకెట్ ఫిల్టర్ కాంపోనెంట్లను కలిగి ఉంటుంది, అయితే కెర్నల్-స్థాయి పనిని కెర్నల్లో భాగమైన nf_tables సబ్సిస్టమ్ అందిస్తుంది. Linux విడుదల 3.13 నుండి, కెర్నల్ స్థాయిలో కేవలం ఒక జెనరిక్ ప్రోటోకాల్-స్వతంత్ర ఇంటర్ఫేస్ మాత్రమే అందించబడింది, ఇది ప్యాకెట్ల నుండి డేటాను సంగ్రహించడం, డేటా కార్యకలాపాలను నిర్వహించడం మరియు ఫ్లో కంట్రోల్ కోసం ప్రాథమిక కార్యాచరణను అందిస్తుంది.
ఫిల్టరింగ్ నియమాలు మరియు ప్రోటోకాల్-నిర్దిష్ట హ్యాండ్లర్లు యూజర్ స్పేస్లో బైట్కోడ్లోకి కంపైల్ చేయబడతాయి, ఆ తర్వాత ఈ బైట్కోడ్ నెట్లింక్ ఇంటర్ఫేస్ను ఉపయోగించి కెర్నల్లోకి లోడ్ చేయబడుతుంది మరియు కెర్నల్లో ప్రత్యేక వర్చువల్ యంత్రం, 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 chunk data exists … sctp chunk data type 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
