Kí nìdí tí àwọn orúkọ agbàlejò inú fi ń yanjú nínú dig ṣùgbọ́n tí wọ́n ń kùnà nínú curl lórí VPN
dig ń dáhùn, ṣùgbọ́n curl ń ròyìn pé òun kò lè yanjú agbàlejò náà. Fi àwọn ẹ̀wọ̀n ìwádìí méjì wé, kí o sì tún nsswitch, DNS fún ọ̀nà ìsopọ̀ kọ̀ọ̀kan tàbí àfikún ìwádìí tí kò tọ́ ṣe.
Laptop rẹ wà lórí VPN, dig service.internal.example ń dáhùn pẹ̀lú àdírẹ́sì 10.x, curl sì ṣì ń jáde pẹ̀lú Could not resolve host. Ọ̀nà abẹ́lẹ̀ kì í ṣe ìṣòro: ó gbé ìbéèrè dig kọjá láìsí ìròhìn. Ìyàtọ̀ ni ẹni tí ó ń béèrè ìbéèrè náà. dig ń fi ìbéèrè kan ránṣẹ́ sí server kan tí o dárúkọ, nígbà tí curl ń gba ẹ̀wọ̀n ìwádìí ti ẹ̀rọ ìṣiṣẹ́ kọjá, ẹ̀wọ̀n yẹn sì ní àwọn òfin tirẹ̀ nípa server tí a béèrè.
Ìwádìí méjì fún orúkọ kan náà
dig jẹ́ stub resolver tirẹ̀. Ó ń ka /etc/resolv.conf, ó ń yan server orúkọ, ó ń fi ìbéèrè A tàbí AAAA kan ránṣẹ́, ó sì ń tẹ̀wé dáhùn náà jáde. Ó ń fo nsswitch kọjá pátápátá, kò sì mọ nǹkan kan nípa ipò ọ̀nà ìsopọ̀ kọ̀ọ̀kan tí systemd-resolved tàbí NetworkManager ń tọ́jú ní ìta fáìlì yẹn, ìdí nìyẹn tí dáhùn dig lè tọ́ tí kò sì sọ nǹkan kan fún ọ nípa ohun tí ohun èlò rẹ yóò rí.
Àwọn ohun èlò ń pe getaddrinfo, getaddrinfo sì ń gba ẹ̀wọ̀n gígùn kọjá: ìtòlẹ́sẹẹsẹ àwọn module nsswitch, lẹ́yìn náà module tí ó ń ṣe orúkọ, àti níkẹyìn resolver tí a kọ́ láti inú ìṣètò ìsopọ̀ lọ́wọ́lọ́wọ́. Lórí ẹ̀rọ systemd ìbéèrè náà ń lọ sí 127.0.0.53, systemd-resolved sì ń yan server òkè fún ọ̀nà ìsopọ̀ kọ̀ọ̀kan gẹ́gẹ́ bí ẹ̀ka ìtọ́nisọ́nà tí a so mọ́ interface tun.
Àwọn àṣẹ méjì ń ya àwọn ìpele yẹn kúrò láìṣe àfojúdí:
getent ahosts service.internal.example
resolvectl query service.internal.example
getent ń gba ọ̀nà kan náà bí curl, nítorí náà ìkùnà getent lẹ́gbẹ̀ẹ́ dig tí ń ṣiṣẹ́ ń fi àṣìṣe hàn nínú ìlànà ìwádìí kì í ṣe nínú ìtọ́nisọ́nà pákẹ́tì. resolvectl query tún ń tẹ̀wé interface àti server òkè tí ó fi dáhùn jáde, èyí tí ó fi hàn bóyá ọ̀nà ìsopọ̀ tunnel tàbí ọ̀nà ìsopọ̀ ti ara ló borí ìpinnu náà.
Ka resolver tí ohun èlò náà ń lò ní gidi
A ń dá /etc/resolv.conf lórí ọ̀pọ̀ desktop, client VPN sì ní ọ̀nà mẹ́ta láti bá a lò: fi server orúkọ kún iwájú, kọ sórí fáìlì náà, tàbí fi àwọn server rẹ̀ fún NetworkManager kí o sì jẹ́ kí daemon kọ ọ́ lẹ́ẹ̀kan sí i. Àwùjọ kẹta nìkan ló ń pa DNS ọ̀nà ìsopọ̀ kọ̀ọ̀kan mọ́, nítorí àwọn server ń wà ní ìsopọ̀ mọ́ interface dípò kí a tẹ́ wọn sí àkójọ kan ṣoṣo.
Lórí àwọn ẹ̀rọ NetworkManager àbájáde náà sinmi lórí backend nínú /etc/NetworkManager/NetworkManager.conf:
[main]
dns=systemd-resolved
Pẹ̀lú dns=default a ń dà àwọn server client pọ̀ mọ́ resolv.conf ní ìtòlẹ́sẹẹsẹ tí ó borí, ìwádìí àdáni sì ṣì lè lọ sí resolver gbogbo ènìyàn. Pẹ̀lú backend tí ó yé àwọn ọ̀nà ìsopọ̀, systemd-resolved tàbí dnsmasq, àwọn server tunnel ń wà ní ààlà tunnel, àwọn orúkọ tí ó bá ẹ̀ka ìtọ́nisọ́nà rẹ̀ mu nìkan ló ń lọ síbẹ̀. Ààlà yẹn ni ohun tí split DNS túmọ̀ sí ní ìṣe, ìgbà yẹn sì ni apá tí ó máa ń sọnù jù lọ nígbà tí client kan bá sọ pé ó ń ṣe àtìlẹ́yìn rẹ̀.
Ka ipò kí o tó yí ohunkóhun padà:
resolvectl status
resolvectl dns tun0
O fẹ́ rí interface tun ní àkójọ pẹ̀lú DNS server àti ẹ̀ka ìtọ́nisọ́nà fún àfikún àdáni náà, tí a fi ~internal.example hàn. Kò sí server lórí ọ̀nà ìsopọ̀ túmọ̀ sí pé client kò fi nǹkan ránṣẹ́. Server tí kò ní ẹ̀ka túmọ̀ sí pé àwọn ìwádìí yóò lọ síbẹ̀ pátápátá tàbí kò ní lọ rárá, gẹ́gẹ́ bí client, kò sì sí ọ̀kan nínú àwọn méjèèjì tí í ṣe split DNS.
Ibòmíì tí nsswitch ti parí ìwádìí ní àkókò kùtùkùtù
Ìlà desktop tí ó wọ́pọ̀ rí báyìí:
hosts: files mdns4_minimal [NOTFOUND=return] resolve [!UNAVAIL=return] dns myhostname
mdns4_minimal ń ṣe multicast DNS, ó sì ń béèrè fún gbogbo orúkọ tí ó parí ní .local. Iṣẹ́ Kubernetes bí api.infra.svc.cluster.local tún parí ní .local. Nígbà tí module mDNS bá ròyìn NOTFOUND, ìgbésẹ̀ [NOTFOUND=return] parí gbogbo ìwádìí náà dípò kí ó tẹ̀síwájú sí module dns, nítorí náà a kì í fi orúkọ náà ránṣẹ́ sí resolver VPN. dig ń fo fáìlì náà kọjá pátápátá, ìdí nìyẹn tí àwọn irinṣẹ́ méjì kò fi fohùn ṣọ̀kan.
Ìyẹn ni ìyàtọ̀ tí ó mú jù lọ nínú ìṣòro yìí, ó sì wà lórí ọ̀rọ̀ kan nínú fáìlì ìṣètò tí ó ti dagba ju VPN rẹ lọ. Yíyí ìgbésẹ̀ náà padà sí [NOTFOUND=continue] ń pa mDNS mọ́ fún àwọn ẹ̀rọ ìtẹ̀wé àti ẹ̀rọ àdúgbò nígbà tí DNS lè rí orúkọ náà. Fífi hosts: files dns rọ́pò ìlà náà tún ń ṣiṣẹ́, ó sì le koko: ó ń fi ìyánjú .local sílẹ̀ fún ẹ̀rọ ìtẹ̀wé tí o ń lò ní gidi.
Àwọn orúkọ tí ó ń gbé nínú nẹ́tíwọ́kì kan ṣoṣo
Àwọn agbègbè àdáni ní àṣẹ ní ibi kan ṣoṣo. Orúkọ AWS bí ip-10-0-4-31.eu-west-1.compute.internal ni a ń dáhùn nípasẹ̀ resolver VPC ti ẹkùn yẹn, àti nígbà tí ibi ìparí VPN rẹ wà ní ẹkùn kan náà pẹ̀lú ohun àmúṣọrọ̀ náà nìkan. So mọ́ ibi ìparí ní Frankfurt, béèrè orúkọ compute.internal láti Ireland, kò sí ìṣètò àdúgbò tí yóò ràn ọ́ lọ́wọ́: agbègbè tí ó ní àkọsílẹ̀ náà kò lè dé ibẹ̀.
Àwọn ẹ̀ka ìwádìí ń dá àwòrán ìdàkejì. A ń fi àfikún tí resolver rò pé ó yẹ kún service tí kò ní nǹkan, pẹ̀lú ọ̀nà ìsopọ̀ VPN ẹ̀ka àdúgbò lè borí ti ilé iṣẹ́. Béèrè pẹ̀lú kókó ní ìparí láti yọ àfojúdí kúrò, getent ahosts service.internal.example., tí ìyẹn bá sì ṣiṣẹ́ nígbà tí orúkọ kúkúrú ń kùnà, àtúnṣe náà ni ẹ̀ka ìwádìí lórí tunnel, kì í ṣe àdírẹ́sì server.
Àwọn client tí a ń ṣàkóso ń fi ìpele kẹta kún orí resolver ẹ̀rọ náà. Profaili VPN Windows lè gbé ìlànà ìyánjú orúkọ tirẹ̀, àwọn òfin fún ohun èlò kọ̀ọ̀kan àti tábìlì NRPT tí ó wúlò pàápàá nígbà tí tunnel wà ní ìsàlẹ̀. Àwọn ohun èlò tí ó ní kásẹ̀ DNS tirẹ̀, tí ó wọ́pọ̀ nínú .NET àti Java, ń pa ìkùnà àtijọ́ mọ́ pẹ́ lẹ́yìn tí a ti tún ẹ̀wọ̀n náà ṣe. Àwọn client Apple ń ṣètò split DNS nípasẹ̀ àwọn ẹ̀ka ìbámu nínú àwọn ìṣètò DNS dípò resolv.conf, Chromium tàbí Firefox nínú ipò DNS ààbò sì lè fo resolver ẹ̀rọ kọjá fún àwọn orúkọ gbogbo ènìyàn. Ìwé ìtọ́kasí Microsoft nípa ìyánjú orúkọ VPN ń ṣàlàyé ẹ̀gbẹ́ Windows ti ìpele ìlànà yẹn.
Pinnu ìpele tí ó yẹ kí a túnṣe
Ẹ ṣiṣẹ́ láti àmì àìsàn dé ìpele dípò kí ẹ gbìyànjú àwọn àtúnṣe lẹ́sẹẹsẹ:
| 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 |
Ìlà méjì ni ó ń ru ẹrù tí ó pọ̀ jù. Àkókò píparí jẹ́ ìṣòro ìdèlọ́wọ́: resolver àdáni kò dáhùn nípasẹ̀ tunnel, nítorí náà ṣàyẹ̀wò ọ̀nà sí àdírẹ́sì rẹ̀ àti bóyá DNS server lórí ọ̀nà ìsopọ̀ ni èyí tí o rò. NXDOMAIN jẹ́ ìṣòro àṣẹ: nǹkan kan dáhùn, kò sì mọ orúkọ náà, èyí tí ó ń tọ́ka sí agbègbè, ẹkùn tàbí resolver tí kò yẹ kí ó gba ìbéèrè náà rárá.
Ìlà ìkẹyìn ni èyí tí àwọn ènìyàn ń pàdánù nítorí àwọn ìlà méjèèjì dàbí àṣeyọrí. Orúkọ kúkúrú tí ó ń yanjú yàtọ̀ sí FQDN jẹ́ àìbámu àfikún, àti sísopọ̀ tunnel lẹ́ẹ̀kan sí i kò ní yí àfikún tí client ń fi ránṣẹ́ padà.
Ṣàkọsílẹ̀ ipò kí o tó ṣàtúnṣe fáìlì ìṣètò kan, kí o lè sọ bóyá àtúnṣe náà ṣe nǹkan kan:
resolvectl status > before.txt
getent ahosts service.internal.example >> before.txt
Ṣe àwọn àyẹ̀wò ní ìtòlẹ́sẹẹsẹ yìí kí o sì dúró ní èyí tí ó kùnà lákọ̀ọ́kọ́. getent àti resolvectl query gbọ́dọ̀ fohùn ṣọ̀kan; tí getent bá kùnà nígbà tí dig ń dáhùn, dúró nínú ẹ̀wọ̀n ìwádìí, má ṣe fi ọwọ́ kàn ìtọ́nisọ́nà. resolvectl status gbọ́dọ̀ fi DNS server àti ẹ̀ka ìtọ́nisọ́nà hàn lórí interface tun. nsswitch kò gbọ́dọ̀ padà ní àkókò kùtùkùtù pẹ̀lú NOTFOUND fún àfikún tí o ń dán wò. Orúkọ náà gbọ́dọ̀ ní àṣẹ nínú nẹ́tíwọ́kì tí ibi ìparí rẹ so mọ́, tí a dán wò pẹ̀lú kókó ní ìparí. Ohun èlò náà kò gbọ́dọ̀ tọ́jú kásẹ̀ tirẹ̀ tàbí ìgbékalẹ̀ DNS ààbò.
Tún ìpele àkọ́kọ́ tí ó kùnà nìkan ṣe, kí o sì tún àwọn àṣẹ kan náà ṣe. Àwọn ìyípadà méjì ní àkókò kan ń jẹ́ kí o má lè sọ èyí tí ó ṣe pàtàkì, ìdàrúdàpọ̀ tí ó tẹ̀le yóò sì bẹ̀rẹ̀ ìwádìí láti òdo.