VPN డిస్కనెక్ట్ అయిన తర్వాత resolv.conf సవరించడం DNSని సరిచేయదు
జాబితా పైభాగంలో ఉన్న చనిపోయిన టన్నెల్ రిజాల్వర్ ప్రతి శోధనకు ఒక టైమౌట్ ఖర్చు చేస్తుంది. ఫైల్ ఎవరిదో తనిఖీ చేయండి, లింక్ స్థితిని రీసెట్ చేయండి మరియు ఉత్పత్తి చేయబడిన అవుట్పుట్ను సవరించడం ఆపండి.
మీరు VPNని డిస్కనెక్ట్ చేస్తారు, ping 1.1.1.1 ఇంకా స్పందిస్తుంది, మరియు పేజీ చివరికి లొంగిపోయే ముందు ప్రతి పేరు శోధన వేలాడుతుంది. అప్పుడు cat /etc/resolv.conf టన్నెల్ లోపల మాత్రమే ఉన్న నేమ్సర్వర్ను చూపిస్తుంది, సాధారణంగా జాబితాలో మొదటిది. ఆ లైన్ను తొలగించడం సుమారు పది నిమిషాల పాటు సరిచేసినట్లు అనిపిస్తుంది, ఆపై సస్పెండ్, Wi-Fi రోమింగ్ లేదా రీస్టార్ట్ దాన్ని తిరిగి తెస్తుంది. మీరు సవరించిన ఫైల్ సెట్టింగ్ కాదు; అది మరొక భాగానికి చెందిన లింక్ స్థితి యొక్క ప్రాతినిధ్యం.
ఒక పాత ఎంట్రీ ప్రతి శోధనకు సెకన్లు ఎందుకు ఖర్చు చేస్తుంది
glibc రిజాల్వర్ నేమ్సర్వర్ జాబితాను క్రమంగా నడిచి తదుపరిది ప్రయత్నించే ముందు టైమౌట్ ముగిసే వరకు వేచి ఉంటుంది, మరియు resolv.conf(5) ఆ జాబితాను మూడు ఎంట్రీలకు పరిమితం చేస్తుంది. టన్నెల్ వెళ్ళిన తర్వాత 10.8.0.1 వంటి టన్నెల్-వైపు రిజాల్వర్ను జాబితా పైభాగంలో ఉంచండి, అప్పుడు ప్రతి శోధన స్పందించే సర్వర్కు చేరే ముందు టైమౌట్ చెల్లిస్తుంది. లక్షణం DNS లోపంగా కాకుండా చనిపోయిన కనెక్షన్లా కనిపించడానికి ఇదే కారణం: బ్రౌజర్లు బ్లాక్ అవుతాయి, సమయం ముగుస్తుంది మరియు కొన్నిసార్లు తర్వాత పాతబడే క్యాష్ చేసిన చిరునామాను ఇస్తాయి.
«ఇంటర్నెట్ పాడైపోయింది» అనే ఫిర్యాదు ఎందుకు వస్తుందో కూడా ఇది వివరిస్తుంది. IP చిరునామాకు ping లింక్ బాగుందని నిరూపిస్తుంది, ఇది లోపాన్ని యాప్దిగా కనిపించేలా చేస్తుంది. రిజాల్వర్ల జాబితా మొదట చదవాల్సినది మరియు చివరిగా సవరించాల్సినది.
అపోహ: resolv.conf ఒక సెట్టింగ్ల ఫైల్
మార్చే ముందు ఆ మార్గం నిజంగా ఏమిటో అడగండి:
ls -l /etc/resolv.conf
readlink -f /etc/resolv.conf
systemd-resolved హోస్ట్లో ఇది 127.0.0.53కి సూచించే stub ఫైల్కు చిహ్నాత్మక లింక్, నిజమైన సర్వర్లు resolvectl ముద్రించే లింక్-వారీ స్థితిలో నివసిస్తాయి. NetworkManager హోస్ట్లో ఇది NetworkManager క్రియాశీల కనెక్షన్ నుండి రాసే ఫైల్ కావచ్చు. కొన్ని విక్రేత క్లయింట్లలో ఇది కనెక్ట్ అయ్యేటప్పుడు అక్కడే తిరిగి రాయబడే, మీరు అదృష్టవంతులు కాకపోతే డిస్కనెక్ట్ అయ్యేటప్పుడు ఎప్పుడూ పునరుద్ధరించబడని సాధారణ ఫైల్. ఇవి మూడు వేర్వేరు యజమానులు, మొదటి రెండింటిని చేతితో సవరించడం ఏమీ చేయదు లేదా తదుపరి నెట్వర్క్ సంఘటన వరకు నిలుస్తుంది.
resolvectl status నిజం చెప్పే వీక్షణ: లింక్-వారీ DNS సర్వర్లు, రూటింగ్ డొమైన్లు, మరియు టన్నెల్ లింక్ ఇంకా ఉందో లేదో. resolvectl query example.com మరింత ముందుకు వెళ్ళి ఏ ఇంటర్ఫేస్ స్పందించిందో చూపిస్తుంది. ఫైల్ను తాకే ముందు రెండింటినీ ఉపయోగించండి, మరియు స్వంత సురక్షిత DNS ఉన్న బ్రౌజర్ ఇవన్నీ పట్టించుకోదని గుర్తుంచుకోండి.
ఏదైనా సవరించే ముందు యజమానిని కనుగొనండి
సాధారణంగా మూడు భాగాలు ఒకే సెట్టింగ్ కోసం పోటీ పడతాయి: systemd-resolved, NetworkManager మరియు VPN క్లయింట్ ఇన్స్టాల్ చేసినది. మొదట సజీవంగా ఉన్నదాన్ని గుర్తించండి:
systemctl is-active systemd-resolved
nmcli connection show --active
ps aux | grep -E "openvpn|wg-quick|vpn"
resolved క్రియాశీలంగా ఉండి చిహ్నాత్మక లింక్ దాని stubకి సూచిస్తే, ప్రపంచ ఫైల్ ఉత్పత్తి చేయబడిన అవుట్పుట్ మరియు మీ సవరణ కేవలం దృశ్యమానం. NetworkManager కనెక్షన్ను కలిగి ఉంటే, సర్వర్లు కనెక్షన్ ప్రొఫైల్కు చెందుతాయి, కాబట్టి సరిచేయడం ఫైల్ సవరణ కాదు, nmcli లక్షణ మార్పు. విక్రేత డీమన్ నడుస్తుంటే, తదుపరి కనెక్షన్ వరకు దాని స్వంత పునరుద్ధరణ మార్గం మాత్రమే నిలుస్తుంది.
క్లయింట్ వదిలివేసిన లింక్ స్థితిని శుభ్రం చేయండి
చంపబడిన క్లయింట్ తన క్లీనప్ హుక్ను నడపలేదు. SIGKILL అస్సలు పట్టుబడదు, SIGINT మరియు SIGTERM పట్టుబడతాయి, కాబట్టి బలవంతపు హత్య తర్వాత «అలాగే ఆగిపోయిన» టన్నెల్ తరచుగా ఇంటర్ఫేస్ నమోదు మరియు రిజాల్వర్ ఎంట్రీ రెండింటినీ అక్కడే వదిలివేస్తుంది. నిర్దిష్ట PIDని కనుగొని సిగ్నల్ను దానికే పంపండి:
ps aux | grep -E "openvpn|wg-quick"
sudo kill <pid>
resolvectl revert tun0
పూర్తి సరిపోలిక జాబితా చదివే ముందు pkill -f vpn లేదా killall vpn వైపు చేయి చాపకండి. -f మొత్తం ఆదేశ పంక్తితో సరిపోలుతుంది, కాబట్టి ఇది ర్యాపర్ స్క్రిప్ట్, ఎడిటర్ సెషన్ లేదా మార్గంలో ఆ స్ట్రింగ్ ఉన్న సంబంధం లేని ప్రక్రియను ముగించవచ్చు. పని మధ్యలో తప్పు ప్రక్రియను ముగించడమే రిజాల్వర్ సమస్య పోయిన ఫైల్గా మారే మార్గం.
resolvectl revert ఆ లింక్ యొక్క రన్టైమ్ DNS కాన్ఫిగరేషన్ను రీసెట్ చేస్తుంది, ఇది రిజాల్వర్ను పునఃప్రారంభించడం కంటే ఇరుకైనది మరియు ప్రపంచ ఫైల్ను సవరించడం కంటే చాలా ఇరుకైనది. టన్నెల్ లింక్ పూర్తిగా పోయిందంటే, systemctl restart NetworkManager కనెక్షన్ స్థితిని తిరిగి నిర్మిస్తుంది మరియు మూల థ్రెడ్లు పదే పదే తిరిగి వచ్చే దశ అదే. Restart=always ఉన్న సేవా నిర్వాహకులపై జాగ్రత్తగా ఉండండి, అది చంపబడిన క్లయింట్ను మరియు అతని DNS సెట్టింగ్లను నేరుగా తిరిగి పెట్టగలదు.
మరొక దిశ: నెట్టబడిన కానీ ఎప్పుడూ చేరని DNS
పాత ఎంట్రీ యొక్క అద్దం ప్రతిబింబం ఎటువంటి ఉపయోగకరమైన రిజాల్వర్ లేని టన్నెల్. ప్రొఫైల్లో DNS ఎంపిక ఒక అభ్యర్థన; కనెక్షన్ను నిర్వహించే భాగం దాన్ని రిజాల్వర్కు అప్పగించాలి. లాగ్ సర్వర్ స్వీకరించబడిందని చూపించినా టన్నెల్ లింక్ ఎటువంటి DNS సెట్టింగ్ను మోయకపోతే, లేనిది ఇంటిగ్రేషన్, సర్వర్ కాదు.
అప్పగింతను చేతితో చేసి పరీక్షించండి, ఇది «సర్వర్ తప్పు» మరియు «ఎవరూ వర్తించలేదు» మధ్య భేదం చూపిస్తుంది:
resolvectl dns tun0 10.10.10.10
resolvectl domain tun0 ~.
అన్నింటినీ పట్టుకునే రూటింగ్ డొమైన్ ప్రతి పేరును ఆ లింక్కు పంపుతుంది, ఇది పూర్తి-టన్నెల్ క్లయింట్ కోరుకునేది మరియు విభజిత DNS ఉపయోగించకూడనిది. ఈ సెట్టింగ్లు తదుపరి కనెక్షన్లో మాయమవుతాయి. NetworkManagerలో వాటిని శాశ్వతం చేయడానికి స్వయంచాలక DNSని నిలిపివేయండి, కనెక్షన్పై సర్వర్ను సెట్ చేయండి మరియు డొమైన్ను జోడించండి:
nmcli connection modify office ipv4.ignore-auto-dns yes
nmcli connection modify office ipv4.dns 10.10.10.10
nmcli connection modify office ipv4.dns-search "~."
అంతర్గత పేర్లకు మాత్రమే స్పందించాల్సిన కంపెనీ టన్నెల్ కోసం, ఆ జోన్లను అన్నింటినీ పట్టుకోవడానికి బదులుగా ప్రారంభ టిల్డేతో జాబితా చేయండి, పబ్లిక్ పేర్లు స్థానిక రిజాల్వర్ను ఉపయోగించడం కొనసాగించేలా.
తదుపరి అంతరాయం అయ్యే వర్క్అరౌండ్లు
కనెక్ట్ అయ్యే ముందు resolv.confను కాపీ చేసి తర్వాత పునరుద్ధరించడం runbookలో చట్టబద్ధమైన పంక్తి, మరియు ఇది మరమ్మత్తు కాదు, వర్క్అరౌండ్. క్రాష్ లేదా బలవంతపు రీబూట్ పునరుద్ధరణను దాటవేస్తుంది కాబట్టి ఇది ముఖ్యమైన సమయంలోనే విఫలమవుతుంది. తదుపరి వ్యక్తి దానిపై నిర్మించకుండా ఉండేందుకు వర్క్అరౌండ్గా రాయండి.
systemd-resolvedను నిలిపివేసి పబ్లిక్ సర్వర్లను హార్డ్కోడ్ చేయడం మరొక ప్రసిద్ధ చర్య. ఇది కనెక్ట్ మరియు డిస్కనెక్ట్ను అంచనా వేయగలిగేలా చేస్తుంది మరియు ప్రతి ఇతర నెట్వర్క్కు లింక్-వారీ DNSని తొలగిస్తుంది, ఇది అంతర్గత పేర్ల కోసం విభజిత DNSని పాడు చేస్తుంది మరియు ప్రశ్నలను లోపల ఉంచడానికి ఉద్దేశించిన టన్నెల్ యొక్క లక్ష్యాన్ని భంగం చేస్తుంది. resolvconfను ఇన్స్టాల్ చేసి పబ్లిక్ సర్వర్లను పిన్ చేయడం అదనపు పొరతో అదే ఖర్చు. వాటిలో దేన్నైనా నిర్ధారణగా పరిగణించండి: అది బ్రౌజింగ్ను తిరిగి తెస్తే, పబ్లిక్ సర్వర్లు సరైనవి అని కాదు, రిజాల్వర్ ఇంటిగ్రేషన్ నేరస్థుడని మీరు నేర్చుకున్నారు.
నిలకడైన సవరణ ప్రతి పొరకు ఒక యజమాని: టన్నెల్ లింక్ DNS ఏ భాగానికి చెందుతుంది మరియు ప్రపంచ డిఫాల్ట్ ఏది అని నిర్ణయించి దాన్ని రాయండి, మిగిలినవాటిని మార్గం నుండి తొలగించండి. తర్వాత డిస్కనెక్ట్ తర్వాత VPN మాత్రమే పరిష్కరించే పేరుతో ధృవీకరించండి. ప్రైవేట్ పేరు ఇంకా స్పందిస్తే నమోదు తొలగించబడలేదు; ఏదీ పరిష్కరించబడకపోతే ఫైల్ ఇక లేని సర్వర్కు సూచిస్తుంది. రెండూ బ్రౌజర్ తెరిచే ముందు resolvectlలో కనిపిస్తాయి.