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

మొదట సంఘటనను నిర్ణయించండి, తర్వాత పనిని ఆలస్యం చేసే విధానం, తర్వాత ఆలస్యమైన పని నడిచే స్థలం. ఈ మూడు నిర్ణయాలు స్వతంత్రమైనవి, వాటిని కలపడమే రెండు పంక్తుల హుక్ను పూర్తి మధ్యాహ్నంగా మార్చే మార్గం.

హుక్ తనను ఎదురుచూస్తున్న సొరంగం కోసం ఎందుకు ఎదురుచూస్తుంది

OpenVPN తన హుక్లను సమకాలీకంగా పిలుస్తుంది, ప్యాకెట్లను కదిలించే అదే ప్రక్రియలో. tun లేదా tap పరికరం ఉన్నప్పుడు కానీ ఏ మార్గం జోడించబడక ముందు up ప్రేరేపించబడుతుంది, మార్గాల తర్వాత route-up ప్రేరేపించబడుతుంది; ఆ రెండు క్షణాలలో ఏదీ ప్రత్యర్థి సమాధానం ఇస్తుందని హామీ ఇవ్వదు. ఏ హుక్ స్క్రిప్ట్ నడుస్తున్నప్పటికీ డీమన్ ఫార్వార్డ్ చేయదు, కాబట్టి సొరంగం గుండా ట్రాఫిక్ వెళ్తుందని ఆశించే ఆదేశం ఆ ఆదేశం కోసం ఎదురుచూస్తున్న సొరంగం కోసం ఎదురుచూస్తుంది. ఈ వృత్తాకార నిరీక్షణే చేతితో నడిపినప్పుడు విజయవంతం కావడానికి, హుక్ సమయం ముగియడానికి కారణం.

స్పష్టమైన పరిష్కారం, అంటే కొన్ని సెకన్లు నిద్రించడం, కొన్నిసార్లు పని చేస్తుంది ఎందుకంటే దూరపు చివర తనంతట తానే పైకి వచ్చింది, నిద్ర ఏదో సరిచేసినందుకు కాదు. సంసిద్ధతను అడిగే సహాయకుడు మరో సమాధానం: హుక్ తిరిగి వస్తుంది, ఫార్వార్డింగ్ ప్రారంభమవుతుంది, సహాయకుడు కావలసినది అది నిజంగా ఉన్నప్పుడు పొందుతాడు.

సౌలభ్యం ప్రకారం కాదు, సంఘటన ప్రకారం హుక్ను ఎంచుకోండి

పరికరం మాత్రమే అవసరమయ్యే పనికి up కలపండి, మార్గాలు అవసరమయ్యే పనికి route-up, మరియు client-connect, client-disconnect లను సర్వర్ వైపు ప్రతి క్లయింట్ పనుల కోసం ఉంచండి. డిస్కనెక్ట్లో శుభ్రపరచడం రెండుసార్లు నడవడాన్ని తట్టుకోవాలి, ఎందుకంటే శాశ్వత ఇంటర్ఫేస్ ద్వారా తిరిగి కనెక్ట్ అవ్వడం పూర్తి పునఃప్రారంభం వలె అదే క్రమాన్ని అనుసరించదు. సర్వర్లో, డీమన్ ప్రారంభమైనప్పుడు కాదు, క్లయింట్ ప్రమాణీకరించబడినప్పుడు client-connect ప్రేరేపించబడుతుంది, దాన్ని అక్కడికి లాజిక్ తరలించే ముందు నిర్ధారించుకోవడం విలువైనది. పని ఒకే కనెక్షన్ కాకుండా సేవ జీవిత చక్రానికి చెందినదైతే, systemd యూనిట్ ఏ హుక్ కంటే మంచి ఇల్లు.

