మీ టన్నెల్ పైకి వస్తుంది, క్లయింట్ కనెక్ట్ అవుతుంది, కానీ స్థిర చిరునామా మరియు ఆ ఒక వినియోగదారు కోసం మీరు నిర్వచించిన పుష్ చేసిన మార్గాలు లేవు. లాగ్‌లో “file not found” అని లేదు, అదే ప్రజలను సర్టిఫికెట్లను మళ్లీ సృష్టించడానికి పంపుతుంది. ఇలాంటి చాలా సందర్భాలలో డీమన్ మీరు పరీక్షించిన షెల్ కంటే వేరే డైరెక్టరీ నుండి నడుస్తుంది, మరియు client-config-dir మీరు ఊహించిన విధంగా ఎప్పుడూ పరిష్కరించబడలేదు. సరిదిద్దడం మార్గ సవరణ, ఆధారాలు రీసెట్ చేయడం కాదు.

కాన్ఫిగరేషన్ తాకే ముందు యూనిట్ చదవండి

మీరు సవరించిన ఫైల్ నుండి కాదు, నిజంగా నడుస్తున్న ప్రక్రియ నుండి ప్రారంభించండి. systemd ను అమలు లైన్, పని డైరెక్టరీ మరియు అది దిగే ఖాతా గురించి అడగండి. ఆ మూడు సమాధానాలు ఈ విభాగంలోని చాలా వైఫల్యాలను వివరిస్తాయి:

systemctl show openvpn-server@server -p ExecStart -p WorkingDirectory -p User -p RootDirectory

ఖాళీ WorkingDirectory అంటే యూనిట్ / లో ప్రారంభమవుతుంది, కాబట్టి సాపేక్ష client-config-dir ccd /ccd లో వెతకబడుతుంది. ఆ డైరెక్టరీ దాదాపు ఎప్పుడూ ఉండదు, డీమన్ దాని లేమిని ప్రాణాంతకంగా పరిగణించదు.

దీన్ని పరీక్ష సమయంలో మీరు ఉపయోగించిన ఇంటరాక్టివ్ ప్రారంభంతో పోల్చండి, అక్కడ మీ షెల్ యొక్క ప్రస్తుత డైరెక్టరీ బహుశా కాన్ఫిగరేషన్ డైరెక్టరీగా ఉంది. అదే ఫైల్, అదే కీవర్డ్‌లు, రెండు వేర్వేరు ఫలితాలు.

సాపేక్ష మార్గం దేని ఆధారంగా పరిష్కరించబడుతుంది

ఎంపిక ఉపయోగించిన క్షణంలో ప్రక్రియ యొక్క పని డైరెక్టరీ ఆధారంగా కీవర్డ్ పరిష్కరించబడుతుంది. దీని అర్థం “నేను --config తో పంపిన కాన్ఫిగరేషన్ ఫైల్ పక్కన” అని కాదు. OpenVPN సంపూర్ణ మార్గం నుండి కాన్ఫిగరేషన్‌ను సంతోషంగా చదువుతుంది మరియు సాపేక్ష విలువలను ఇంకా వేరే చోట పరిష్కరిస్తుంది, ఇక్కడ ఉన్న ఉచ్చు అదే. OpenVPN 2.6 మాన్యువల్ నియమాన్ని --client-config-dir కింద మరియు మళ్లీ --cd కింద తెలుపుతుంది.

cd కీవర్డ్ ఇతర ఫైల్‌లు చదవబడే ముందు ఆ సందర్భాన్ని మారుస్తుంది, కాబట్టి cd /etc/openvpn/server సెట్ చేసి ఆపై client-config-dir ccd పెట్టే యూనిట్ /etc/openvpn/server/ccd గా పరిష్కరించబడుతుంది. మీరు cd జోడిస్తే, ఆదేశాల క్రమాన్ని తనిఖీ చేయండి మరియు అది అదే ఫైల్‌లోని ప్రతి ఇతర సాపేక్ష సూచనను ప్రభావితం చేస్తుందని గుర్తుంచుకోండి.

మార్గాన్ని డీమన్ ఖాతాగా నడవండి

మార్గం సరైనదైనా చదవలేకపోవచ్చు. అధికారాలు తగ్గిన తర్వాత డీమన్ ఇక root కాదు, కాబట్టి ప్రతి మాతృ డైరెక్టరీకి ఆ ఖాతా కోసం శోధన అనుమతి అవసరం, క్లయింట్ ఫైల్‌కు చదవడం అనుమతి అవసరం. మాతృ డైరెక్టరీలో ఒక ఎగ్జిక్యూట్ బిట్ లేకపోయినా ఫైల్ దాగుతుంది, లోపం నిశ్శబ్దంగా డిఫాల్ట్ పూల్ పొందే క్లయింట్‌గా మాత్రమే కనిపిస్తుంది.

