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

IPv1.0.0, IPv4, ARP మరియు నెట్‌వర్క్ బ్రిడ్జ్‌ల కోసం ప్యాకెట్ ఫిల్టరింగ్ ఇంటర్‌ఫేస్‌లను ఏకీకృతం చేస్తూ ప్యాకెట్ ఫిల్టర్ nftables 6 విడుదల ప్రచురించబడింది (iptables, ip6table, arptables మరియు ebtablesని భర్తీ చేయడం లక్ష్యంగా పెట్టుకుంది). nftables 1.0.0 విడుదల పని చేయడానికి అవసరమైన మార్పులు Linux 5.13 కెర్నల్‌లో చేర్చబడ్డాయి. సంస్కరణ సంఖ్యలో గణనీయమైన మార్పు ఎటువంటి ప్రాథమిక మార్పులతో సంబంధం కలిగి ఉండదు, అయితే ఇది దశాంశ సంజ్ఞామానంలో నంబరింగ్ యొక్క స్థిరమైన కొనసాగింపు యొక్క పరిణామం మాత్రమే (మునుపటి విడుదల 0.9.9).

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

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

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

  • సెట్ జాబితాలకు “*” మాస్క్ మూలకం కోసం మద్దతు జోడించబడింది, ఇది సెట్‌లో నిర్వచించబడిన ఇతర మూలకాల కిందకు రాని ప్యాకేజీల కోసం ట్రిగ్గర్ చేయబడుతుంది. పట్టిక x { మ్యాప్ బ్లాక్‌లిస్ట్ {రకం ipv4_addr : తీర్పు ఫ్లాగ్‌ల విరామ అంశాలు = { 192.168.0.0/16 : అంగీకరించు, 10.0.0.0/8 : అంగీకరించు, * : డ్రాప్ } } చైన్ y {రకం ఫిల్టర్ హుక్ ప్రీరౌటింగ్ ప్రాధాన్యత 0; విధానం అంగీకరించాలి; ip saddr vmap @blocklist }}
  • “--define” ఎంపికను ఉపయోగించి కమాండ్ లైన్ నుండి వేరియబుల్స్‌ను నిర్వచించడం సాధ్యమవుతుంది. # cat test.nft టేబుల్ నెట్‌దేవ్ x {గొలుసు y {రకం ఫిల్టర్ హుక్ ప్రవేశ పరికరాలు = $dev ప్రాధాన్యత 0; పాలసీ డ్రాప్; } } # nft —define dev="{ eth0, eth1 }" -f test.nft
  • మ్యాప్ జాబితాలలో, స్థిరమైన (స్టేట్‌ఫుల్) వ్యక్తీకరణల ఉపయోగం అనుమతించబడుతుంది: టేబుల్ ఇనెట్ ఫిల్టర్ {మ్యాప్ పోర్ట్‌మ్యాప్ {టైప్ inet_service : తీర్పు కౌంటర్ ఎలిమెంట్స్ = { 22 కౌంటర్ ప్యాకెట్‌లు 0 బైట్లు 0 : జంప్ ssh_input, * కౌంటర్ ప్యాకెట్‌లు 0 బైట్లు 0 : డ్రాప్ } } చైన్ ssh_input {} chain wan_input { tcp dport vmap @portmap } చైన్ ప్రీరౌటింగ్ {టైప్ ఫిల్టర్ హుక్ ప్రీరౌటింగ్ ప్రాధాన్యత ముడి; విధానం అంగీకరించాలి; iif vmap { "lo" : జంప్ వాన్_ఇన్‌పుట్ } } }
  • ఇచ్చిన ప్యాకెట్ కుటుంబం కోసం హ్యాండ్లర్ల జాబితాను ప్రదర్శించడానికి "జాబితా హుక్స్" ఆదేశం జోడించబడింది: # nft జాబితా హుక్స్ ip పరికరం eth0 ఫ్యామిలీ ip { హుక్ ఇన్‌గ్రెస్ { +0000000010 చైన్ నెట్‌దేవ్ xy [nf_tables] +0000000300 చైన్ inet mw [nf_tables] { -0000000100 చైన్ ip ab [nf_tables] +0000000300 chain inet mz [nf_tables] } హుక్ ఫార్వార్డ్ { -0000000225 selinux_ipv4_forward 0000000000 chain selinux_ipv0000000225_output } హుక్ పోస్ట్‌రౌటింగ్ { +4 0000000225 selinux_ipv4_postroute }}
  • క్యూ బ్లాక్‌లు యూజర్ స్పేస్‌లోని క్యూలకు ప్యాకెట్‌లను పంపిణీ చేయడానికి jhash, symhash మరియు numgen వ్యక్తీకరణలను కలపడానికి అనుమతిస్తాయి. … సింహాష్ మోడ్ 65536కి క్యూ … క్యూ ఫ్లాగ్స్ బైపాస్ టు నమ్‌జెన్ ఇంక్ మోడ్ 65536… క్యూ టు ఝాష్ ఓఇఫ్. meta mark mod 32 "క్యూ" కూడా ఏకపక్ష కీల ఆధారంగా వినియోగదారు స్థలంలో క్యూను ఎంచుకోవడానికి మ్యాప్ జాబితాలతో కలపవచ్చు. ... క్యూ ఫ్లాగ్‌లు oifname మ్యాప్‌కి బైపాస్ { "eth0" : 0, "ppp0" : 2, "eth1" : 2 }
  • సెట్ జాబితాను అనేక మ్యాప్‌లలోకి చేర్చే వేరియబుల్‌లను విస్తరించడం సాధ్యమవుతుంది. ఇంటర్‌ఫేస్‌లను నిర్వచించండి = { eth0, eth1 } టేబుల్ ip x {గొలుసు y {రకం ఫిల్టర్ హుక్ ఇన్‌పుట్ ప్రాధాన్యత 0; విధానం అంగీకరించాలి; iifname vmap {lo : అంగీకరించు, $ఇంటర్‌ఫేస్‌లు: డ్రాప్ }}} # nft -f x.nft # nft జాబితా రూల్స్‌సెట్ టేబుల్ ip x {చైన్ y {టైప్ ఫిల్టర్ హుక్ ఇన్‌పుట్ ప్రాధాన్యత 0; విధానం అంగీకరించాలి; iifname vmap { "lo" : అంగీకరించు, "eth0" : డ్రాప్, "eth1" : డ్రాప్ } } }
  • విరామాలలో vmaps (తీర్పు మ్యాప్) కలపడం అనుమతించబడుతుంది: # nft add rule xy tcp dport . ip saddr vmap { 1025-65535 . 192.168.10.2 : అంగీకరించు }
  • NAT మ్యాపింగ్‌ల కోసం సరళీకృత సింటాక్స్. చిరునామా పరిధులను పేర్కొనడానికి అనుమతించబడింది: ... ip saddr మ్యాప్‌కి స్నాట్ { 10.141.11.4 : 192.168.2.2-192.168.2.4 } లేదా స్పష్టమైన IP చిరునామాలు మరియు పోర్ట్‌లు: ... dnat to ip saddr మ్యాప్ { 10.141.11.4 . 192.168.2.3 } లేదా IP పరిధులు మరియు పోర్ట్‌ల కలయికలు: ... dnat నుండి ip saddr . tcp dport మ్యాప్ { 80 . 192.168.1.2: 80-10.141.10.2. 10.141.10.5-8888 }

మూలం: opennet.ru

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