అప్స్ట్రీమ్ VPN వెనుక డౌన్స్ట్రీమ్ క్లయింట్లు: రూట్ లేక NAT?
అప్స్ట్రీమ్ VPN క్లయింట్ చిరునామాను మాత్రమే తెలుసుకుంటుంది, కాబట్టి మరో సబ్నెట్ను పంపడానికి అంగీకరించిన రూట్ లేక ఉద్దేశపూర్వక మూల అనువాదం అవసరం.
ఒక గేట్వే మీ స్వంత పరికరాల కోసం WireGuard మరియు మరొకరి నెట్వర్క్ వైపు OpenVPN క్లయింట్ నడుపుతుంది. రెండు లోపలి ఇంటర్ఫేస్ల మధ్య ఫార్వర్డింగ్ పనిచేస్తుంది, డౌన్స్ట్రీమ్ సబ్నెట్ ఇప్పుడు అప్స్ట్రీమ్ సేవలో భాగమని నిర్ధారించుకోవడం సులభం. అలా కాదు. క్లయింట్ లాగిన రూట్ మీ గేట్వేకు అభ్యర్థనలు ఎక్కడికి పంపాలో చెబుతుంది; ఎప్పుడూ వినని పరికరాలకు దూర నెట్వర్క్ ట్రాఫిక్ను ఎలా తిరిగి పంపుతుందని ఏమీ చెప్పదు. ఒక్క నియమం జోడించే ముందు అప్స్ట్రీమ్ నిజంగా మద్దతిచ్చే రిటర్న్ నమూనాను ఎంచుకోండి.
రూటింగ్ను తాకే ముందు రిటర్న్ నమూనాను నిర్ణయించండి
ఈ వివరణలో డౌన్స్ట్రీమ్ క్లయింట్లు 10.90.0.0/24 ఉపయోగిస్తారు, గేట్వేకు కేటాయించిన అప్స్ట్రీమ్ టన్నెల్ చిరునామా 10.80.0.6, ఆమోదించబడిన దూర వనరు 172.20.0.30. ఈ ఆకృతికి రెండు నమూనాలు సరిపోతాయి: డౌన్స్ట్రీమ్ మూలాన్ని నిలబెట్టి దూర వైపు దాన్ని రూట్ చేయించడం, లేక మూలాన్ని గేట్వే సొంత టన్నెల్ చిరునామాకు అనువదించడం. ఈ నిర్ణయం తర్వాత ప్రతిదీ యాంత్రికం, నిర్ణయానికే సేవ యజమాని అవసరం. పైన ఒక వరుస దూర వైపుతో రూటింగ్ ఒప్పందం; మరొకటి మీరు ఒంటరిగా చేయగల స్థానిక విధాన మార్పు. ఈ రెండింటిని కలిపేయడమే పది నిమిషాల పనిని చర్చగా మారుస్తుంది.
preserved: 10.90.0.23 -> 172.20.0.30
translated: 10.80.0.6 -> 172.20.0.30ఒక వరుసను ఎంచుకుని దానిపై నిలబడండి. వరుసలు దశలు కావు, ప్రత్యామ్నాయాలు, వాటిని కలిపితే సమీక్షలో ఎవరూ వివరించలేని రూపకల్పన వస్తుంది.
రూట్ ద్వారా మూల సంరక్షణ
దూర వైపు డౌన్స్ట్రీమ్ చిరునామా నుండి అభ్యర్థన పొందుతుంది, కాబట్టి ఆ సబ్నెట్కు మద్దతు ఉన్న రూట్ మరియు peer యాజమాన్యం, దాన్ని అంగీకరించే అధికారం కూడా కావాలి. ఇవి దూర సెట్టింగ్లు, ఏ స్థానిక Linux రూట్ వాటిని సృష్టించదు. ప్రిఫిక్స్ మరియు దాన్ని మోసే టన్నెల్ peer తో సహా స్పష్టంగా, లిఖితపూర్వకంగా అడగండి, సేవ సైట్-టు-సైట్ ఏర్పాట్లను అసలు మద్దతిస్తుందో లేదో దానిపై సమాధానం ఆధారపడుతుందని ఆశించండి.
సమాధానం అవును అయితే స్థానిక కాన్ఫిగరేషన్ చిన్నది: ఫార్వర్డింగ్ ప్రారంభం, డౌన్స్ట్రీమ్ పరిధిని కవర్ చేసే WireGuard peer allowed-ips, రెండు దిశల్లో దాటడాన్ని అనుమతించే firewall విధానం.
ఉద్దేశపూర్వక మూల అనువాదం
సేవ ట్రాఫిక్ను కనెక్ట్ అయిన క్లయింట్ చిరునామాకు మాత్రమే తిరిగి పంపితే, బయటకు వెళ్లేటప్పుడు మూలాన్ని ఆ చిరునామాకు అనువదించి, ప్రత్యుత్తరాల కోసం దాన్ని తిప్పే conntrack స్థితిని ఉంచండి. నియమాన్ని ఉద్దేశించిన డౌన్స్ట్రీమ్ మూలాలు, ఉద్దేశించిన దూర గమ్యాలు మరియు అప్స్ట్రీమ్ ఇంటర్ఫేస్కు పరిమితం చేయండి. ప్రతి ఇంటర్ఫేస్ నుండి బయటకు వెళ్లే ప్రతిదాన్ని అనువదించే నియమం ఈ అవసరం కంటే చాలా పెద్ద విధానం, తర్వాత అది మిమ్మల్ని ఆశ్చర్యపరుస్తుంది.
IPv6 కి దాని సొంత రూపకల్పన కావాలి; IPv4 masquerade వరుసను కాపీ చేయడం నిర్మాణం కాదు. అనువదించిన మార్గాన్ని క్యాష్ చేసిన కనెక్షన్తో కాకుండా కొత్త కనెక్షన్తో పరీక్షించండి.
స్థానిక డేటా మార్గం ఇంకా పనిచేయాలి
అనువాదం స్థానిక పనిని తొలగించదు: గేట్వేకు ఇంకా డౌన్స్ట్రీమ్ గమ్యాలకు రూట్, సరైన WireGuard peer మూల యాజమాన్యం, ప్రారంభించిన ఫార్వర్డింగ్ మరియు ఇంటర్ఫేస్ల మధ్య ఇరుకైన firewall విధానం కావాలి. గేట్వేపైనే సృష్టించిన అభ్యర్థన ఆ అనుమతుల్లో ఏదీ పరీక్షించదు, అందుకే గేట్వేపై స్థానిక పరీక్షలు పాస్ అవుతాయి కానీ డౌన్స్ట్రీమ్ పరికరాలు ఇంకా విఫలమవుతాయి.
గేట్వే నుండి కాదు, నిజమైన డౌన్స్ట్రీమ్ పరికరం నుండి పరీక్షించండి. మూల చిరునామాయే ఈ వ్యాయామం మొత్తం ఉద్దేశ్యం.
ఒక మూలం అంటే ఒక సెషన్ గుర్తింపు
దూర సేవ ప్రతి డౌన్స్ట్రీమ్ పరికరానికి స్వతంత్ర ప్రమాణీకరణ కాదు, గేట్వే ప్రమాణీకరించిన సెషన్ మరియు దాని అనువదించిన చిరునామాను చూస్తుంది. పరికరానికి సంబంధించిన అనుమతులు మరియు అప్లికేషన్ గుర్తింపులను స్పష్టంగా ఉంచండి, అనేక పరికరాల తరఫున పనిచేసే గేట్వేకు అసలు అనుమతి ఉందో లేదో సేవ యజమానితో నిర్ధారించుకోండి. అనువాదం ప్రతి-పరికర నమోదు అవసరాన్ని దాటవేసే మార్గం కాదు; సేవ ప్రతి పరికరం నమోదు కావాలని కోరితే, ఆ నమూనానే ఉపయోగించండి లేదా సైట్-టు-సైట్ ఏర్పాటు కోసం చర్చలు జరపండి.
ఆ నిర్ధారణను నియమం పక్కన runbook లో రాయండి, ఎందుకంటే తదుపరి సమీక్షకుడు రూపకల్పన ఆమోదించబడిందా లేక కేవలం సౌకర్యవంతమా అని అడుగుతారు.
హత్తుకోబడిన స్థితిని నిర్వచించి, తర్వాత మూడు అభ్యర్థనలను పరీక్షించండి
అప్స్ట్రీమ్ టన్నెల్ పడిపోయినప్పుడు ఏమి జరుగుతుందో నిర్ణయించండి. నిషేధించిన చోట అధికృత దూర ట్రాఫిక్ నిశ్శబ్దంగా సాధారణ WAN బ్యాకప్ మార్గాన్ని అనుసరించకూడదు, కాబట్టి దాటడాన్ని అనుమతించే firewall విధానం కూడా మూసి ఉన్న స్థితిలో విఫలం కావాలి. తర్వాత నిజమైన డౌన్స్ట్రీమ్ పరికరం నుండి మూడు సందర్భాలను పరీక్షించండి: పనిచేసే అనుమతించిన అభ్యర్థన, విఫలమయ్యే నిషేధిత అభ్యర్థన, మరియు అనుమతించిన దాన్ని ఆపే అప్స్ట్రీమ్ వైఫల్యం.
ప్రతి నియమానికి ఒక వరుసలో రోల్బ్యాక్ నమోదు చేయండి, ఉద్దేశాన్ని మళ్లీ నిర్మించకుండా మార్పును రద్దు చేయగలిగేలా.