Cén fáth a réitítear ainmneacha óstach inmheánacha i dig ach a dteipeann iad i curl ar VPN
Freagraíonn dig, ach tuairiscíonn curl nach féidir leis an óstach a réiteach. Déan comparáid idir an dá shlabhra lorg, ansin socraigh nsswitch, DNS in aghaidh an naisc nó iarmhír chuardaigh mhícheart.
Tá do ríomhaire glúine ar an VPN, freagraíonn dig service.internal.example le seoladh 10.x, agus fós tagann curl amach le Could not resolve host. Ní hé an tollán an fhadhb: d’iompair sé an cheist dig gan gearán. Is é an difríocht cé a chuireann an cheist. Seolann dig ceist amháin chuig freastalaí amháin a ainmníonn tú, agus téann curl trí shlabhra lorg an chórais oibriúcháin, agus tá a rialacha féin ag an slabhra sin faoi cé acu freastalaí a chuirtear ceist air.
Dá lorg ar an ainm céanna
Is stub resolver é dig ann féin. Léann sé /etc/resolv.conf, roghnaíonn sé ainmfreastalaí, seolann sé ceist A nó AAAA amháin agus priontálann sé an freagra. Sáraíonn sé nsswitch go hiomlán agus níl a fhios aige faoin staid in aghaidh an naisc a choinníonn systemd-resolved nó NetworkManager taobh amuigh den chomhad sin, agus is é sin an fáth gur féidir le freagra dig a bheith ceart agus fós gan aon rud a insint duit faoin méid a fheicfidh d’fheidhmchlár.
Glaonn feidhmchláir ar getaddrinfo, agus téann getaddrinfo trí shlabhra níos faide: ord modúl nsswitch, ansin an modúl a láimhseálann an t-ainm, agus ansin an réiteoir a thógtar ó chumraíocht an naisc reatha. Ar mheaisín systemd téann an cheist chuig 127.0.0.53 agus roghnaíonn systemd-resolved freastalaí uas-sreafa in aghaidh an naisc bunaithe ar an bhfearann ródaithe atá ceangailte leis an gcomhéadan tun.
Déanann dhá ordú na sraitheanna sin a scaradh gan buille faoi thuairim:
getent ahosts service.internal.example
resolvectl query service.internal.example
Úsáideann getent an chonair chéanna le curl, mar sin aimsíonn teip getent in aice le dig a oibríonn an locht sa pholasaí lorg seachas i ródú paicéad. Priontálann resolvectl query an comhéadan agus an t-uas-sreab freisin a thug an freagra, rud a thaispeánann arbh é nasc an tolláin nó an nasc fisiceach a bhuaigh an cinneadh.
Léigh an réiteoir a úsáideann an feidhmchlár i ndáiríre
Gintear /etc/resolv.conf ar fhormhór na ndeascbord, agus tá trí bhealach ag cliant VPN idirghníomhú leis: ainmfreastalaí a chur chun tosaigh, an comhad a fhorscríobh, nó a chuid freastalaithe a thabhairt do NetworkManager agus ligean don daemon é a athscríobh. Ní choinníonn ach an tríú patrún DNS in aghaidh an naisc, mar fanann na freastalaithe ceangailte le comhéadan in ionad iad a leathadh isteach i liosta domhanda amháin.
Ar chórais NetworkManager braitheann an toradh ar an gcúla-chríoch i /etc/NetworkManager/NetworkManager.conf:
[main]
dns=systemd-resolved
Le dns=default déantar freastalaithe an chliaint a chónascadh isteach i resolv.conf san ord a bhuann, agus is féidir lorg príobháideach a sheoladh chuig an réiteoir poiblí fós. Le cúla-chríoch a thuigeann naisc, systemd-resolved nó dnsmasq, fanann freastalaithe an tolláin teoranta don tollán agus ní théann ann ach ainmneacha a mheaitseálann a fhearann ródaithe. Is é an teorannú sin a chiallaíonn split DNS i gcleachtas, agus is é an píosa sin is minice atá in easnamh nuair a mhaíonn cliant go dtacaíonn sé leis.
Léigh an staid sula n-athraíonn tú rud ar bith:
resolvectl status
resolvectl dns tun0
Teastaíonn uait an comhéadan tun a fheiceáil liostaithe le freastalaí DNS agus le fearann ródaithe don iarmhír phríobháideach, arna thaispeáint mar ~internal.example. Ciallaíonn sé nach bhfuil aon fhreastalaí ar an nasc nár sheol an cliant aon rud. Ciallaíonn freastalaí gan fhearann go dtéann gach lorg ann nó nach dtéann aon cheann, ag brath ar an gcliant, agus ní split DNS ceachtar acu.
San áit a gcuireann nsswitch deireadh leis an lorg go luath
Seo é an chuma a bhíonn ar líne deascbord caighdeánach:
hosts: files mdns4_minimal [NOTFOUND=return] resolve [!UNAVAIL=return] dns myhostname
Láimhseálann mdns4_minimal DNS multicast agus éilíonn sé gach ainm a chríochnaíonn le .local. Críochnaíonn seirbhís Kubernetes ar nós api.infra.svc.cluster.local le .local freisin. Nuair a thuairiscíonn an modúl mDNS NOTFOUND, cuireann an gníomh [NOTFOUND=return] deireadh leis an lorg ar fad in ionad leanúint ar aghaidh chuig an modúl dns, mar sin ní sheoltar an t-ainm chuig réiteoir an VPN riamh. Sáraíonn dig an comhad go hiomlán, agus sin go beacht an fáth nach n-aontaíonn an dá uirlis.
Sin an chodarsnacht is géire sa fhadhb seo, agus tagann sé síos ar fhocal amháin i gcomhad cumraíochta atá níos sine ná do VPN. Má athraíonn tú an gníomh go [NOTFOUND=continue] coinnítear mDNS le haghaidh printéirí agus gléasanna áitiúla agus ligeann sé do DNS an t-ainm a fheiceáil. Oibríonn sé freisin an líne a athsholáthar le hosts: files dns agus tá sé níos boirbí: fágann sé réiteach .local ar lár don phrintéir a úsáideann tú i ndáiríre.
Ainmneacha a chónaíonn in aon ghréasán amháin
Tá criosanna príobháideacha údarásach in aon áit amháin. Freagraítear ainm AWS ar nós ip-10-0-4-31.eu-west-1.compute.internal trí réiteoir VPC an réigiúin sin, agus ní bhíonn sé amhlaidh ach fad a bhíonn do chríochphointe VPN sa réigiún céanna leis an acmhainn. Ceangail le críochphointe i Frankfurt, cuir ceist ar ainm compute.internal ó Éirinn, agus ní chabhróidh aon socrú áitiúil: níl an crios a choinníonn an taifead sroichte as sin.
Táirgeann fearainn chuardaigh an íomhá mhalartach. Comhlánaítear service lom leis an iarmhír a mheasann an réiteoir atá infheidhme, agus le nasc VPN féadann an fearann áitiúil an ceann corparáideach a bhaint. Cuir ceist le ponc deiridh chun an buille faoi thuairim a bhaint, getent ahosts service.internal.example., agus má oibríonn sé sin agus an t-ainm gearr ag teip, is é an fearann cuardaigh ar an tollán an ceartú, ní seoladh an fhreastalaí.
Cuireann cliaint bhainistithe tríú sraith os cionn réiteoir an chórais. Is féidir le próifíl VPN Windows a bheartas réitigh ainmneacha féin, rialacha in aghaidh an aip agus tábla NRPT a iompar a bhíonn i bhfeidhm fiú nuair a bhíonn an tollán síos. Coinníonn feidhmchláir a bhfuil a gcuid taisce DNS féin acu, rud a fhágtar coitianta i runtime .NET agus Java, teip atá as dáta i bhfad tar éis an slabhra a shocrú. Cumraíonn cliaint Apple split DNS trí fhearainn mheaitseála sna socruithe DNS seachas trí resolv.conf, agus féadann Chromium nó Firefox i mód DNS slán réiteoir an chórais a sheachaint d’ainmneacha poiblí. Déanann tagairt Microsoft um réiteach ainmneacha VPN cur síos ar thaobh Windows na sraithe polasaí sin.
Cinneadh cén sraith atá le socrú
Oibrigh ón symptom go dtí an tsraith in ionad iarrachtaí a dhéanamh in ord:
| Symptom | What it means | Check first |
|---|---|---|
| dig answers, getent fails | lookup chain, not the packet path | nsswitch line and resolvectl status |
| Timeout rather than NXDOMAIN | private resolver unreachable through the tunnel | resolvectl dns tun0, route to that address |
| NXDOMAIN | an authority answered and does not know the name | zone owner, endpoint region |
| FQDN works, short name fails | search suffix mismatch | resolvectl domain on the tun link |
| getent works, app fails | app cache or its own resolver | restart the app, check secure DNS |
Iompraíonn dhá ró an chuid is mó den mheáchan. Is fadhb inrochtaineachta é amúchadh: níl an réiteoir príobháideach ag freagairt tríd an tollán, mar sin seiceáil an bealach chuig a sheoladh agus an é freastalaí DNS an naisc an ceann a cheapann tú. Is fadhb údaráis é NXDOMAIN: d’fhreagair rud éigin agus níl a fhios aige an t-ainm, rud a dhíríonn ar an gcrios, ar an réigiún nó ar réiteoir nár cheart dó an cheist a fháil riamh.
Is é an ró deireanach an ceann a chailleann daoine toisc go bhfuil an chuma ar an dá leath go n-éiríonn leo. Is éard atá in ainm gearr a réitítear go difriúil ón FQDN míchomhlacht iarmhíre, agus ní athróidh athnascadh an tolláin cé acu iarmhír a sheolann an cliant.
Gabhadh an staid sula n-athraíonn tú comhad cumraíochta, ionas gur féidir leat a rá ar dhearna an t-athrú aon rud:
resolvectl status > before.txt
getent ahosts service.internal.example >> before.txt
Rith na seiceálacha san ord seo agus stad ag an gcéad cheann a theipeann. Caithfidh getent agus resolvectl query aontú; má theipeann getent agus dig ag freagairt, fan sa slabhra lorg agus ná bain le ródú. Caithfidh resolvectl status freastalaí DNS agus fearann ródaithe a thaispeáint ar an gcomhéadan tun. Ní cheadaítear do nsswitch filleadh go luath ar NOTFOUND don iarmhír atá á tástáil agat. Caithfidh an t-ainm a bheith údarásach sa ghréasán a bhfuil do chríochphointe ceangailte leis, tástáilte le ponc deiridh. Ní cheadaítear don fheidhmchlár a thaisce féin nó forshocrú DNS slán a choinneáil.
Socraigh an chéad sraith a theipeann amháin, ansin rith na horduithe céanna arís. Fágann dhá athrú ag an am céanna thú gan a bheith in ann a rá cé acu a bhí tábhachtach, agus tosaíonn an chéad chliseadh eile an t-imscrúdú ón tús.