టన్నెల్ పనిచేస్తున్నప్పుడు మరియు API యొక్క ప్రైవేట్ చిరునామా ఇప్పటికీ ping కి సమాధానం ఇస్తున్నప్పుడు kubectl పేరు శోధనలో విఫలమవుతుంది. మార్గం సరిగ్గా ఉంది; క్లయింట్ క్లస్టర్ యొక్క ప్రైవేట్ జోన్ గురించి ఎప్పుడూ వినని రిజాల్వర్ను అడుగుతోంది. రెండు సవరణలు ఎక్కువగా ఉపయోగించబడతాయి: వర్చువల్ నెట్వర్క్ రిజాల్వర్ను ప్రతి VPN క్లయింట్కు పంపడం, లేదా పేరును స్థానికంగా hosts ఎంట్రీ లేదా షరతులతో కూడిన ఫార్వర్డర్ ద్వారా పిన్ చేయడం. రెండూ ఒకే లక్షణాన్ని వేరే బాధ్యతతో పరిష్కరిస్తాయి, వాటిని కలపడమే ప్రతిసారీ ఎండ్పాయింట్ పునర్నిర్మించబడినప్పుడు బృందాలు hosts ఫైళ్లను సవరించడానికి కారణం.

పరిష్కారం మరియు చేరుకోగలిగే సామర్థ్యం వేరే పొరల్లో విఫలమవుతాయి

ఏదైనా మార్చే ముందు శోధనను మీరే నిర్వహించండి. Linux లో getent hosts లేదా Windows లో nslookup క్లయింట్కు సమాధానం వస్తుందో లేదో చెబుతుంది; సమయం ముగియడం లేదా NXDOMAIN రిజాల్వర్ను సూచిస్తాయి, తప్పు చిరునామా ఉన్న సమాధానం పాత రికార్డు లేదా పబ్లిక్ మార్గాన్ని సూచిస్తుంది.

తర్వాత kubectl నిజంగా ఏ సర్వర్కు కనెక్ట్ అవుతుందో నిర్ధారించండి. kubeconfig సందర్భం URL ను నిల్వ చేస్తుంది, మరియు VPN మార్గం దానిని తిరిగి రాయదు: సందర్భం పబ్లిక్ ఎండ్పాయింట్ను పేర్కొంటే DNS సంపూర్ణంగా ఉండవచ్చు మరియు ఆదేశం ఇప్పటికీ విఫలమవుతుంది.

getent hosts api.internal.example
kubectl config view --minify -o jsonpath='{.clusters[0].cluster.server}'
kubectl -v=8 get nodes 2>&1 | head -40

మూడవ సంకేతం శోధన తర్వాత వైఫల్యం యొక్క ఆకారం. ప్రైవేట్ చిరునామాకు పరిష్కరించబడి తర్వాత TCP సమయం ముగిసే పేరు ఫైర్వాల్ లేదా అధీకృత నెట్వర్క్ సమస్య. పబ్లిక్ చిరునామాకు పరిష్కరించబడే పేరు అంటే ప్రశ్న ప్రైవేట్ జోన్ నుండి బయటపడింది. ఈ మూడు ఫలితాలను వేరుగా ఉంచండి; ప్రతి ఒక్కటి మిమ్మల్ని వేరే బాధ్యుడి వద్దకు పంపుతుంది.

ఎంపిక A: వర్చువల్ నెట్వర్క్ రిజాల్వర్ను టన్నెల్లోకి పంపండి

VPN సర్వర్ వర్చువల్ నెట్వర్క్ లోపల నడిచినప్పుడు, క్లయింట్లు సర్వర్ హోస్ట్ ఉపయోగించే అదే రిజాల్వర్ను ఉపయోగించవచ్చు. OpenVPN Community లో సర్వర్ DNS ఎంపికను పంపుతుంది; Access Server అదే సెట్టింగ్ను అడ్మిన్ ఇంటర్ఫేస్లో చూపుతుంది, మరియు DNS సూచన దానిలోపల ప్రయాణించడం వల్ల క్లయింట్లు ప్రొఫైల్ను మళ్లీ డౌన్లోడ్ చేయాలి.

# server.conf
push "dhcp-option DNS 10.0.0.4"
push "route 10.0.0.4 255.255.255.255"

రూట్ లైన్ split tunnel ప్రొఫైళ్లలో ముఖ్యం. రిజాల్వర్ చిరునామాను పంపడం దానిని చేరుకోగలిగేలా చేయడంతో సమానం కాదు: టన్నెల్ ద్వారా క్లస్టర్ యొక్క సబ్నెట్ మాత్రమే వెళితే, 10.0.0.4 కు ప్రశ్న స్థానిక LAN ద్వారా బయటకు వెళ్లి మరణిస్తుంది. రిజాల్వర్ కోసం హోస్ట్ రూట్ పంపండి, లేదా దాని సబ్నెట్ను టన్నెల్లో చేర్చండి.

స్వీకరించే వైపుకు కూడా విధానం ఉంటుంది. క్లయింట్ చిరునామా పరిధి నుండి చేరుకోగల రిజాల్వర్ అక్కడి నుండి వచ్చే ప్రశ్నలను ఇప్పటికీ తిరస్కరించవచ్చు, మరియు వర్చువల్ నెట్వర్క్కు అనుసంధానించబడిన ప్రైవేట్ జోన్ ఆ నెట్వర్క్ DNS మార్గం ద్వారా వచ్చే క్లయింట్లకు మాత్రమే సమాధానం ఇస్తుంది. పంపిన తర్వాత శోధన సమయం ముగిస్తే, క్లయింట్ను మళ్లీ తాకే ముందు రిజాల్వర్ యొక్క స్వంత లాగ్లను చూడండి.

