బహుళ స్క్రిప్ట్ హెచ్చరిక షెడ్యూలింగ్ ఫిర్యాదులా వినిపిస్తుంది, కాబట్టి స్పష్టమైన పరిష్కారం అది మాయమయ్యే వరకు పంక్తులను పునర్వ్యవస్థీకరించడం. కానీ ఇది షెడ్యూలింగ్ ఫిర్యాదు కాదు. తర్వాతి --up నిర్వచనం ఆ దశ కోసం ఇప్పటికే నిల్వ చేయబడిన ఆదేశాన్ని భర్తీ చేస్తుంది, మరియు పార్సర్ అలాగే చెబుతుంది, అంటే మీ రెండు స్క్రిప్ట్లలో సరిగ్గా ఒకటి మాత్రమే ఎప్పుడైనా నడిచింది. మరొకటి దాని వెనుక క్యూలో లేదు; అది పోయింది.

అందుకే ఈ హెచ్చరిక ప్రాణాంతకం కాకపోయినా గమనించదగినది: ఇది ముందుగా చెప్పేది నిశ్శబ్దంగా జరగడం ఆగిపోయిన DNS నవీకరణ లేదా మార్గ మార్పు.

హెచ్చరిక క్రమం గురించి కాదు

OpenVPN up దశ కోసం ఒకే వినియోగదారు స్క్రిప్ట్ ఆదేశాన్ని ఉంచుతుంది. పార్సర్ మరో నిర్వచనాన్ని ఎదుర్కొన్నప్పుడు, ప్రొఫైల్ నుండి, చేర్చిన ఫైల్ నుండి లేదా కమాండ్ లైన్ నుండి, ఇప్పటికే ఉన్నదాన్ని భర్తీ చేసి హెచ్చరికను జారీ చేస్తుంది. ఏదీ కలపబడదు, ఏదీ రెండుసార్లు నడవదు, మరియు క్రమం గురించిన ప్రశ్న లేదు. మిగిలే ఆదేశం పార్సర్ చివరగా చూసినది, అందుకే పంక్తిని కదిలించడం విజేతను మార్చవచ్చు, మరో స్క్రిప్ట్ మాత్రం చనిపోయినట్లే ఉంటుంది.

అదే నమూనా మిగిలిన స్క్రిప్ట్ దశలకూ వర్తిస్తుంది: ప్రతిదానికీ ఒక ఆదేశం. రెండు పనులు రెండూ జరగాలంటే, జాబితాలా కనిపించే రెండు సూచనలు కాదు, ఒకే ప్రవేశ బిందువు కావాలి.

నిజమైన ప్రారంభంలో రెండు నిర్వచనాలను కనుగొనండి

మీరు సవరించిన ప్రొఫైల్ నుండి కాదు, డీమన్ నిజంగా పొందిన దాని నుండి ప్రారంభించండి. ps -ef మరియు యూనిట్ యొక్క ExecStart కమాండ్ లైన్ను చూపుతాయి, దానికి కంటైనర్ ప్రవేశ బిందువు లేదా ర్యాపర్ నుండి --up జోడించబడవచ్చు; పంపిణీ init ఫైల్ కూడా అలాగే చేయగలదు. systemctl cat openvpn-server@server సేవ తానే ఏమి జోడిస్తుందో వెల్లడిస్తుంది, మరియు కాన్ఫిగరేషన్ డైరెక్టరీపై పునరావృత grep ఫైల్ స్థాయి నిర్వచనాలను కనుగొంటుంది. నకళ్లు సాధారణంగా వేర్వేరు పొరల నుండి వస్తాయి, అందుకే ఒక ఫైల్ సవరించడం ఏమీ మార్చదు.

స్క్రిప్ట్ను మరో డైరెక్టరీకి కాపీ చేయడం లేదా పేరు మార్చడం కూడా సూచనను తొలగించదు. పార్సర్ ఫైళ్లను కాదు, నిర్వచనాలను లెక్కిస్తుంది.