హుక్ ఆదేశాలను డీమన్ నేరుగా నిర్వహిస్తుంది, మధ్యలో షెల్ లేకుండా, కాబట్టి up పంక్తిలోని ifconfig_remote అక్షరార్థ పాఠ్యంగా వస్తుంది. ఆదేశాన్ని స్పష్టమైన షెల్లో చుట్టండి, లేదా లాజిక్ను పరిసరాన్ని చదివే స్క్రిప్ట్లో ఉంచండి. ipchange తన స్వంత ఆర్గ్యుమెంట్లను జోడించే ఒక ఆదేశం: అది ఆదేశానికి చిరునామా మరియు పోర్టును ఇస్తుంది, కాబట్టి ఏదీ లేని కోసం రాయబడిన స్క్రిప్ట్ ఊహించని రెండింటిని చూస్తుంది.

పనిని వేరు చేయడానికి మూడు మార్గాలు

మొదటి ఎంపిక హుక్ లోపలి నుండి సహాయకుడిని నేపథ్యానికి పంపడం: setsid లేదా systemd-run --scope తో ప్రారంభించి, వారసత్వంగా వచ్చిన వివరణకర్తలను మూసివేసి, వెంటనే సున్నాతో బయటకు రండి. రెండోది హుక్ చిన్న స్థితి ఫైల్ను రాసి systemd టైమర్ లేదా పాత్ యూనిట్ దానిపై పని చేయడానికి అనుమతించడం, ఇది హుక్ను సాధారణంగా ఉంచి పునఃప్రయత్న విధానాన్ని లాగ్లు ఉన్న చోట ఉంచుతుంది. మూడోది హుక్ను పూర్తిగా వదిలి పనిని VPN సేవ తర్వాత క్రమబద్ధీకరించిన యూనిట్కు తరలించడం, పని అసలు ప్రతి-కనెక్షన్ కాకపోతే ఇదే సరైన సమాధానం. మూడూ ఒక నియమాన్ని పంచుకుంటాయి: సొరంగం అవసరం కాకముందే హుక్ తిరిగి రావాలి.

ఏది ఎంచుకున్నా, సహాయకుడిని ఇడెంపోటెంట్ మరియు గమనించదగినదిగా చేయండి. రెండు అతివ్యాప్తి చెందే పిలుపులు ఒకే తిరిగి మార్చలేని చర్యను రెండుసార్లు నిర్వహించకూడదు, మరియు విఫలమయ్యే సహాయకుడు మనిషి చదవగలిగేది వదిలి పోవాలి.

శాండ్బాక్స్ వైఫల్యాలను జీవిత చక్ర వైఫల్యాల నుండి వేరు చేయండి

స్క్రిప్ట్ root ప్రాంప్ట్ నుండి నడిచి సేవగా విఫలమైనప్పుడు, కారణం సాధారణంగా నెట్వర్క్ కాదు, శాండ్బాక్స్. నిర్బంధించే ProtectHome, చదవడానికి-మాత్రమే ProtectSystem, లేదా లేని పని డైరెక్టరీ స్క్రిప్ట్ను లేదా దాని డేటాను చేరుకోలేనిదిగా చేయగలవు, మరియు SELinux హోస్ట్లో ఫైల్కు అమలు అనుమతించే సందర్భం కూడా అవసరం. systemctl cat openvpn-server@server తో యూనిట్ను, journalctl -u openvpn-server@server -n 80 తో జర్నల్ను చదవండి, తర్వాత కనెక్షన్ సమయం ముగియడం కాకుండా అనుమతి లేదా సందర్భ లోపం కోసం వెతకండి. శాండ్బాక్స్ను నిలిపివేయడం మొదటి కాదు, చివరి చర్యగా ఉండాలి.

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

మూడు ఫీల్డ్లు తదుపరి నివేదికను ఉపయోగకరంగా చేస్తాయి: ఏ హుక్ నడిచింది, ఏ ఖాతా ఉపయోగించారు, ఎక్కడ ఆగింది. అవి లేకుండా ప్రతి తదుపరి దర్యాప్తు మొదటి నుండి ప్రారంభమవుతుంది.

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