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

IPv1.0.7, IPv4, ARP మరియు నెట్‌వర్క్ బ్రిడ్జ్‌ల కోసం ప్యాకెట్ ఫిల్టరింగ్ ఇంటర్‌ఫేస్‌లను ఏకీకృతం చేస్తూ nftables 6 ప్యాకెట్ ఫిల్టర్ విడుదల ప్రచురించబడింది (iptables, ip6table, arptables మరియు ebtables స్థానంలో ఉంది). nftables ప్యాకేజీ వినియోగదారు స్థలంలో అమలు చేసే ప్యాకెట్ ఫిల్టర్ భాగాలను కలిగి ఉంటుంది, అయితే కెర్నల్ స్థాయి nf_tables సబ్‌సిస్టమ్ ద్వారా అందించబడుతుంది, ఇది విడుదలైన 3.13 నుండి Linux కెర్నల్‌లో భాగంగా ఉంది. కెర్నల్ స్థాయిలో, ప్యాకెట్ల నుండి డేటాను సంగ్రహించడం, డేటాపై కార్యకలాపాలు చేయడం మరియు ప్రవాహాన్ని నియంత్రించడం కోసం ప్రాథమిక విధులను అందించే సాధారణ ప్రోటోకాల్-ఇండిపెండెంట్ ఇంటర్‌ఫేస్ మాత్రమే అందించబడుతుంది.

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

