OpenVPN క్లయింట్ల మధ్య ట్రాఫిక్ను nftables ఎందుకు చూడలేదు
సమతల సభ్యుల మధ్య ట్రాఫిక్ VPN ప్రక్రియ లోపలే అందించబడుతుంది, కాబట్టి ఫార్వర్డ్ కౌంటర్లు ఎప్పుడూ కదలవు. దాన్ని లెక్కించాలంటే కెర్నల్ మార్గం మరియు ప్రక్రియ మార్గం మధ్య ఎంచుకోవాలి.
ఒకే సర్వర్లో ఇద్దరు క్లయింట్లు ఫైళ్లను మార్పిడి చేసుకుంటారు, బదిలీ విజయవంతమవుతుంది, కానీ టన్నెల్ వైపు చూపిన ప్రతి ఫార్వర్డ్ నియమం సున్నా ప్యాకెట్లు నివేదిస్తుంది. నియమాలు విరిగిలేవు, గొలుసు తప్పు స్థానంలో లేదు. పీర్-టు-పీర్ ఫార్వర్డింగ్ ప్రారంభంలో ఉన్నప్పుడు ప్యాకెట్ సర్వర్ ప్రక్రియ లోపలే అందించబడుతుంది మరియు హోస్ట్ స్టాక్ ఎప్పుడూ రూటర్ కాదు, కాబట్టి కెర్నల్ ఫైర్వాల్కు లెక్కించడానికి ఏమీ ఉండదు. ఈ విభజనను అర్థం చేసుకోవడం మీరు షార్ట్కట్ను ఉంచుతారా లేదా కెర్నల్ ద్వారా మార్గాన్ని తిరిగి నిర్మిస్తారా అని నిర్ణయిస్తుంది.
సర్వర్ గుండా ఒక ప్యాకెట్ను అనుసరించండి
రూట్ చేసిన టన్నెల్లో డెమన్ ప్రతి క్లయింట్ డీక్రిప్ట్ చేసిన ప్యాకెట్ను టన్నెల్ పరికరానికి ఇస్తుంది. అక్కడ నుండి హోస్ట్ దాన్ని రూట్ చేస్తుంది, ఫార్వర్డ్ హుక్ నడుస్తుంది, టన్నెల్ పరికరంతో సరిపోలే నియమం ట్రాఫిక్ను లెక్కించవచ్చు లేదా వదిలించుకోవచ్చు. చాలా ఫైర్వాల్ ఉదాహరణలు ఊహించే మార్గం ఇదే.
| Forwarding path | Who decides | What the host firewall sees |
|---|---|---|
| Kernel routing between clients | Host routing table and forward rules | Every inner packet, with interface names |
| Peer forwarding inside the server process | The VPN daemon's own peer table | Only the outer encrypted transport |
షార్ట్కట్ హోస్ట్ను మధ్య నుండి తీసేస్తుంది. ఒక సెషన్ డీక్రిప్ట్ చేసిన ప్యాకెట్ డెమన్ లోపలే మరో సెషన్కు ఇవ్వబడుతుంది, లోపలి ప్యాకెట్ ఎప్పుడూ టన్నెల్ పరికరంపై విడుదల కాదు, హోస్ట్ దాన్ని రూట్ చేయదు. ఎన్క్యాప్సులేట్ చేసిన ట్రాఫిక్ ఇప్పటికీ భౌతిక ఇంటర్ఫేస్ను దాటుతుంది, కాబట్టి బాహ్య క్యాప్చర్ బిజీగా కనిపిస్తుంది, లోపలి నియమాలు మాత్రం నిశ్శబ్దంగా ఉంటాయి. టన్నెల్ పరికరంపై తీసుకున్న క్యాప్చర్ ఏమీ చూపదు, ఇది అక్కడ బదిలీని చూడాలని ఆశించే వారిని ఆశ్చర్యపరుస్తుంది. ఈ అసమానతయే డెమన్ బయట నుండి షార్ట్కట్ను గుర్తించడానికి వేగవంతమైన మార్గం.
ఏ మార్గం నడిచిందో నిర్ణయించే కౌంటర్ పరీక్ష
వర్తించాల్సిన నియమానికి కౌంటర్ జోడించండి, ఆ నియమం నిరోధించాల్సిన ఇద్దరు క్లయింట్ల మధ్య బదిలీని నడపండి, తర్వాత కౌంటర్ను చదవండి.
sudo nft list ruleset
sudo nft add rule inet filter forward iifname "tun0" oifname "tun0" counter accept
sudo nft list chain inet filter forward
బదిలీ విజయవంతమై కౌంటర్ సున్నా వద్దే ఉంటే, కెర్నల్ ఆ ప్యాకెట్లను ఎప్పుడూ నిర్వహించలేదు, ఎంత నియమ సవరణ చేసినా అది మారదు. అదే పరీక్షను సర్వర్లోనే ఉన్న సేవకు వ్యతిరేకంగా పునరావృతం చేయండి, ఎందుకంటే ఆ ప్రవాహం హోస్ట్ స్టాక్ దాటుతుంది, దాని కౌంటర్ కదులుతుంది. రెండు ఫలితాలను పోల్చడమే సమాధానాన్ని ఇస్తుంది.
రెండు వివరాలు తప్పు పఠనాన్ని నిరోధిస్తాయి. గొలుసు లేబుల్లో రాసిన ఇంటర్ఫేస్ పేరు దానంతట అదే ఏమీ ఫిల్టర్ చేయదు, ఎందుకంటే సరిపోలిక నియమాల లోపలి ఇంటర్ఫేస్ ఫీల్డ్లపై జరుగుతుంది. మరియు బ్రిడ్జ్ చేసిన పొర-2 రూపకల్పన మళ్లీ భిన్నంగా ప్రవర్తిస్తుంది: అక్కడ క్లయింట్లు ఒకే ప్రసార డొమైన్ను పంచుకుంటారు, కాబట్టి పీర్ కనుగొనడం ఆశించినది, రూటింగ్ లోపం కాదు.
స్విచ్ అనేది యాక్సెస్ జాబితా కాదు
అర్ధ రోజు తీసుకునే భాగం ఇదే. పీర్ ఫార్వర్డింగ్ ఒకే ఆన్-ఆఫ్ సెట్టింగ్, అది ఆన్లో ఉన్నంత కాలం డెమన్ ఒక్కటే ఫార్వర్డింగ్ పాయింట్. హోస్ట్ ఫైర్వాల్ ఎవరు ఎవరిని చేరుకోవచ్చో చెప్పలేదు, ప్రతి క్లయింట్ ఫైళ్లు స్విచ్ను విధాన మాత్రికగా మార్చవు.
మీకు ప్రతి పీర్కు నియమాలు కావాలంటే, ఎంపిక షార్ట్కట్ను వదులుకోవడం మరియు నియంత్రణగా హోస్ట్ ఫైర్వాల్ను వదులుకోవడం మధ్య ఉంది. దాన్ని ఆఫ్ చేస్తే కెర్నల్ ఫార్వర్డింగ్ తిరిగి వస్తుంది, దానికి సర్వర్లో IP ఫార్వర్డింగ్ ప్రారంభించడం మరియు మీకు కావాల్సిన ప్రవాహాలకు స్పష్టమైన నియమాలు అవసరం. ఆన్లో ఉంచితే విధానం డెమన్ కాన్ఫిగరేషన్లో జీవిస్తుంది, ఇది ఆచరణలో అన్ని పీర్లు లేదా ఏ పీర్ కాదు.
తమ సొంత చిరునామా పూల్స్ మరియు పోర్ట్లతో వేర్వేరు సర్వర్ ప్రక్రియలు సాధ్యమయ్యే మధ్య మార్గం. ప్రతి ప్రక్రియ ఖచ్చితంగా ఒక యాక్సెస్ నిర్ణయాన్ని మోస్తుంది, కాబట్టి రెండు గుంపులు విధాన మాత్రిక లేకుండా వేర్వేరు నియమాలను కలిగి ఉండవచ్చు. హోస్ట్ ఉద్దేశించినప్పుడు పూల్స్ మధ్య రూట్ చేయవచ్చు, అప్పుడు ఫైర్వాల్ ఆ ప్రవాహాలను చూస్తుంది ఎందుకంటే అవి హోస్ట్ను దాటుతాయి. ఖర్చు అదనపు పోర్ట్లు, అదనపు ధృవపత్రాలు మరియు ప్రతి గుంపుకు ఒక ప్రొఫైల్.
ఫార్వర్డింగ్ పాయింట్ను ఎంచుకోవడం
ఫైర్వాల్ విధాన ఇంజిన్ అయినప్పుడు, ప్రతి ప్రవాహానికి లాగింగ్ కావాల్సినప్పుడు, లేదా లెక్కింపు ముఖ్యమైనప్పుడు కెర్నల్ ఫార్వర్డింగ్ను ఎంచుకోండి. ఖర్చు హోస్ట్ స్టాక్ ద్వారా నిర్గమాంశ మరియు నిర్వహించడానికి ఎక్కువ నియమాలు. ప్రయోజనం ఏమిటంటే కౌంటర్ల నుండి ప్రవాహ ఎగుమతిదారుల వరకు ఉన్న ప్రతి ఉన్న సాధనం ట్రాఫిక్ను తిరిగి వివరిస్తుంది. చిన్న సర్వర్లో ఈ ఖర్చు కనిపించదు; రద్దీగా ఉన్న రిలేలో కనిపిస్తుంది.
పీర్ల మధ్య ట్రాఫిక్ పూర్తిగా అనుమతించబడినా లేదా పూర్తిగా నిషేధించబడినా మరియు సర్వర్ దానికి అనుగుణంగా కొలవబడి ఉంటే ప్రక్రియ లోపలి ఫార్వర్డింగ్ను ఎంచుకోండి. ఖర్చు ఏమిటంటే కౌంటర్లు, క్యూ క్రమశిక్షణలు మరియు కనెక్షన్ ట్రాకింగ్ ఇకపై లోపలి ప్రవాహాలను వివరించవు; తర్వాత ఎవరూ వాటిపై ఆధారపడకపోతే మాత్రమే ఇది ఆమోదయోగ్యం.
మీరు ఏది ఎంచుకున్నా దాన్ని ఫైర్వాల్ నియమాల పక్కన రాయండి. పీర్ల మధ్య ట్రాఫిక్ను అనుమతిస్తున్నట్టు కనిపిస్తూనే డెమన్ ఏమైనా నిర్ణయించే నియమ సముదాయం విఫలమైన బదిలీని డీబగ్ చేసే తదుపరి వ్యక్తిని తప్పుదారి పట్టిస్తుంది. నియమాలను మాత్రమే చదివే ఎవరైనా కెర్నలే ద్వారం అని భావిస్తారు.
నియమాలను మార్చే ముందు ఏమి తనిఖీ చేయాలి
సర్వర్ నిజంగా లోడ్ చేసిన కాన్ఫిగరేషన్ను చదవండి, మీరు సవరించినట్టు గుర్తున్న ఫైల్ను కాదు, పీర్ ఎంపిక ఉందో లేదో నిర్ధారించుకోండి. మీరు దాన్ని మార్చి ఉంటే, సేవ డిస్క్లో ఫైల్ను తిరిగి రాసినట్టే కాకుండా తిరిగి లోడ్ అయిందని నిర్ధారించుకోండి.
తర్వాత నియమం ఏమైనా సరిపోతుందని నిరూపించడానికి క్లయింట్ నుండి సర్వర్కు ప్రవాహంతో పరీక్షను పునరావృతం చేయండి, మరియు నెట్టిన మార్గాలను తనిఖీ చేయండి, ఎందుకంటే లేని మార్గం క్లయింట్ వైపు నుండి సరిగ్గా ఫైర్వాల్ నిరోధంలా కనిపిస్తుంది. ఏ ఫార్వర్డింగ్ పాయింట్ నిర్ణయాన్ని కలిగి ఉందో తెలిసిన తర్వాత మాత్రమే నియమాల క్రమాన్ని మార్చండి.