systemd VPN సేవను ఆపుతుంది: Type= ను క్లయింట్తో సరిపోల్చండి
బూట్ సమయంలో నడిచే VPN యూనిట్ Type= క్లయింట్ ఆయుష్షుతో సరిపోలనప్పుడు నిష్క్రియమవుతుంది. రకాన్ని సరిపోల్చి, యాజమాన్యాన్ని సరిచేసి, సేవను టన్నెల్ తర్వాత ఉంచండి.
యూనిట్లు సరిగ్గా కనిపించవచ్చు, systemctl start విజయాన్ని నివేదించవచ్చు, పది సెకన్ల తర్వాత సేవ నిష్క్రియంగా ఉంటుంది. లేదా స్టార్ట్ పరిమితి ఆపే వరకు ప్రతి అర్ధ నిమిషానికి మళ్లీ ప్రారంభమవుతుంది. ఈ రెండు ప్రవర్తనలూ నెట్వర్క్ లోపం కాదు: యూనిట్ క్లయింట్ నిజంగా చేసే పనికి సరిపోలని ప్రక్రియ ఆయుష్షును వివరిస్తుంది. క్లయింట్ ఫోర్క్ చేసి బయటకు వెళ్లవచ్చు, లేదా సెషన్ను కాన్ఫిగర్ చేసి వెంటనే బయటకు వెళ్లవచ్చు.
విజయవంతమైన ప్రారంభం తర్వాత కొన్ని సెకన్లలో యూనిట్ ఎందుకు నిష్క్రియమవుతుంది
systemd తాను ప్రారంభించిన ప్రక్రియ నుండి స్థితిని ఊహిస్తుంది, కాబట్టి Type= ఆ ప్రక్రియ గురించిన వాదన, పత్రం కాదు. Type=simple తో ఆదేశం నడుస్తున్నంతసేపు యూనిట్ క్రియాశీలంగా లెక్కించబడుతుంది, అది తిరిగి వచ్చినప్పుడు నిష్క్రియమవుతుంది. అందువల్ల కనెక్షన్ను సహాయకుడికి అప్పగించి బయటకు వెళ్లే క్లయింట్ టన్నెల్ నడుస్తున్నా క్రాష్లా కనిపిస్తుంది. తర్వాత జర్నల్ ప్రారంభం మరియు ఆపడం నమూనాను చూపుతుంది, అది పాడైన బైనరీలా చదవబడుతుంది.
నెట్వర్క్ కాన్ఫిగరేషన్ను తాకే ముందు క్లయింట్ ప్రవర్తన పక్కన యూనిట్ రకాన్ని చదవండి.
క్లయింట్తో సరిపోలే రకాన్ని ఎంచుకోండి
రెండు నమూనాలు చాలా విక్రేత CLIలను కవర్ చేస్తాయి: సెషన్ను కాన్ఫిగర్ చేసి బయటకు వెళ్లే ఆదేశం, మరియు తిరిగి రాకముందు సహాయకుడిని ఫోర్క్ చేసే ఆదేశం. ప్రతిదానికీ వేరే యూనిట్ రూపం కావాలి.
[Service]
Type=oneshot
RemainAfterExit=true
ExecStart=/usr/bin/protonvpn-cli connect -f
ExecStop=/usr/bin/protonvpn-cli disconnectoneshot మరియు RemainAfterExit=true కలిసి ఆదేశం తిరిగి వచ్చిన తర్వాత కూడా యూనిట్ను క్రియాశీలంగా ఉంచుతాయి, ఇది కాన్ఫిగర్ చేసి బయటకు వెళ్లు నమూనాకు సరిపోతుంది, ఆపే ఆదేశం సేవకు శుభ్రమైన ముగింపునిస్తుంది. ఫోర్క్ చేసే క్లయింట్ అదే రూపాన్ని ఉంచుకుంటుంది కానీ systemd సంతానాన్ని అనుసరించడానికి Type=forking కావాలి. Restart=on-failure, RestartSec=30 మరియు పరిమిత StartLimitBurst సెట్ చేయండి, ప్రదాత అంతరాయం లోపాన్ని పాతిపెట్టే రీస్టార్ట్ లూప్గా మారకుండా.
పర్యవేక్షణలో ఉన్న క్లయింట్ డెమన్ కాకుండా ఎప్పుడూ అనుమతించవద్దు
systemd బయటి పర్యవేక్షకులు అదే గోడను ఢీకొంటారు. డెమన్ అయిన క్లయింట్ను ప్రారంభించే runit రన్ స్క్రిప్ట్ వెంటనే పర్యవేక్షకుడి వద్దకు తిరిగి వస్తుంది, అతను ఆ తిరిగి రావడాన్ని క్రాష్గా చదివి మరో కాపీని ప్రారంభిస్తాడు. ప్రతి పర్యవేక్షకుడూ ముందు ప్రక్రియ యాజమాన్యాన్ని ఆశిస్తాడు, sshd -D ముందు ఉండే విధంగా. పర్యవేక్షణలో ఉన్న ఆదేశాలకు డెమన్ జెండాను తీసివేసి, నేపథ్య పనిని పర్యవేక్షకుడికి వదిలేయండి. టన్నెల్ ఏర్పడకముందే తిరిగి వచ్చే చుట్టు స్క్రిప్టులు కూడా అదే గందరగోళాన్ని కలిగిస్తాయి.
తనను తాను వేరు చేసుకునే ప్రక్రియ దానిని గమనించాల్సిన అన్నింటికీ కనిపించదు.
సెషన్ ముగుస్తుంది మరియు టన్నెల్ను తనతో తీసుకెళ్తుంది
డెస్క్టాప్ సెషన్ తాను ప్రారంభించే క్లయింట్ను కలిగి ఉంటుంది. లాగిన్ ముగించండి, సెషన్ బస్ మాయమై టన్నెల్ను కూడా తీసుకెళ్తుంది, చివరి విండో మూసినప్పుడు గ్రాఫికల్ క్లయింట్ కనెక్షన్ తరచుగా తెగిపోవడానికి ఇదే కారణం. సర్వర్లు తమంతట తాము పైకి వచ్చే సిస్టమ్ యూనిట్ లేదా NetworkManager ప్రొఫైల్ను ఉపయోగించాలి. యూజర్ యూనిట్ టన్నెల్ లాగిన్తో ముగియాల్సి ఉన్నప్పుడే అర్థవంతం, కాబట్టి దాన్ని గ్రాఫికల్ సెషన్ లక్ష్యానికి కట్టి దాన్ని వివరణలో పేర్కొనండి.
సేవ వినియోగదారు అదే సమస్యలో మరో సగం. root యాజమాన్యంలోని మరియు మోడ్ 0600 ఉన్న కీ మరో ఖాతాలో నడిచే యూనిట్కు చదవలేనిది, మీ షెల్లో sudo ఏం సాధించినా.
systemctl cat openvpn-server@work
sudo chown -R openvpn:network /etc/openvpn/server
sudo find /etc/openvpn -type f -perm /077 -lsచిరునామా ఏర్పడిన తర్వాత ఆధారితాలను క్రమబద్ధం చేయండి
ఇంకా సృష్టించని టన్నెల్ చిరునామాకు డెమన్ కట్టుబడినప్పుడు, అది Cannot assign requested address తో బయటకు వెళ్తుంది. పరిష్కారం మళ్లీ ప్రయత్నాల లూప్ కాదు, స్పష్టమైన క్రమబద్ధీకరణ.
[Unit]
After=network.target [email protected]
Requires=sys-devices-virtual-net-wg0.deviceAfter= పనులను క్రమబద్ధం చేస్తుంది, పరికర యూనిట్పై Requires= ఆధారితాన్ని ఇంటర్ఫేస్ ఉనికికి కడతుంది, ఇది నెట్వర్క్ లక్ష్యం కోసం మాత్రమే ఎదురుచూడటం కంటే బలమైనది. మార్పు తర్వాత మేనేజర్ను మళ్లీ లోడ్ చేసి ఆధారిత సేవను మళ్లీ ప్రారంభించండి, తర్వాత క్రమం పనిచేసిందని ఊహించకుండా దాని జర్నల్ చదవండి. క్లయింట్ అవుట్పుట్ను StandardOutput=journal లేదా లాగ్ ఎంపికతో జర్నల్కు పంపండి, ఎందుకంటే ఎవరూ తెరవని ఫైల్లో రాసే పర్యవేక్షణలో ఉన్న క్లయింట్ ఎప్పుడూ ప్రారంభం కాని దానిలా కనిపిస్తుంది.
తర్వాత ఒకసారి రీబూట్ చేసి, టన్నెల్ పరికరం కనిపించిన తర్వాత యూనిట్ క్రియాశీలంగా ఉందని నిర్ధారించండి. systemctl start తో మాత్రమే ధృవీకరించిన సరిదిద్దుడు సరిచేయాల్సిన బూట్ క్రమాన్ని పరీక్షించలేదు.