అడ్Guardian హోమ్ మీ LAN చిరునామా నుండి వైర్గార్డ్ క్లయింట్లను సమాధానం ఇస్తుంది
0.0.0.0 బైండ్ కర్నెల్ సమాధాన మూలాన్ని ఎంచుకోవడానికి అనుమతిస్తుంది. బహు-నివాస హోస్టులో ఆ సమాధానం టన్నెల్ చేరుకోలేని చిరునామా నుండి రావచ్చు.
టన్నెల్ ఎగువపై ఉంది, ఫైర్వాల్ పోర్ట్ 53 ను అనుమతిస్తుంది, AdGuard హోమ్ పరుగులో ఉంది, మరియు WireGuard క్లయింట్ కోసం నేమ్స్ ఇంకా పరిష్కరించబడవు. క్వెరీ సాధారణంగా వస్తుంది మరియు సమాధానం సాధారణంగా వెళ్తుంది, కాబట్టి రిజాల్వర్ పై ప్యాకెట్ కౌంటర్లు ఆరోగ్యంగా కనిపిస్తాయి మరియు సర్వీస్ నిర్దోషిగా కనిపిస్తుంది. తప్పు ఏది అంటే ఆ సమాధానంలోని మూల చిరునామా: ఇది క్లయింట్ ఎప్పుడూ అడగని లోకల్ అడ్రస్ నుండి వెళ్తుంది, మరియు క్లయింట్ యొక్క స్టబ్ రిజాల్వర్ దీన్ని త్రొశిస్తుంది. AdGuard హోమ్ యొక్క కాన్ఫిగరేషన్లో ఒక లిస్ట్ దీన్ని నిర్ణయిస్తుంది, మరియు దాని సాధారణ డిఫాల్ట్ నిర్ణయాన్ని కర్నెల్కు పంపిస్తుంది.
క్వెరీ వస్తుంది, సమాధానం ఎక్కడో else నుండి వెళ్తుంది
ఒక క్లయింట్ 10.6.0.1ని దాని రిసాల్వర్గా కాన్ఫిగర్ చేసి UDP క్వెరిని 10.6.0.1 పోర్ట్ 53కి పంపుతుంది. ఆ ప్యాకెట్ టన్నెల్ దాటుకుని హోస్ట్పై land అవుతుంది, మరియు AdGuard Home దానికి సమాధానం ఇస్తుంది. అయినప్పటికీ, వైర్పై సమాధానం రాబడేది కొత్త ప్యాకెట్గా ఉంటుంది, దీని సోర్స్ అడ్రస్ క్లయింట్ అంచనాకు తగిన విధంగా కాకుండా, హోస్ట్ స్టాక్ ద్వారా ఎంచుకోబడుతుంది.
క్లయింట్ రిసాల్వర్ ఒక కనెక్ట్ చేసిన సాకెట్ అయినప్పుడు, అంటే systemd-resolved, dnsmasq మరియు చాలా స్టబ్ రిసాల్వర్స్ వాడే విధానం, అది కేవలం అది పంపిన నిఖార్సయిన అడ్రస్ నుండి వచ్చిన సమాధానాలను మాత్రమే accepts చేస్తుంది. 10.6.0.1కు పంపిన క్వెరీకి 192.168.1.10 నుండి వచ్చే సమాధానం ఏ పార్సింగ్ ప్రారంభమయ్యేముందు drop చేయబడుతుంది. రిసాల్వర్ ఒక విజయవంతమైన సమాధానాన్ని లాగ్ చేస్తుంది, క్లయింట్ టైమౌట్ను లాగ్ చేస్తుంది, మరియు ఇరువురూ నిజం చెప్పడం జరుగుతుంది.
అందువల్ల కౌంటర్లు అబద్ధం చెప్పడం లేదు మరియు క్లయింట్ కూడా కాదు. మీరు అవసరమైన సాక్ష్యాలు మూడు చోట్ల ఉన్నాయి, ఈ క్రమంలో: శ్రోత బంధించబడిన చిరునామా, కర్నెల్ క్లయింట్కి తిరిగి ఉపయోగించే మార్గం, మరియు నిజమైన ప్రతిస్పందన ప్యాకెట్上的 మూల చిరునామా.
కర్నెల్ ఎలా ప్రతిస్పందన మూలాన్ని ఎంచుకుంటుంది
ఒక UDP సాకెట్ కు బైండ్ చేయబడింది0.0.0.0తన స్వంత మూల చిరునామా లేనందున, ప్రతి బయటి ప్రతిస్పందనకు గమ్యానికి రూట్ లుక్ అప్ చేయబడుతుంది. ఆ తర్వాత కర్నెల్ ఆ రూట్ నుండి మూలాన్ని తీసుకుంటుంది: రూట్ ద్వారా నిర్ధారించబడిన చిరునామా, లేదా బయటి ఇంటర్ఫేస్ యొక్క ప్రాథమిక చిరునామా. క్వెరీ యొక్క గమ్య చిరునామా గురించి ఏమి గుర్తు చేయబడదు.
ఒకే హోమ్ ఉన్న హోస్ట్లో ఇది కనిపించదు, ఎందుకంటే కేవలం ఒకే సమాధానం వాస్తవసంబంధంగా ఉంటుంది. ఒక లాన్ అడ్రెస్, ఒక వైర్గార్డ్ అడ్రెస్ మరియు ఒక మేనేజ్మెంట్ అడ్రెస్ ఉన్న యంత్రంలో, అనేక సమాధానాలు సాధ్యమోతే, గెలుచుకున్నది ఆ సమయంలో రూటింగ్ టేబుల్పై ఆధారపడి ఉంటుంది. అదనపు రూట్ జోడించండి, అదే ఇంటర్ఫేస్పై రెండవ అడ్రెస్ను పెట్టండి, రిసాల్వర్ ముందు NAT రీడైరెక్ట్ చేయండి, లేదా AdGuardను తన సొంత నేమ్స్పేస్తో కంటెయినర్లో నడపండి, అయితే ఎంచుకున్న మూలం కస్టమర్ సరిచూస్తున్నదాన్ని విభిన్నంగా ఉండవచ్చు.
ss -lunp | grep :53మీరు ఏ ఆటలో ఉన్నారో చూపిస్తుంది.0.0.0.0:53పై లిసనర్ వైల్డ్కార్డ్ కేస్;10.6.0.1:53పై లిసనర్ ఇప్పటికే సమాధానం ఫిక్స్ చేసుకుంది. సాకెట్ చదవడం YAML చదివేదానితో పోలిస్తే వేగంగా ఉంటుంది, మరియు ఇది చివరిసారి సేవ్ చేసినది కాకుండా నిజంగా నడుస్తున్నదాన్ని ప్రతిబింబిస్తుంది.
bind_hosts నిజంగా ఏమి నియంత్రిస్తుంది
AdGuard Home యొక్కdns.bind_hostsDNS లిసనర్ ఉపయోగించే స్థానిక చిరునామాల జాబితా ఇదే. డెలివర్ అయిన డిఫాల్ట్ వైల్డ్కార్డ్, అంటే ప్రతి స్థానిక చిరునామా లో స్వీకరించాలి మరియు రిప్లైకి సర్టే చేసిన సోర్స్ను కర్నెల్ ఎంచుకోవడానికి అనుమతించాలి. వైల్డ్కార్డ్ ను క్లయింట్లు ప్రశ్నించే చిరునామాతో మార్చడం సాకెట్ ను మార్చుతుంది, మరియు ప్రతి సమాధానంపై సోర్స్ చిరునామా కూడా మారుతుంది.
జాబితా ఒక ఎంట్రీ కంటే ఎక్కువ తీసుకుంటుంది, ఇది రెండు నెట్వర్క్లకు సేవ చేసే రిజాల్వర్కి ముఖ్యం.10.6.0.1మరియు192.168.1.10ఇరువురు బౌండ్ సాకెట్లను ఇస్తాయి, మరియు ఏదైనా ఒకటిపై ప్రశ్న వచ్చినా అది వచ్చిన చిరునామాకు సంబంధించినది నుండి సమాధానం ఇస్తుంది. ఇది ఎక్కువ మంది కొంతమంది ఆశించే విధానం, వైల్డ్కార్డ్ ఇప్పటికే ఇస్తుందని అనుకునే ఉంది.
YAML సాదా, మరియు అందులో చిరునామా మీరు టన్నల్ క్లయింట్లు ఉపయోగించమని చెప్పినది, హోస్ట్ యొక్క ప్రైమరీ చిరునామా కాదు:
dns:
bind_hosts:
- 10.6.0.1
port: 53ఒక రిజాల్వర్ రెండు ఇన్స్టాలేషన్లలో ఎందుకు వేర్వేరు అభిప్రాయం కలుగుతుంది
ఈ సందర్భంలో ప్లగిన్-నియంత్రించబడినది అనగా రిజాల్వర్ ఇంకో ప్యాకేజ్ ద్వారా ఇన్స్టాల్ చేయబడి మరియు పర్యవేక్షించబడుతుంది: రౌటర్ ఫిర్మ్వేర్ ప్యాకేజ్, NAS ప్యాకేజ్, లేదా హోమ్-ఆटोమేషన్ యాడ్-ఒన్. ఆ ప్యాకేజ్ సాధారణంగా AdGuard Home యొక్క YAML యొక్క తన సొంత కాపీని సరఫరా చేస్తుంది మరియు తన స్వంత షెడ్యూల్ ప్రకారం ప్రాసెస్ను రీస్టార్ట్ చేస్తుంది, అలాగే స్టాండలోన్ ఉదాహరణ అనేది మీరు స్వయంగా కాన్ఫిగర్ చేసే వెండర్ బైనరీ లేదా కంటెయినర్. ఏ విధంగా అయినా మీరు వేరే కాన్ఫిగరేషన్ ఫైళ్లతో మరియు వేరే బైండ్ ఎంపికలతో రెండు స్వతంత్ర ప్రాసెస్లను చూస్తున్నట్లు అవుతుంది, ఇరువురు ఒకే అప్స్ట్రీమ్ లిస్ట్ మరియు ఒకే ఫిల్టర్ లిస్ట్లను చదివినప్పటికీ. ఒకటి నిర్దిష్ట టన్నెల్ అడ్రస్ని బైండ్ చేయగలదు, మరొకటి వైల్డ్కార్డ్ను వారసత్వంగా పొందుతుంది, మరియు వెబ్ ఇంటర్ఫేస్ రెండు వైపుల నుండి సాదృశ్యం కనిపిస్తుంది.
అందుకే "మైగ్రేషన్కి ముందు అదే రిజాల్వర్ పనిచేశింది" అంటే ప్రస్తుత బైండింగ్ గురించి ఏమీ రుజువు చూపదు. సాకెట్ను తనిఖీ చేయండి, అనగా రన్నింగ్ ప్రాసెస్ నిజంగా లోడ్ చేసిన కాన్ఫిగరేషన్ ఫైల్ను తనిఖీ చేయండి. మరో డైరెక్టరీలో పాత కాపీ ఉండటం కారణంగా సవరణలు ఎలాంటి ప్రభావం చూపించలేవని గుర్తించడంలా ఉంది.
దానిని పిన్ చేయండి, తరువాత सुरంగు వైపుని నుండి పరీక్షించండి
మార్చుbind_hostsటన్నెల్ చిరునామాకు, సర్వీస్ని రీస్టార్ట్ చేయండి, మరియు సాకెట్ తరలించబడిందని నిర్ధారించండి:ss -lunp | grep :53ఇప్పుడు చూపించాలి10.6.0.1:53మరియు ఎలాంటి వైల్డ్కార్డ్ ఎంట్రీ లేదు. ఇంకా చూపిస్తే0.0.0.0,నడిచే ప్రవర్తన మీరు మార్చిన ఫైల్ను చదువుతుట లేదు.
అప్పటికి క్లయెంట్నుంచి పరీక్ష చేయండి, ఎందుకంటే అది మాత్రమే కీలకమైన పక్షం. ఒక ప్రశ్నతోdig @10.6.0.1 example.comయూజర్ అనుసరిస్తున్న మార్గాన్ని వ్యాయామాలు చేయడం, మరియు హోస్ట్ పై ఒక క్యాప్చర్tcpdump -ni wg0 udp port 53వైర్లో స్పందన యొక్క మూల చిరునామాను చూపిస్తుంది. దానిని క్లయింట్ యొక్క రిజాల్వర్ సెట్టింగ్లోని చిరునామాతో పోల్చండి; అవి సమానమైతే, టైమౌట్ అనేది రహస్యంగా ఉండటం ఆగిపోతుంది.
ip route get 10.6.0.2మిగిలిన ఏదైనా విచిత్రతను వివరిస్తుంది, ఎందుకంటే ఇది ఇంటర్ఫేస్ మరియు హోస్ట్ క్లయింట్కి తిరిగి ఉపయోగించే మూలాన్ని ప్రింట్ చేస్తుంది. ఆ అవుట్పుట్ LAN ఇంటర్ఫేస్ను పేరు చేస్తే, బైండ్ మార్పు మొత్తం పరిష్కారం కాదు మరియు రూటింగ్ పట్టిక తర్వాత చదవాల్సిన విషయమే ఉంటుంది.
బైండ్ సెట్టింగ్ పరిష్కరించలేని విషయాలు
లిసనర్ పిన్నింగ్, టన్నెల్ సబ్నెట్ను మినహాయించిన యాక్సెస్ లిస్ట్, ప్రశ్నను అనుమతించే కానీ స్పందనను అనుమతించని ఫైర్వాల్ రూల్, లేదా WireGuard పూల్కి తిరిగి రూట్ లేకపోవడం వంటి సమస్యలను తిరిగి సరి చేయదు. అవి మూల చిరునామా కంటే ముందు లేదా తరువాత విఫలమవుతాయి, మరియు ప్రతి ఒక్కదానికి వేర్వేరు యజమాని ఉంటాడు.
ఇది కూడా మార్చదురిజాల్వర్ ఫార్వర్డ్ చేసే పై భాగాన్ని., ప్రైవేట్ పేరుకు ప్రైవేట్ సమాధానాన్ని తిరస్కరిస్తుందో లేదో రీబైండింగ్ రక్షణ, లేదా క్లయింట్ తన సొంత సెర్చ్ డొమైన్లను ఎలా అన్వయిస్తుందో. ఇవి వేరైన నియంత్రణలు. సమాధానం మూలం తప్పుగా ఉన్నప్పుడు బైండ్ చిరునామాను మార్చండి, మరియు అది తప్పు లేకపోతే ఇంకేదైనా మార్చండి.