ప్రతి VPN క్లయింట్ పూల్ కోసం ఒక గమ్యస్థాన పరిధిని బ్లాక్ చేయండి
ఒక nftables నియమం గేట్వే యొక్క స్వంత ట్రాఫిక్ను తాకకుండా అనుమతించిన VPN పూల్ కోసం గమ్యస్థాన ప్రిఫిక్స్ను తిరస్కరించగలదు. హుక్ మరియు స్థానాన్ని సరిపోల్చండి.
ఒక నియమం అనుమతించిన VPN పూల్ను గమ్యస్థాన పరిధి నుండి దూరంగా ఉంచగలదు, గేట్వే చేసే మరేదీనికీ భంగం కలిగించకుండా. నియమం స్వయంగా చిన్నది; అది పనిచేస్తుందా లేదా అనేది అది నివసించే హుక్ మరియు గొలుసులో దాని స్థానం నిర్ణయిస్తాయి. ఈ రెండింటిలో తప్పు చేస్తే సరిగ్గా కనిపించే కానీ స్థిరంగా ప్రవర్తించని ఫైర్వాల్ లభిస్తుంది. నియమం ప్యాకెట్ను చూసినప్పుడు ప్యాకెట్ ఏమి చేస్తోంది అనే దానితో ప్రారంభించండి.
నియమం నిజంగా ఏమి సరిపోలుస్తుంది
నియమం ఒకేసారి మూడు విషయాలను సరిపోలుస్తుంది: ఇన్పుట్ ఇంటర్ఫేస్, మూల ప్రిఫిక్స్ మరియు గమ్యస్థాన ప్రిఫిక్స్. డ్రాప్ వర్తించే ముందు మూడూ నిజమై ఉండాలి, అదే దాన్ని సన్నగా ఉంచుతుంది. దాన్ని మూడు వేర్వేరు విధానాలుగా చదవడం కంటే ఒక వ్యక్తీకరణగా చదవడం సులభం.
ఇంటర్ఫేస్ సరిపోలికే ఫార్వార్డ్ చేయబడిన క్లయింట్ ట్రాఫిక్ను గేట్వే స్వంత కనెక్షన్ల నుండి వేరు చేస్తుంది. అది లేకుంటే, మూల పూల్ను మాత్రమే పేర్కొనే నియమం గేట్వే స్వయంగా ఆ చిరునామా నుండి సృష్టించే ప్యాకెట్లను కూడా ప్రభావితం చేస్తుంది, అలాంటిది ఎప్పుడైనా జరిగితే. మూల ప్రిఫిక్స్ విధానాన్ని అనుమతించిన క్లయింట్లకు, గమ్యస్థాన ప్రిఫిక్స్ దాన్ని ఒక పరిధికి పరిమితం చేస్తుంది. నియమాన్ని జాబితాగా కాకుండా ఖండనగా చదవండి.
ఏదైనా సవరించే ముందు మూడు విలువలు రాయండి: టన్నెల్ ఇంటర్ఫేస్ పేరు, సర్వర్ పంచే పూల్, మరియు మీరు తిరస్కరించాలనుకునే ప్రిఫిక్స్. వాటిలో ఏదైనా టైపో ఉంటే శుభ్రంగా పార్స్ అయ్యే కానీ ఏమీ రక్షించని నియమం ఏర్పడుతుంది. ఆ మూడు విలువలను నియమం పక్కన ఉన్న మార్పు రికార్డులో ఉంచండి.
హుక్ నియమం ఎవరికి వర్తిస్తుందో నిర్ణయిస్తుంది
netfilter గొలుసు ఒక హుక్కు జోడించబడుతుంది, మరియు ఏ ప్యాకెట్లను గొలుసు చూస్తుందో హుక్ నిర్ణయిస్తుంది. forward హుక్ గేట్వే ద్వారా రూట్ అయ్యే ట్రాఫిక్ను చూస్తుంది, అదే క్లయింట్ నుండి గమ్యస్థానానికి ట్రాఫిక్. గొలుసులో మిగతావన్నీ వేరే ప్రేక్షకుల వైపు మళ్లించబడ్డాయి.
input హుక్ గేట్వేకే చిరునామా చేయబడిన ట్రాఫిక్ను చూస్తుంది, కాబట్టి అక్కడ పెట్టిన నియమం ట్రాన్సిట్ను కాదు, దాని స్వంత సేవలకు ప్రవేశాన్ని నియంత్రిస్తుంది. output హుక్ గేట్వే స్వయంగా ఉత్పత్తి చేసే ట్రాఫిక్ను చూస్తుంది, ఇది క్లయింట్ పూల్ విధానానికి అవసరమైనదానికి వ్యతిరేకం. గొలుసుల పేర్లు నియమాల సమితిని రాసినవారు ఎంచుకున్న ఏకపక్ష లేబుళ్లు, కాబట్టి పేరు నుండి హుక్ను ఊహించవద్దు. గొలుసు ఎక్కడ జోడించబడిందో తనిఖీ చేసి, తర్వాత అది ఏమి సరిపోల్చగలదో ఊహించండి.
| Hook | Traffic it sees | Right for this policy |
|---|---|---|
| input | Addressed to the gateway | No, that is the host's own services |
| forward | Routed through the gateway | Yes, for client-to-destination traffic |
| output | Generated by the gateway | No, that is the opposite direction |
జోడింపును చదవడం ఒక పంక్తి తనిఖీ, ఇది ప్యాకెట్ను ఎప్పుడూ చూడని గొలుసులో నియమం పడకుండా నిరోధిస్తుంది.
విస్తృత accept కంటే ముందు నియమాన్ని ఉంచండి
నియమాలు క్రమంగా మూల్యాంకనం చేయబడతాయి, మొదటి తీర్పు గెలుస్తుంది. గొలుసులో ముందున్న విస్తృత accept తాను సరిపోల్చే ప్యాకెట్లకు మూల్యాంకనాన్ని ముగిస్తుంది, కాబట్టి తర్వాత జోడించిన డ్రాప్ వాటికి ఎప్పుడూ నడవదు. ఆ క్రమ నియమమే సరిగ్గా కనిపించే నియమానికి ఎలాంటి ప్రభావం ఉండకపోవడానికి పూర్తి కారణం.
నియమాన్ని చివరలో జోడించడం బదులు accept కంటే ముందు చొప్పించండి. గొలుసులో టన్నెల్ ఇంటర్ఫేస్ కోసం ఇప్పటికే సాధారణ accept ఉంటే, కొత్త నియమం దానికి ముందు ఉండాలి, లేకుంటే అది కేవలం అలంకారం. మీరు సవరించిన ఫైల్ కాదు, వచ్చిన క్రమాన్ని తనిఖీ చేయండి, ఎందుకంటే అనేక ఫైళ్ల నుండి కూర్చిన నియమాల సమితి ఏ ఒక్కదానితోనూ సరిపోలకపోవచ్చు. తర్వాత పూల్ నుండి వచ్చిన పరీక్షా ప్యాకెట్తో నిర్ధారించండి.
sudo nft list chain inet filter forward
sudo nft insert rule inet filter forward iifname "tun0" ip saddr 10.90.0.0/24 ip daddr 198.51.100.0/24 drop
sudo nft -c -f /etc/nftables.conf
మూడవ ఆదేశం ఫైల్ను వర్తింపజేయకుండా పార్స్ చేస్తుంది, ఇది సింటాక్స్ లోపాలను అంతరాయం కాకముందే పట్టుకుంటుంది. రోల్బ్యాక్ ప్రణాళికతో వర్తింపజేయండి, ఎందుకంటే forward గొలుసులో తప్పు నియమం మీరు పని చేస్తున్న టన్నెల్ను కత్తిరించవచ్చు.
ఇప్పటికే ఉన్న ప్రవాహాలు మీ కొత్త నియమాన్ని పట్టించుకోవు
నియమం ఉనికిలోకి రాకముందు సృష్టించిన conntrack నమోదు మునుపటి accept తో సరిపోలుతూనే ఉంటుంది. అందుకే కొత్త డ్రాప్ కొన్నిసార్లు కొత్త కనెక్షన్లకు పనిచేస్తున్నట్టు, పరీక్షిస్తున్న దానికి ఏమీ చేయనట్టు కనిపిస్తుంది.
గొలుసు ఎగువన ఉన్న స్థితి సరిపోలికను చదవండి. మీ నియమానికి ముందు అది established మరియు related ట్రాఫిక్ను అంగీకరిస్తే, ఇప్పటికే నడుస్తున్న ప్రతి ప్రవాహం మూసివేయబడే వరకు ప్రవహిస్తూనే ఉంటుంది. అత్యవసర నియమానికి సాధారణంగా అదే కావాల్సిన ప్రవర్తన, మరియు తక్షణ కట్ ఆశించినప్పుడు అది గందరగోళానికి గురిచేస్తుంది. అమలు చేయడానికి ముందు ఏ ప్రభావం కావాలో నిర్ణయించండి. తెరిచిన కనెక్షన్ను తిరిగి ఉపయోగించే పరీక్ష మీకు తప్పు కథ చెబుతుంది.
sudo conntrack -L -s 10.90.0.14 -d 198.51.100.20
sudo nft list ruleset | grep -n -A3 'ct state'
మొదటి ఆదేశం ప్రవాహం ఉందా లేదా చూపుతుంది, రెండవది మునుపటి స్థితి నియమం దాన్ని అంగీకరిస్తూనే ఉందా చూపుతుంది. రెండూ చదవడానికి మాత్రమే మరియు సంఘటన సమయంలో నడపడం సురక్షితం.
ఈ నియమం ఏమి కాదు
ఈ నియమం డొమైన్ నల్ల జాబితా, IPv6 విధానం లేదా ఒకే అప్లికేషన్ ఖాతాపై పరిమితి కాదు.
వాటిలో ప్రతిదానికి దాని స్వంత యంత్రాంగం కావాలి. డొమైన్ బ్లాక్ పేర్లను పరిష్కరించాలి, ప్యాకెట్ ఫిల్టర్ అలా చేయదు. IPv6 ట్రాఫిక్కు దాని స్వంత సరిపోలిక కావాలి, ఎందుకంటే ip వ్యక్తీకరణ ip6 ప్యాకెట్ల గురించి ఏమీ చెప్పదు. అప్లికేషన్ స్థాయి పరిమితి ప్రిఫిక్స్ సరిపోలికది కాదు, సేవ లేదా ధృవీకరించిన ప్రాక్సీది. ఈ అవసరాలను వేరుగా ఉంచడమే ఒక సన్నని నియమాన్ని నాలుగు పనులు చేయమని అడగడాన్ని నిరోధిస్తుంది.
ఈ నియమం ఇచ్చే ఒప్పందం ఖచ్చితమైనది: అనుమతించిన పూల్ నుండి ఒక గమ్యస్థాన ప్రిఫిక్స్కు ట్రాఫిక్ తిరస్కరించబడుతుంది, సంబంధం లేని గేట్వే ట్రాఫిక్ దాని ప్రస్తుత విధానాన్ని నిలుపుకుంటుంది. ఆ వాక్యాన్ని నియమం పక్కన రాయండి, తదుపరి వ్యక్తి అది ఎందుకు అని తెలుసుకుంటారు.