ఒకే hook పనిని సొంతం చేసుకోనివ్వండి

శాశ్వత పరిష్కారం రెండు చర్యలను ఉద్దేశపూర్వక క్రమంలో నడిపే ఒకే పంపినవాడు. set -eu కలిగిన చిన్న shell స్క్రిప్ట్ అవసరమైన ఇంటిగ్రేషన్ను, తర్వాత స్థానిక చర్యను పిలిచి, ఆర్గ్యుమెంట్ సరిహద్దులు నిలిచేలా "$@" పంపుతుంది; దీనితో ప్రవర్తన ఒకే పరిశీలించదగిన చోట ఉంటుంది. ఆర్గ్యుమెంట్లను పంపడం వాటిని కాపాడుతుంది మాత్రమే; రెండు సహాయకులు ఒకే ఇంటర్ఫేస్ను ఆశిస్తున్నారని అది నిరూపించదు, కాబట్టి ప్రతిదాని ఒప్పందాన్ని చదవండి. వైఫల్యం ఏమి చేయాలి, పాక్షిక మార్పులు తిరిగి తీసుకోవాలా అని నిర్ణయించండి.

ప్రారంభకుడు మద్దతు ఉన్న పొడిగింపు hook ఇచ్చినట్లయితే, చేతితో కట్టిన గొలుసు కంటే దానిని ఇష్టపడండి. కంటైనర్ ఇమేజ్ లేదా విక్రేత ప్యాకేజీలో అదనపు పని కోసం నమోదు చేసిన స్థలం ఉంటుంది, దాన్ని ఉపయోగించడం అప్గ్రేడ్ మీ పంపినవాడిని పైన రాయకుండా నిరోధిస్తుంది.

శుభ్రపరచడం సంబంధిత down దశకు చెందుతుంది. DNS ను తిరిగి రాసే లేదా మార్గాలను జోడించే up చర్యకు నమోదు చేసిన తిరిగి చేయడం అవసరం, మరియు ప్రారంభాన్ని మాత్రమే నిర్వహించే పంపినవాడు సగం రూపకల్పన.

నిశ్శబ్దాన్ని మాత్రమే కాదు, ఇంటిగ్రేషన్ను నిర్ధారించండి

నకలు హెచ్చరికను తొలగించడం సులభమైన భాగం; ఇంటిగ్రేషన్ ఇంకా పని చేయాలి. కనెక్ట్ అయిన తర్వాత resolvectl status ద్వారా లేదా /etc/resolv.conf చదవడం ద్వారా రిజాల్వర్ స్థితిని తనిఖీ చేయండి, మరియు ip route ద్వారా మార్గాలను నిర్ధారించండి. ఆపై డిస్కనెక్ట్ చేసి మళ్లీ కనెక్ట్ అవ్వండి, ఎందుకంటే తొందరగా కలిపిన hook మునుపటి సెషన్ నుండి ఏదో మిగిలిస్తుంది. journalctl -u openvpn-server@server -b మీ పంపినవాడు నడిచిందా, ఏమి ముద్రించిందో చూపుతుంది.

hook యొక్క ప్రత్యేక హక్కులను ఉండవలసిన చోటే ఉంచండి. script-security పెంచడం లేదా డీమన్ను ఎక్కువ హక్కులతో నడపడం భర్తీ చేయబడిన hook కు పరిష్కారం కాదు; ఇది భవిష్యత్తులోని ప్రతి స్క్రిప్ట్, దాడి చేసేవాడు పేరు పెట్టే స్క్రిప్ట్ కూడా ఏమి చేయగలదో విస్తరిస్తుంది.

పరిష్కారం నిజమైనదనడానికి సంకేతం లాగ్లో నిశ్శబ్దం కాదు. DNS సమాధానం, మార్గ నమోదు మరియు శుభ్రపరచడం — రెండు పునఃకనెక్షన్ల తర్వాత అన్నీ సరిగ్గా నడవడమే.

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