namei ప్రతి భాగం యొక్క అనుమతిని క్రమంగా ముద్రిస్తుంది, ఇది డైరెక్టరీలను ఒక్కొక్కటిగా తనిఖీ చేయడం కంటే వేగవంతం:

namei -l /etc/openvpn/server/ccd/client1

తర్వాత చదవడాన్ని మీరుగా కాకుండా సేవా ఖాతాగా పరీక్షించండి:

runuser -u openvpn -- test -r /etc/openvpn/server/ccd/client1 && echo readable

యూనిట్ chroot ఉపయోగిస్తే, డైరెక్టరీ జైలు లోపల ఉండాలి, కాన్ఫిగరేషన్‌లోని మార్గం chroot వర్తించిన తర్వాత అర్థం చేసుకోబడుతుంది. జైలు వెలుపల హోస్ట్‌లో ఉన్న ఫైల్ లోపలి నుండి కనిపించదు.

ఊహించకుండా శోధనను నిర్ధారించండి

ఒక రీస్టార్ట్ కోసం లాగ్ స్థాయిని పెంచి, క్లయింట్-నిర్దిష్ట ఎంపికల గురించి సర్వర్ ఏమి చెబుతుందో చదవండి. verb 4 వద్ద డీమన్ దిగుమతి చేసిన ప్రతి క్లయింట్ కాన్ఫిగరేషన్‌ను నివేదిస్తుంది, కాబట్టి లేని లైన్ ఆ కనెక్షన్ కోసం ఏ ఫైల్ చదవబడలేదని నేరుగా రుజువు.

openvpn --config /etc/openvpn/server.conf --verb 4 --client-config-dir /etc/openvpn/server/ccd

దాన్ని ఒక ఖాళీ పోర్ట్‌లో ముందు నడిపి ఒక క్లయింట్‌ను కనెక్ట్ చేయండి. ఇది systemd ను చిత్రం నుండి పూర్తిగా తొలగిస్తుంది: ఓవర్‌రైడ్‌లు ఇక్కడ కనిపించి సేవ కింద కనిపించకపోతే, తేడా ఫైల్‌లో కాదు, యూనిట్ సందర్భంలో ఉంది.

ఏ ఫైల్ సరిపోలకపోతే ఏమి జరగాలో నిర్ణయించండి. ccd-exclusive లేకుండా క్లయింట్ ప్రపంచ పూల్ సెట్టింగ్‌లతో మాత్రమే అంగీకరించబడుతుంది, అదే పైన వివరించిన నిశ్శబ్ద వైఫల్యం. దానితో లేని ఫైల్ తిరస్కరించిన కనెక్షన్ అవుతుంది, ఆ తిరస్కరణను గమనించడం సులభం కానీ భారం కింద డీబగ్ చేయడం కష్టం.

సరిదిద్దండి, రీస్టార్ట్ చేయండి, ధృవీకరించండి

కాన్ఫిగరేషన్‌లో డైరెక్టరీని సంపూర్ణంగా చేసి అలాగే ఉంచండి. సాపేక్ష మార్గాలు యూనిట్ పని డైరెక్టరీని పిన్ చేసినప్పుడు మాత్రమే సురక్షితం, పిన్ చేయడం తర్వాత ఎవరో తీసేసే అదనపు కదిలే భాగం.

client-config-dir /etc/openvpn/server/ccd
ccd-exclusive

ఇన్‌స్టాన్స్‌ను రీస్టార్ట్ చేయండి, తెలిసిన ఒక క్లయింట్‌ను మళ్లీ కనెక్ట్ చేయండి మరియు అది పొందిన చిరునామాను దాని వైపు పుష్ చేసిన మార్గాలతో పాటు చదవండి. చిరునామా ఆ క్లయింట్ ఫైల్‌లోని ifconfig-push లైన్‌తో సరిపోలితే, శోధన పని చేసింది. క్లయింట్ ఇంకా సాధారణ పూల్‌లో పడితే, లాగ్ లైన్ల లెక్కకు తిరిగి వెళ్లండి: సున్నా దిగుమతి అంటే మార్గం లేదా గుర్తింపు తప్పు, తప్పు కంటెంట్‌తో ఒక దిగుమతి అంటే డీమన్ చదివే దానికంటే వేరే ఫైల్‌ను మీరు సవరిస్తున్నారు.

మునుపటి యూనిట్ మరియు కాన్ఫిగరేషన్‌ను కలిసి పునరుద్ధరించి వెనక్కి వెళ్లండి, తర్వాత రీస్టార్ట్ చేయండి. వీటిలో దేనికీ సర్టిఫికెట్లను మళ్లీ జారీ చేయాల్సిన అవసరం లేదు, డైరెక్టరీ సమస్యను ఆధారాల సమస్యగా చూడటమే ఐదు నిమిషాల సరిదిద్దడాన్ని నిర్వహణ విండోగా మార్చే మార్గం.

సంబంధిత వ్యాసాలు