nsswitch క్రమం వల్ల మీ CIFS మౌంట్ VPN ద్వారా విఫలమవుతుంది
షేర్ చిరునామా ద్వారా సమాధానమిస్తుంది, పేరు ద్వారా వేలాడుతుంది, కాబట్టి SMB ప్రారంభమయ్యే ముందే శోధన చనిపోతుంది. getent ను host తో పోల్చి, తర్వాత hosts పంక్తిని క్రమంగా చదవండి.
టన్నెల్ పని చేస్తోంది. ఫైల్ సర్వర్ ping కి చిరునామా ద్వారా సమాధానమిస్తుంది. ఆపై mount.cifs హోస్ట్నామ్తో కొంతసేపు అలాగే కూర్చొని, హోస్ట్ చేరుకోలేమని నివేదిస్తుంది, మరియు మీరు ఎప్పుడూ సమస్య కాని VPN ప్రొఫైల్ను తిరిగి నిర్మించడం ప్రారంభిస్తారు. Linux లో ఏ SMB ప్యాకెట్ ఉనికిలోకి రాకముందే glibc పేరును పరిష్కరిస్తుంది, మరియు ఆ రిజాల్వర్లోని క్రమం DNS ను అడిగే ముందే శోధనను ముగించగలదు. ఇది నేను నడిచే మార్గం, క్లయింట్ నుండి కాదు, విఫలమైన ఆదేశం నుండి ప్రారంభమవుతుంది.
వైఫల్యాన్ని సరైన స్థలంలో చదవండి
రెండు సాధనాలు ఒకే పేరుకు వేర్వేరు మార్గాల్లో వెళ్తాయి, వాటిని పోల్చడానికి ఒక ఆదేశం చాలు. getent కాన్ఫిగర్ చేసిన పేరు సేవా స్టాక్ గుండా వెళ్తుంది; host మరియు dig DNS ను నేరుగా అడిగి ఆ స్టాక్ను పట్టించుకోవు. నేరుగా విచారణ చిరునామాను తిరిగి ఇచ్చి getent ఏమీ ఇవ్వకపోతే, DNS సర్వర్ చేరుకోగలిగేది, విఫలమవుతున్నది మీ రిజాల్వర్ కాన్ఫిగరేషన్.
getent hosts fileserver.corp.example
host fileserver.corp.example 10.61.0.1
getent -s dns hosts fileserver.corp.example
మూడో ఆదేశం నిర్ణాయకం: అది DNS మూలాన్ని బలవంతం చేసి మిగిలిన స్టాక్ను దాటుతుంది. అది పని చేసి సాధారణ getent పని చేయకపోతే, తప్పు క్రమంలో ఉందని, టన్నెల్లో కాదు సర్వర్లో కాదు అని మీరు నిరూపించారు.
hosts పంక్తి త్వరగా ఆగే క్రమం
glibc రిజాల్వర్ /etc/nsswitch.conf చదివి hosts: నమోదును ఎడమ నుండి కుడికి వెళ్తుంది. చాలా పంపిణీలు multicast శోధన మొదట వచ్చి, దానికి త్వరగా తిరిగి వచ్చే చర్య జోడించిన పంక్తిని ఇస్తాయి. ఆ చర్య అలంకారం కాదు: mDNS “not found” అని సమాధానమిచ్చినప్పుడు, [NOTFOUND=return] మొత్తం శోధనను ముగిస్తుంది, కాబట్టి కార్పొరేట్ పేరు VPN రుద్దిన రిజాల్వర్కు ఎప్పటికీ పంపబడదు. ఏదీ దాన్ని లాగ్ చేయదు, ఎందుకంటే రిజాల్వర్ తిరస్కరించగల విచారణే పంపబడలేదు. అందుకే మౌంట్ వేలాడుతున్నట్లు కనిపించి తర్వాత హోస్ట్ చేరుకోలేమని నివేదిస్తుంది.
cat /etc/nsswitch.conf | grep '^hosts:'
# illustrative repair: dns before the early-return action
hosts: files myhostname mdns4_minimal dns [NOTFOUND=return] wins mdns4
mDNS తొలగించడం బదులు DNS ను త్వరగా తిరిగి వచ్చే చర్య ముందుకు జరపండి, మరియు దాన్ని కాన్ఫిగరేషన్ నిర్వహణ ద్వారా మార్చండి. చేతితో చేసిన సవరణ తదుపరి image నిర్మాణం వరకు జీవిస్తుంది, ఆపై అదే టికెట్ సవరణ గుర్తులేని మరో యంత్రం నుండి వస్తుంది.
రిజాల్వర్ అనేది శోధన డొమైన్ కాదు
పరిష్కారానికి పేరు ప్రయత్నించబడటం కూడా అవసరం. fileserver వంటి అసంపూర్ణ పేరు, విచారణను మోసే ఇంటర్ఫేస్కు శోధన డొమైన్ జోడించబడినప్పుడే fileserver.corp.example అవుతుంది. శోధన జాబితా లేకుండా DNS సర్వర్ను రుద్దే VPN చాలా నిర్దిష్ట విభజనను సృష్టిస్తుంది: పూర్తిగా అర్హత ఉన్న పేరు పరిష్కరమవుతుంది, ప్రతి చిన్న పేరు విఫలమవుతుంది.
ప్రొఫైల్ సవరించే ముందు రెండు రూపాలను పరీక్షించండి, ఎందుకంటే రెండు వైఫల్యాలు వేర్వేరు దిశలను చూపుతాయి. systemd-resolved హోస్ట్లో టన్నెల్ లింక్కు దాని సొంత సర్వర్లు మరియు రూటింగ్ డొమైన్లు ఉంటాయి, కాబట్టి గ్లోబల్ ఫైల్ కాదు, లింక్ చదవండి.
resolvectl status
resolvectl query fileserver.corp.example
resolvectl dns
resolvectl domain
విచారణ టన్నెల్ మోయని లింక్కు ఆపాదించబడితే, DNS చిరునామా ఉన్నప్పటికీ రూటింగ్ డొమైన్ లేదు. అది resolved కాన్ఫిగరేషన్లో విధాన సమస్య, టన్నెల్లో రూటింగ్ సమస్య కాదు.
కంటైనర్లు తమ సొంత సమాధాన ప్రతిని మోస్తాయి
సాధారణ image నుండి నిర్మించిన కంటైనర్ సాధారణంగా స్థిరమైన resolv.conf తెస్తుంది. హోస్ట్లో చేసిన రిజాల్వర్ మార్పులు దానికి చేరవు, శోధన డొమైన్ కూడా చేరదు, కాబట్టి టన్నెల్ ద్వారా షేర్ను మౌంట్ చేసే build పని విఫలమవుతుంది, అదే ఆదేశం కంటైనర్ బయట పని చేస్తుంది. కంటైనర్కు దాని సొంత DNS మరియు శోధన సెట్టింగ్లను compose ఫైల్లో లేదా run ఆర్గ్యుమెంట్లలో ఇవ్వండి, హోస్ట్ ప్రొఫైల్లో మాత్రమే కాదు.
image ను నిందించే ముందు కంటైనర్ లోపల తనిఖీ చేయండి. రెండు ఆదేశాలు మొత్తం నిర్ధారణను కొన్ని సెకన్లలో పునరుత్పత్తి చేస్తాయి, రెండోది ఏ రిజాల్వర్ నిజంగా సమాధానమిచ్చిందో నిరూపిస్తుంది.
అప్పుడే షేర్ మరియు ఫిల్టర్ వైపు చూడండి
పేరు పరిష్కరమైన తర్వాత, మిగిలిన వైఫల్యాలు సాధారణ నెట్వర్క్ సమస్యలు. SMB కి సర్వర్కు TCP 445 అవసరం, మరియు వర్క్గ్రూప్ జాబితాను బ్రౌజ్ చేయడం టన్నెల్ బహుశా ఫార్వర్డ్ చేయని పేరు సేవలపై ఆధారపడి ఉంటుంది. జాబితా నిండే వరకు వేచి ఉండకుండా హోస్ట్నామ్ ద్వారా మ్యాప్ చేయండి, మరియు క్లయింట్ ఏ దశకు చేరుకుందో చెప్పనివ్వండి. తిరస్కరించిన కనెక్షన్ మరియు నిశ్శబ్ద timeout కూడా వేరు చేయదగినవి, ఎందుకంటే మొదటిది సాధారణంగా ఏదో సమాధానమిచ్చిందని, రెండోది ఏదీ సమాధానమివ్వలేదని అర్థం.
getent hosts fileserver.corp.example
nc -vz fileserver.corp.example 445
mount -t cifs //fileserver.corp.example/share /mnt/share \
-o vers=3.1.1,username=svc_mount,uid=1000
పరిష్కరమైన చిరునామాలో 445 పోర్ట్ తిరస్కరించబడినా లేదా సమయం ముగిసినా అది అవతలి వైపు firewall లేదా listener సమస్య. పరిష్కరమవని పేరు రిజాల్వర్ సమస్య. మరియు ప్రామాణీకరణ జరిగి అనుమతి లోపాలు తిరిగి ఇచ్చే మౌంట్ రెండూ కాదు, కాబట్టి సెషన్ స్థాపించిన తర్వాత నెట్వర్క్ ప్రశ్నను మళ్లీ తెరవవద్దు.
ముగింపును సాక్ష్యం అంతే సన్నగా ఉంచండి. చిరునామా పని చేసి పేరు పని చేయకపోతే, టన్నెల్ తన పని చేస్తోంది, సవరణ రిజాల్వర్ క్రమం, శోధన డొమైన్ లేదా కంటైనర్ సొంత కాన్ఫిగరేషన్లో ఉంది.