క్లయింట్లో ఏమి వర్తించిందో ధృవీకరించండి: systemd-resolved Linux లో resolvectl status, macOS లో scutil --dns, Windows లో ipconfig /all. పంపిన DNS సర్వర్ ఎప్పుడూ కనిపించకపోతే ప్రొఫైల్ మళ్లీ లోడ్ కాలేదని అర్థం.

ఎంపిక B: hosts ఎంట్రీలు మరియు షరతులతో కూడిన ఫార్వర్డింగ్

hosts ఎంట్రీ అతి చిన్న సాధ్యమైన సవరణ మరియు అత్యంత సున్నితమైనది. ఇది ఒక పేరును ఒక యంత్రంలో ఒక చిరునామాకు మ్యాప్ చేస్తుంది, కాబట్టి డెమోకు పనిచేస్తుంది మరియు ప్రైవేట్ ఎండ్పాయింట్ లేదా దాని IP పునర్నిర్మించబడినప్పుడు విరిగిపోతుంది. ఇది నిజమైన అంతరాన్ని మిగిలిన బృందం నుండి దాచుతుంది.

షరతులతో కూడిన ఫార్వర్డర్ ప్రతి క్లయింట్కు DNS పంపకుండా మెరుగ్గా స్కేల్ అవుతుంది. dnsmasq ఒక జోన్ను VNet రిజాల్వర్కు పంపి మిగతావన్నీ ప్రశాంతంగా వదిలేయగలదు: server=/cluster.internal/10.0.0.4. Windows DNS లో షరతులతో కూడిన ఫార్వర్డర్లు ఉన్నాయి, మరియు Windows క్లయింట్లు అదే విభజనకు NRPT నియమాన్ని ఉపయోగించవచ్చు. ఫార్వర్డర్కు ఇప్పటికీ VNet రిజాల్వర్కు మార్గం అవసరం.

ఫార్వర్డింగ్ సాధారణ బ్రౌజింగ్ను స్థానికంగా ఉంచుతుంది, ఇది split tunnel లో ముఖ్యం. ఇది ప్రైవేట్ జోన్ ప్రశ్నలను లాగ్ చేయడానికి ఒక స్థలాన్ని మరియు ఫార్వర్డర్ హోస్ట్ కదిలినప్పుడు విరిగే ఒక స్థలాన్ని ఇస్తుంది.

బాధ్యత ప్రకారం ఎంచుకోండి, సౌలభ్యం ప్రకారం కాదు

VPN ప్రొఫైల్ను మీరు నియంత్రిస్తూ API మాత్రమే కాక ప్రతి ప్రైవేట్ పేరు పనిచేయాలని కోరుకుంటే రిజాల్వర్ను పంపండి. క్లయింట్లు మిగతా అన్నింటికీ తమ స్థానిక DNS ను ఉంచుకోవాల్సి ఉంటే, లేదా VPN ను క్లస్టర్ కంటే వేరే బృందం నిర్వహిస్తే ఫార్వర్డర్ను ఎంచుకోండి.

hosts ఎంట్రీలు రోగనిర్ధారణ, మోహరింపు కాదు. API చేరుకోగలదని నిరూపించడానికి ఒకటి ఉపయోగించండి, తర్వాత దాన్ని తీసివేసి రిజాల్వర్ మార్గాన్ని సరిచేయండి; దాన్ని అలాగే ఉంచితే తర్వాత మార్గ ప్రశ్న నిధి అన్వేషణగా మారుతుంది. ఏ ఎంపికనైనా ఎంచుకోండి, జోన్, రిజాల్వర్ చిరునామా మరియు ప్రశ్నను మోసుకెళ్లే మార్గాన్ని రాయండి.

API ఎండ్పాయింట్ను పరీక్షించండి, పేరును మాత్రమే కాదు

శోధన విజయవంతమైన తర్వాత, క్లస్టర్ CA తో API యొక్క సంస్కరణ ఎండ్పాయింట్ను పొందండి. curl --cacert ca.crt https://api.internal.example:6443/version TLS మరియు అధికార వైఫల్యాలను DNS నుండి వేరు చేస్తుంది. 403 అంటే పేరు మరియు కనెక్షన్ పనిచేస్తాయి మరియు గుర్తింపు పనిచేయదు.

క్లయింట్ చిరునామా పరిధిని క్లస్టర్ యొక్క అధీకృత నెట్వర్క్లు లేదా ఫైర్వాల్ అనుమతిస్తున్నాయో లేదో కూడా తనిఖీ చేయండి. ప్రైవేట్ క్లస్టర్లు తరచుగా API ట్రాఫిక్ను VNet లేదా peered పరిధుల నుండి మాత్రమే అంగీకరిస్తాయి, కాబట్టి మరో పూల్ నుండి చిరునామాలు ఇచ్చే టన్నెల్ నెట్వర్క్ పొరలో కనెక్ట్ అయి API వద్ద విస్మరించబడుతుంది.

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

శోధనతో ప్రారంభించండి, జోన్ యజమానికి సరిపోయే రిజాల్వర్ మార్గాన్ని ఎంచుకోండి, తర్వాత ఎండ్పాయింట్ను ధృవీకరించండి. మూడూ ఉత్తీర్ణమైతే, మిగిలిన సమస్య అధికారం, పేరు పరిష్కారం కాదు.

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