అదే హోస్ట్లో దాని సర్వర్ నడుస్తున్నప్పుడు OpenVPN క్లయింట్ ఆగిపోతుంది
ఒకే హోస్ట్లో రెండు OpenVPN ఇన్స్టాన్సులు ఒకే స్థానిక పోర్ట్ మరియు ఒకే రూట్ టేబుల్ కోసం పోరాడుతాయి. పోర్ట్ను పిన్ చేయండి, పరికరాలను వేరు చేయండి మరియు ఏ టేబుల్ గెలుస్తుందో తనిఖీ చేయండి.
దూరపు సైట్ నుండి టన్నెల్ను అంగీకరించి, అదే సమయంలో విక్రేత నెట్వర్క్కు డయల్ చేసే ల్యాబ్ మెషిన్ నా దగ్గర ఉంది. అవుట్బౌండ్ ప్రొఫైల్ వారాల పాటు పనిచేసింది. ఇన్బౌండ్ సర్వర్ జోడించిన తర్వాత, అవుట్బౌండ్ కనెక్ట్ అయ్యి, ఆపై కొన్ని సెకన్లలో ట్రాఫిక్ పంపడం ఆపేసింది, లేదా చిరునామా ఇప్పటికే ఉపయోగంలో ఉందని లోపంతో ప్రారంభం కావడానికి నిరాకరించింది. కాన్ఫిగ్ ఫైల్లు మారలేదు; హోస్ట్ పోర్ట్లు మరియు రూట్ల గురించి తన అభిప్రాయంతో రెండవ OpenVPN ప్రక్రియను పొందింది.
వైఫల్యం యాదృచ్ఛికం కాదు, ఇది ప్రామాణీకరణ సమస్య కాదు. ఒకే మెషిన్లో రెండు డీమన్లు ఒకే స్థానిక సాకెట్ మరియు ఒకే రౌటింగ్ టేబుల్ కోసం పోటీపడతాయి, చివరిగా ప్రారంభమైన లేదా మళ్లీ కనెక్ట్ అయినది సాధారణంగా గెలుస్తుంది. ఈ రెండు ఢీకొనడాలలో మీకు ఏది ఉందో తెలుసుకోవడం మొదట ఎక్కడ చూడాలో నిర్ణయిస్తుంది.
లక్షణాన్ని వెనుకకు చదవండి
టన్నెల్ ఎప్పుడు చనిపోతుందో దానితో ప్రారంభించండి. ప్రారంభంలో బైండ్ లోపం వినిపించే వైపును సూచిస్తుంది: ఏదో ఇప్పటికే ఆ పోర్ట్ను కలిగి ఉంది, మరియు OpenVPN దాన్ని పంచుకోవడం బదులు ప్రారంభం కావడానికి నిరాకరిస్తుంది. పైకి వచ్చి ఆపై నిశ్శబ్దమయ్యే టన్నెల్ రౌటింగ్ను సూచిస్తుంది, ఎందుకంటే మరొక ఇన్స్టాన్స్ ఇన్స్టాల్ చేసిన రూట్ బయటి కనెక్షన్ ప్యాకెట్లను వాటి మార్గం నుండి లాగగలదు.
రెండు సందర్భాలు ఒకే వినియోగదారు ఫిర్యాదును ఉత్పత్తి చేస్తాయి, అందుకే రీట్రై లూప్లు మరియు వాచ్డాగ్ స్క్రిప్ట్లు ఏమీ సరిచేయవు. అవి క్లయింట్ను మళ్లీ అదే ఘర్షణలో కనెక్ట్ చేస్తాయి. ఉపయోగకరమైన మొదటి ప్రశ్న ఏమిటంటే, ట్రాఫిక్ ఆగినప్పుడు ప్రక్రియ ఇంకా నడుస్తోందా అని.
ప్రతి ఇన్స్టాన్స్కు ఒక సాకెట్ మరియు ఒక పరికరం
వినిపించే సర్వర్ తన పోర్ట్ను బైండ్ చేస్తుంది; అవుట్బౌండ్ క్లయింట్ కూడా తన ఎన్క్యాప్సులేటెడ్ ట్రాఫిక్ కోసం స్థానిక పోర్ట్ అవసరం. రెండూ ఒకే హోస్ట్లో నివసించినప్పుడు, క్లయింట్ యొక్క డిఫాల్ట్ ప్రవర్తన సర్వర్ పోర్ట్తో ఢీకొనవచ్చు. క్లయింట్ స్థానిక పోర్ట్ను పిన్ చేయవచ్చు, మరియు జోడీకి స్థిరమైన మూల పోర్ట్ అవసరం లేని చోట బైండింగ్ను దాటవేయవచ్చు:
lport 1195
nobind
dev tun1ఆ సంఖ్యలు ఉదాహరణలు, అవసరం కాదు. ముఖ్యమైనది ఏమిటంటే క్లయింట్ సర్వర్ పోర్ట్ కోసం పోటీపడటం ఆపడం మరియు ప్రతి ఇన్స్టాన్స్కు ప్రత్యేక టన్నెల్ పరికరం లభించడం. tun0 పంచుకునే రెండు డీమన్లు, వాటి పోర్ట్లు భిన్నంగా ఉన్నా, ఒకదానికొకటి పరికర స్థితిని పైన రాస్తాయి, కాబట్టి ప్రతి టన్నెల్కు ఒక పరికరం ఐచ్ఛికం కాదు.
nobind క్లయింట్ వైపుకు చెందుతుంది. సర్వర్ ఇంకా బైండ్ చేసి వినిపించాలి, కాబట్టి పంక్తిని సర్వర్ కాన్ఫిగ్లోకి కాపీ చేయవద్దు, మరియు జోడీ స్థిరమైన మూల పోర్ట్పై ఫిల్టర్ చేసే క్లయింట్లో బైండింగ్ను నిలిపివేయవద్దు.
డిఫాల్ట్ రూట్ కోసం ఒక యజమానిని ఎంచుకోండి
ఒకే ఒక కనెక్షన్ మాత్రమే డిఫాల్ట్ రూట్ను ఇన్స్టాల్ చేయగలదు. రెండు ప్రొఫైల్లు మొత్తం ట్రాఫిక్ను మళ్లించినట్లయితే, రెండవ కనెక్షన్ మొదటిదాన్ని నిశ్శబ్దంగా భర్తీ చేస్తుంది, మొదటిది విరిగినట్లు కనిపిస్తుంది. ఒకటి అవుట్బౌండ్ టన్నెల్ను విభజించి ఉంచి విక్రేత ప్రిఫిక్స్లను మాత్రమే పంపండి, లేదా దానికి ప్రత్యేక రౌటింగ్ టేబుల్ ఇవ్వండి.
ip rule add from 10.9.0.2 table 120
ip route add default dev tun1 table 120
ip route get 10.9.0.2పైన ఉన్న చిరునామాలు మరియు టేబుల్ సంఖ్య ప్లేస్హోల్డర్లు. నియమాన్ని జోడించిన వెంటనే, VPN సర్వర్ స్వంత చిరునామా ఇంకా సాధారణ టేబుల్ ద్వారా పరిష్కరించబడుతుందని నిర్ధారించండి; బయటి రవాణాను పట్టుకునే టేబుల్ అది రక్షించాల్సిన టన్నెల్ను విచ్ఛిన్నం చేస్తుంది, మరియు తర్వాత వచ్చే రీకనెక్ట్ లూప్ నమ్మదగని ప్రదాతలా కనిపిస్తుంది.
రీకనెక్ట్లు మరియు రీబూట్లను తట్టుకోవాల్సిన సెటప్కు, నెట్వర్క్ నేమ్స్పేస్ మరింత దృఢమైన సరిహద్దు. రెండవ క్లయింట్ తన స్వంత నేమ్స్పేస్లో తన స్వంత ఇంటర్ఫేస్లు మరియు రూట్లతో నడుస్తుంది, మరియు సరిహద్దు దాటాల్సిన సేవలు మాత్రమే బహిర్గతమవుతాయి. హోస్ట్ ఒక డిఫాల్ట్ రూట్ను ఉంచుకుంటుంది, మరియు నేమ్స్పేస్ రీకనెక్ట్ దాన్ని తిరిగి రాయలేదు.
స్థితి పంక్తితో కాదు, టేబుల్తో ధృవీకరించండి
కనెక్ట్ అయిందని నివేదించే క్లయింట్ తన నియంత్రణ ఛానెల్ను మాత్రమే నిరూపిస్తుంది. ప్రతి కనెక్షన్కు ముందు మరియు తర్వాత రౌటింగ్ స్థితిని క్యాప్చర్ చేయండి, ఆపై నిజమైన గమ్యం ఏ పరికరాన్ని ఉపయోగిస్తుందో కెర్నల్ను అడగండి:
ip route show
ip route get 10.40.0.20
ss -lunp | grep 1194రెండవ టన్నెల్ ప్రారంభమైనప్పుడు విక్రేత చిరునామా కోసం ఎంచుకున్న పరికరం మారితే, మీకు రూట్ ఢీకొనడం ఉంది. రెండు ప్రక్రియలు ఒకే స్థానిక పోర్ట్లో కనిపిస్తే, మీకు సాకెట్ ఢీకొనడం ఉంది. రెండవది లేకుండా మొదటిదాన్ని సరిచేయడం వైఫల్యాన్ని తదుపరి రీకనెక్ట్కు కదిలిస్తుంది.
పోర్ట్లు, పరికరాలు, టేబుల్లు మరియు రూట్ యజమానిని హోస్ట్ రన్బుక్లో రాయండి. లేకపోతే మూడవ టన్నెల్ను జోడించే తదుపరి వ్యక్తి అదే ఢీకొనడాన్ని మళ్లీ కనుగొంటారు, మరియు కనిపించే ఏకైక సాక్ష్యం మరొకరి డీమన్ పునఃప్రారంభమయ్యే వరకు పనిచేసే కనెక్షన్ మాత్రమే.