సొరంగం ఆగిపోయింది, కానీ యంత్రం ఇప్పటికీ అది నడుస్తున్నట్టే ప్రవర్తిస్తుంది: ఒక lookup టైమౌట్ అయ్యే వరకు వేలాడుతుంది, మరియు ఒక మార్గం ఇప్పుడు లేని ఇంటర్ఫేస్ వైపు చూపుతుంది. ఇది తన డిస్కనెక్ట్ సహాయకుడిని అమలు చేయకుండా చనిపోయిన openconnect ప్రక్రియ యొక్క సంతకం. అది సృష్టించిన నెట్వర్క్ స్థితి ఇప్పటికీ ఇన్స్టాల్ చేయబడి ఉంది, మరియు సిస్టమ్లో మరేదీ దాన్ని ఎలా తొలగించాలో తెలియదు.

స్థితి సృష్టించబడిన క్రమంలో యంత్రం గుండా వెళ్లండి: ప్రక్రియ, లింక్, మార్గం, resolver. ప్రతి దశ క్లయింట్ నిజంగా వెళ్లిపోయిందో లేక మీ టెర్మినల్ నుండి వేరుపడిందో మాత్రమే అని చెబుతుంది, మరియు ఆ వ్యత్యాసమే ఏదైనా సరిచేయాలా వద్దా అని నిర్ణయిస్తుంది.

ప్రక్రియతో ప్రారంభించండి, కాన్ఫిగరేషన్తో కాదు

మార్గాన్ని తాకడానికి ముందు టెర్మినల్ తెరిచి ఇంకా ఏమి నడుస్తోందో అడగండి. pgrep -a openconnect ప్రతి ఇన్స్టాన్స్ను దాని ఆర్గ్యుమెంట్లతో జాబితా చేస్తుంది, ఇది pid ఫైల్ మరియు దానికి ఇచ్చిన స్క్రిప్ట్ను చూపుతుంది. మీరు ఊహించని ప్రక్రియ ఫాంటమ్ సొరంగాన్ని ఏ లాగ్ కంటే వేగంగా వివరిస్తుంది.

ఏమీ నడుస్తూ లేకపోతే, లింక్ చూడండి. ip link show tun0 ఇంటర్ఫేస్ బతికిందో లేదో చెబుతుంది, మరియు ip route show dev tun0 ఇంకా దానికి కట్టుబడి ఉన్న మార్గాలను జాబితా చేస్తుంది. తర్వాత resolverను దీనితో తనిఖీ చేయండి resolvectl status. మార్చడానికి ముందు మూడు అవుట్పుట్లను రాయండి, ఎందుకంటే ఆ రికార్డే తర్వాత పాత ఎంట్రీని కొత్త దాని నుండి వేరు చేసే మార్గం.

వెళ్లిపోయిన ఇంటర్ఫేస్ సాధారణంగా తన మార్గాలను తనతో తీసుకువెళుతుంది. లింక్ తర్వాత మిగిలే మార్గాలు సాధారణంగా ప్రక్రియ ఇంకా సజీవంగా ఉంది లేదా రెండవ క్లయింట్ పరికరాన్ని కలిగి ఉంది అని అర్థం.

మార్పులను వెనక్కి తిప్పేది సహాయక స్క్రిప్టే

openconnect ఇంటర్ఫేస్, మార్గాలు లేదా resolver ఎంట్రీలను తానే తొలగించదు. అది బాహ్య సహాయకుడిని పిలుస్తుంది, /etc/vpnc/vpnc-script upstream build లో మరియు /usr/share/vpnc-scripts/vpnc-script Debian మరియు Ubuntu ప్యాకేజీలలో, మరియు ఎంపిక చేయబడుతుంది -s ద్వారా. సొరంగాన్ని లేపే అదే స్క్రిప్ట్ దాన్ని విరగ్గొడుతుంది.

ప్రక్రియ ఆ సహాయకుడిని పిలవకుండా నిష్క్రమిస్తే, స్థితి మిగిలిపోతుంది. OpenConnect మాన్యువల్ స్క్రిప్ట్ లేకుండా రూటింగ్ మరియు పేరు సేవ సరిగ్గా పనిచేయవు అని స్పష్టంగా చెబుతుంది, మరియు నిష్క్రమించేటప్పుడు ఇంటర్ఫేస్ స్థితిని విరగ్గొట్టే భాగంగా సహాయకుడిని వివరిస్తుంది. అందుకే క్లయింట్ను -s తో ప్రారంభించేటప్పుడు మార్గం ముఖ్యం.