ప్రధాన మార్పులు:

  • Linux 6.2+ సిస్టమ్‌ల కోసం, vxlan, geneve, gre మరియు gretap ప్రోటోకాల్ మ్యాచింగ్‌లకు మద్దతు జోడించబడింది, ఇది సాధారణ వ్యక్తీకరణలను ఎన్‌క్యాప్సులేటెడ్ ప్యాకెట్‌లలో హెడర్‌లను తనిఖీ చేయడానికి అనుమతిస్తుంది. ఉదాహరణకు, VxLAN నుండి సమూహ ప్యాకెట్ యొక్క హెడర్‌లో IP చిరునామాను తనిఖీ చేయడానికి, మీరు ఇప్పుడు నియమాలను ఉపయోగించవచ్చు (మొదట VxLAN హెడర్‌ను డీన్‌క్యాప్సులేట్ చేసి, ఫిల్టర్‌ను vxlan0 ఇంటర్‌ఫేస్‌కు బైండ్ చేయాల్సిన అవసరం లేకుండా): ... udp dport 4789 vxlan ip ప్రోటోకాల్ udp ... udp dport 4789 vxlan ip saddr 1.2.3.0. 24/4789 ... udp dport 1.2.3.4 vxlan ip saddr . vxlan ip daddr { 4.3.2.1 . XNUMX}
  • సెట్-జాబితా మూలకం యొక్క పాక్షిక తొలగింపు తర్వాత అవశేషాలను స్వయంచాలకంగా విలీనం చేయడానికి మద్దతు అమలు చేయబడింది, ఇది ఇప్పటికే ఉన్న శ్రేణి నుండి ఒక మూలకాన్ని లేదా శ్రేణిలో కొంత భాగాన్ని తొలగించడానికి అనుమతిస్తుంది (గతంలో, పరిధి పూర్తిగా మాత్రమే తొలగించబడుతుంది). ఉదాహరణకు, 25-24 మరియు 30-40, 50, 24-26 మరియు 30-40 శ్రేణులతో సెట్ జాబితా నుండి ఎలిమెంట్ 50ని తీసివేసిన తర్వాత జాబితాలో అలాగే ఉంటుంది. కెర్నల్ యొక్క 5.10+ స్థిరమైన బ్రాంచ్‌ల దిద్దుబాటు విడుదలలలో పని చేయడానికి ఆటో-మెర్జింగ్ కోసం అవసరమైన పరిష్కారాలు అందించబడతాయి. # nft జాబితా రూల్‌సెట్ టేబుల్ ip x {సెట్ y { typeof tcp dport ఫ్లాగ్స్ ఇంటర్వెల్ ఆటో-మెర్జ్ ఎలిమెంట్స్ = { 24-30, 40-50 } } } # nft డిలీట్ ఎలిమెంట్ ip xy { 25 } # nft జాబితా రూల్‌సెట్ టేబుల్ ip x { సెట్ y { typeof tcp dport ఫ్లాగ్స్ ఇంటర్వెల్ ఆటో-మెర్జ్ ఎలిమెంట్స్ = { 24, 26-30, 40-50 } } }
  • చిరునామా అనువాదం (NAT) మ్యాపింగ్‌లో పరిచయం మరియు పరిధులను ఉపయోగించడానికి అనుమతించండి. టేబుల్ ip నాట్ {చైన్ ప్రీరౌటింగ్ {టైప్ నాట్ హుక్ ప్రీరౌటింగ్ ప్రాధాన్యత dstnat; విధానం అంగీకరించాలి; dnat to ip daddr . tcp dport మ్యాప్ { 10.1.1.136 . 80 : 1.1.2.69 . 1024, 10.1.1.10-10.1.1.20. 8888-8889 : 1.1.2.69 . 2048-2049 } నిరంతర } }
  • "చివరి" వ్యక్తీకరణకు మద్దతు జోడించబడింది, ఇది నియమ మూలకం లేదా సెట్ జాబితా యొక్క చివరి ఉపయోగం యొక్క సమయాన్ని కనుగొనడానికి మిమ్మల్ని అనుమతిస్తుంది. ఈ లక్షణానికి Linux కెర్నల్ 5.14 నుండి మద్దతు ఉంది. పట్టిక ip x { సెట్ y { రకం ip daddr . tcp dport పరిమాణం 65535 ఫ్లాగ్‌లు డైనమిక్, చివరి సమయం ముగిసింది 1h } చైన్ z {టైప్ ఫిల్టర్ హుక్ అవుట్‌పుట్ ప్రాధాన్యత ఫిల్టర్; విధానం అంగీకరించాలి; నవీకరణ @y { ip daddr . tcp dport } } } # nft జాబితా సెట్ ip xy టేబుల్ ip x { సెట్ y { రకం ip daddr . tcp dport పరిమాణం 65535 ఫ్లాగ్‌లు డైనమిక్, చివరి సమయం ముగిసింది 1h మూలకాలు = { 172.217.17.14 . 443 చివరిగా ఉపయోగించిన 1s591ms సమయం ముగిసింది 1గం గడువు 59m58s409ms, 172.67.69.19 . 443 చివరిగా ఉపయోగించిన 4s636ms సమయం ముగిసింది 1గం 59m55s364ms, 142.250.201.72 . 443 చివరిగా ఉపయోగించిన 4s748ms సమయం ముగిసింది 1గం 59m55s252ms, 172.67.70.134 . 443 చివరిగా ఉపయోగించిన 4s688ms సమయం ముగిసింది 1గం 59m55s312ms, 35.241.9.150 . 443 చివరిగా ఉపయోగించిన 5s204ms సమయం ముగిసింది 1గం 59m54s796ms, 138.201.122.174 . 443 చివరిగా ఉపయోగించిన 4s537ms సమయం ముగిసింది 1గం 59m55s463ms, 34.160.144.191 . 443 చివరిగా ఉపయోగించిన 5s205ms సమయం ముగిసింది 1గం 59m54s795ms, 130.211.23.194 . 443 చివరిగా ఉపయోగించిన 4s436ms సమయం ముగిసింది 1గం గడువు 59m55s564ms }}}
  • సెట్-జాబితాలలో కోటాలను నిర్వచించే సామర్థ్యం జోడించబడింది. ఉదాహరణకు, ప్రతి లక్ష్య IP చిరునామాకు ట్రాఫిక్ కోటాను నిర్వచించడానికి, మీరు పేర్కొనవచ్చు: టేబుల్ నెట్‌దేవ్ x {సెట్ y {టైప్ ఆఫ్ ip daddr పరిమాణం 65535 కోటా 10000 బైట్‌ల కంటే ఎక్కువ } చైన్ y {టైప్ ఫిల్టర్ హుక్ ఎగ్రెస్ పరికరం "eth0" ప్రాధాన్యత ఫిల్టర్; విధానం అంగీకరించాలి; ip daddr @y డ్రాప్ } } # nft యాడ్ ఎలిమెంట్ inet xy { 8.8.8.8 } # ping -c 2 8.8.8.8 # nft జాబితా రూల్స్‌సెట్ టేబుల్ నెట్‌దేవ్ x { సెట్ y { టైప్ ipv4_addr పరిమాణం 65535 కోటా {10000 mbytes కంటే ఎక్కువ 8.8.8.8 మూలకాలు. 10000 కోటా 196 బైట్‌లకు పైగా ఉపయోగించబడింది 0 బైట్‌లు } } చైన్ y {టైప్ ఫిల్టర్ హుక్ ఎగ్రెస్ పరికరం "ethXNUMX" ప్రాధాన్యత ఫిల్టర్; విధానం అంగీకరించాలి; ip daddr @y డ్రాప్ }}
  • సెట్-జాబితాలలో స్థిరాంకాల ఉపయోగం అనుమతించబడుతుంది. ఉదాహరణకు, గమ్యస్థాన చిరునామా మరియు VLAN ID జాబితాను కీగా ఉపయోగిస్తున్నప్పుడు, మీరు నేరుగా VLAN నంబర్‌ను పేర్కొనవచ్చు (daddr . 123): టేబుల్ netdev t {set s { typeof ether saddr . vlan id పరిమాణం 2048 ఫ్లాగ్‌లు డైనమిక్, సమయం ముగిసింది 1m } చైన్ సి {టైప్ ఫిల్టర్ హుక్ ప్రవేశ పరికరం eth0 ప్రాధాన్యత 0; విధానం అంగీకరించాలి; ఈథర్ రకం != 8021q update @s {ether daddr . 123 } కౌంటర్ } }
  • ఆబ్జెక్ట్‌లను బేషరతుగా తొలగించడానికి కొత్త "డిస్ట్రాయ్" కమాండ్ జోడించబడింది (తొలగింపు ఆదేశం వలె కాకుండా, తప్పిపోయిన వస్తువును తొలగించడానికి ప్రయత్నిస్తున్నప్పుడు ఇది ENOENTని ఉత్పత్తి చేయదు). పని చేయడానికి కనీసం Linux 6.3-rc కెర్నల్ అవసరం. టేబుల్ ఐపి ఫిల్టర్‌ను నాశనం చేయండి

మూలం: opennet.ru

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