ఆ మార్గానికి ఏ సిగ్నల్ చేరుతుందో అనేది వెర్షన్ల మధ్య మారింది. 7.06 మాన్యువల్ SIGTERMను స్క్రిప్ట్ను దాటవేసే తక్షణ నిష్క్రమణగా పరిగణిస్తుంది. ప్రస్తుత build INT మరియు TERMను సెషన్ లాగ్ అవుట్ అయ్యి సహాయకుడు నడిచే శుభ్రమైన ఆపుగా డాక్యుమెంట్ చేస్తాయి. రెండు ప్రవర్తనలలో ఒకదాన్ని ఊహించడం బదులు మీ దగ్గర నిజంగా ఉన్న బైనరీ యొక్క SIGNALS విభాగాన్ని చదవండి.

man openconnect | sed -n '/^SIGNALS/,/^LIMITATIONS/p'

మీ build డాక్యుమెంట్ చేసే సిగ్నల్ పంపండి

సిగ్నల్ తెలిసిన తర్వాత ప్రక్రియను నమూనాతో కాదు, pidతో ఆపండి.

pgrep -a openconnect
sudo kill -INT "$(cat /var/run/openconnect.pid)"

తర్వాత నిష్క్రమణ స్థితిని నమ్మడం బదులు మొదటి భాగంలోని మూడు తనిఖీలను పునరావృతం చేయండి. ip link show tun0 విఫలం కావాలి, ip route show dev tun0 ఏమీ ప్రింట్ చేయకూడదు, మరియు resolvectl status ఇకపై VPN లింక్ను జాబితా చేయకూడదు.

SIGHUP ఆపే బటన్ కాదు: అది డిస్కనెక్ట్ చేస్తుంది, స్క్రిప్ట్ నడుపుతుంది, సెషన్ను తిరిగి ప్రారంభించగలిగేలా వదిలిస్తుంది: --cookie. SIGUSR2 తక్షణ పునర్కనెక్షన్ను బలవంతం చేస్తుంది. SIGKILL శుభ్రతను పూర్తిగా దాటవేస్తుంది, ఈ వ్యాసం మాట్లాడేది సరిగ్గా ఆ స్థితి గురించే.

resolv.conf మార్చకుండా resolverను సరిచేయండి

చాలా Ubuntu సిస్టమ్లలో /etc/resolv.conf systemd-resolvedకు సింబాలిక్ లింక్, మీరు సవరించాల్సిన ఫైల్ కాదు. దాన్ని భర్తీ చేయడం VPNకే కాదు, ప్రతి నెట్వర్క్కు పేరు రిజల్యూషన్ను విరుస్తుంది. బదులుగా సొరంగం నమోదును తొలగించండి:

resolvectl revert tun0
resolvectl query example.com

సిస్టమ్ systemd-resolved బదులు resolvconf ఉపయోగిస్తే, ప్రతి ఇంటర్ఫేస్ రికార్డు లింక్ వదలమని చెప్పే వరకు ఉంటుంది, మరియు resolvconf -d tun0 సమానమైన చర్య. ఆదేశాన్ని ఎంచుకునే ముందు ఏ resolver ఉపయోగించబడుతోందో తనిఖీ చేయండి.

చనిపోయిన లింక్ వెనుక ఉన్న సర్వర్ను ఇంకా లక్ష్యంగా చేసుకున్న lookup టైమౌట్ అయ్యే వరకు వేలాడుతుంది, ఆ ఆలస్యం మిగిలిన మార్గం కంటే పాడైన DNS సర్వర్లా కనిపిస్తుంది.

తదుపరి డిస్కనెక్ట్ను బోరింగ్గా చేయండి

ప్రారంభం మరియు షట్డౌన్లో pid ఫైల్ మార్గాన్ని ఒకేలా ఉంచండి, ప్రతిసారీ --pid-file ఇవ్వడం ద్వారా, లేదా openconnectను unit కింద నడపండి దాని KillSignal మీ వెర్షన్ డాక్యుమెంట్ చేసే సిగ్నల్తో సరిపోతుంది. మొదట ముందు తెరపై పరీక్షించడం సహాయకుడు ప్రింట్ చేసే షట్డౌన్ సందేశాలను చూపుతుంది.

కనెక్ట్ చేయండి, డిస్కనెక్ట్ చేయండి, మూడు తనిఖీలను ఒకసారి నడపండి. శుభ్రమైన నిష్క్రమణ VPN లింక్, VPN మార్గం లేదా VPN resolver ఎంట్రీని వదలదు. మూడింటిలో ఒకటి బతికితే, ఏ భాగం శుభ్రం చేయడంలో విఫలమైందో ఇప్పుడు మీకు తెలుసు. తదుపరి దర్యాప్తు అప్పుడు వేలాడుతున్న lookup నుండి కాదు, ఆ సమాధానం నుండి ప్రారంభమవుతుంది.

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