Տեղական ցանցի սերվերը հասնում է Azure VM-ին մասնավոր հասցեով և այնուամենայնիվ չի կարողանում լուծել նրա մասնավոր հոսթի անունը, ինչը մարդկանց ստիպում է կոտրված թունել փնտրել։ Թունելը կարգին է։ Բացակայում է DNS սահմանը. տեղական կողմում ոչ ոք չգիտի, որ որոշակի Azure մասնավոր գոտուն պետք է պատասխանի VNet-ի ներսում գտնվող resolver-ը։ Երկու ձևավորում փակում են այդ բացը, և դրանք տարբերվում են նրանով, թե ինչ եք ի վերջո շահագործում, ոչ թե նրանով, թե արդյոք հարցումները աշխատում են։

Թունելը տեղափոխում է հարցումներ, ոչ թե գոտիների գիտելիք

Site-to-site կապը փաթեթներին երթուղի է տալիս երկու ցանցերի միջև։ Այն չի ասում տեղական DNS սերվերին, թե որ անվանատարածքն է պատկանում Azure-ին կամ որ հասցեն պետք է պատասխանի, ուստի հարցումը կամ գնում է ինտերնետ և վերադառնում դատարկ, կամ երբեք չի լքում տեղական resolver-ը։

Ուղղումը երկու կես ունի, որոնք հեշտ է առանձնացնել։ Մի կեսը VNet-ի ներսում գտնվող resolver-ն է, որն ընդունում է թունելով եկող հարցումները։ Մյուս կեսը տեղական կողմի պայմանական forwarder-ն է, որն ուղարկում է ուղիղ մեկ անվանատարածք այդ resolver-ին։ Ոչ մի կես առանձին չի աշխատում։

Ենթադրենք, որ գոտին cloud.corp.example է այս նկարագրության մնացած մասի համար, և բոլոր հասցեները դիտարկեք որպես օրինակ։

Տարբերակ A՝ կառավարվող ներգնա վերջնակետ

Azure DNS Private Resolver-ը տրամադրում է ներգնա վերջնակետ, որն ընդունում է DNS հարցումներ VNet-ից դուրս։ Դուք տեղադրում եք այն հատուկ պատվիրակված ենթացանցում, կապում մասնավոր գոտին այդ VNet-ին և գրանցում այն ներգնա հասցեն, որը ծառայությունը հատկացնում է։

Այնուհետև տեղական DNS սերվերի վրա ստեղծում եք պայմանական forwarder ճշգրիտ անվանատարածքի համար դեպի այդ հասցեն.

Namespace: cloud.corp.example
Forward to: 10.20.2.4

Microsoft-ի հիբրիդ DNS ընթացակարգը փաստագրում է և՛ գոտու կապը, և՛ forwarder-ի քայլը։ Կառավարվող ուղին ձեզ չի թողնում կարկատելու DNS ծրագրակազմ, իսկ վերջնակետի հասցեն մնում է կայուն ռեսուրսի ողջ կյանքի ընթացքում։

Գինը այն է, որ դուք այժմ ունեք resolver ռեսուրս, նրա ենթացանցի պատվիրակումը և դրա ծախսը, ինչը իրական է նույնիսկ շատ փոքր հարցումների ծավալի դեպքում։

Տարբերակ B՝ forwarder VM VNet-ի ներսում

Ավելի հին ձևավորումը DNS ծրագրակազմ է աշխատեցնում VNet-ի սովորական VM-ի վրա՝ Windows DNS, BIND կամ dnsmasq, ընդ որում մասնավոր գոտին կամ տեղական է հոսթավորվում, կամ փոխանցվում է 168.63.129.16 հասցեով Azure resolver-ին։ Տեղական պայմանական forwarder-ը ուղղված է այդ VM-ի մասնավոր հասցեին։

Այս տարբերակը ծանոթ է այն թիմերին, որոնք արդեն շահագործում են DNS սերվերներ, և այն կարող է կրել լրացուցիչ տրամաբանություն, օրինակ՝ մատյանագրում կամ split-horizon պատասխաններ։ Այն նաև ժառանգում է DNS սերվերի բոլոր գործառնական պարտականությունները՝ կարկատում, երկրորդ օրինակ՝ հասանելիության համար, մոնիտորինգ և վերակառուցման ուղի, երբ VM-ը փոխարինվում է և նրա հասցեն փոխվում։

Սովորական VNet հոսթը DNS փրոքսի չէ, քանի դեռ ծառայությունը տեղադրված չէ և թույլտվություն չի ստացել պատասխանել այդ հաճախորդներին, և հենց այդ քայլն են մարդիկ բաց թողնում VM կլոնավորելիս։

Որն է համապատասխանում ձեր շահագործմանը

Համեմատությունը չի վերաբերում նրան, թե որ ձևավորումն է ավելի արագ։ Այն վերաբերում է նրան, թե արդյոք դուք ընդհանրապես ուզում եք շահագործել DNS ծրագրակազմ, և արդյոք հարցումների ծավալը արդարացնում է կառավարվող ռեսուրս, որը հաշվարկվում է ըստ վերջնակետի և ըստ հարցման։

QuestionManaged inbound endpointForwarder VM
Software to patchNoneThe DNS service on every instance
Address stabilityFixed for the resource lifetimeTied to the VM or its reserved address
Availability workHandled by the serviceSecond instance, health checks, failover
Extra logicLimited to resolver featuresWhatever the DNS software supports

Որ տողն էլ որոշի, տեղական forwarder-ի կանոնը նույնն է թվում։ Հենց այս մասն է, որ պետք է գոյություն ունենա երկու ձևավորումներում էլ, և հենց այս մասն է ամենից հաճախ բացակայում, երբ ինչ-որ մեկը հայտնում է, որ լուծումը աշխատում է Azure-ի ներսից, բայց ոչ գրասենյակից։

Ստուգեք ուղին հերթականությամբ

Հաստատեք, որ գոտին կապված է այն VNet-ին, որտեղ գտնվում է resolver-ը, և որ տեղական forwarder-ը նշում է անվանատարածքը, այլ ոչ ծնող տիրույթ։ corp.example-ի forwarder-ը չի համընկնի cloud.corp.example-ի հետ, եթե resolver-ն ինքը չպատվիրակի, և այդ անհամապատասխանությունը տալիս է մաքուր բացասական պատասխան, որը նման է բացակայող գրառման։

Այնուհետև ստուգեք, որ հարցումը հասնում է վերջնակետին. տեղական աղբյուրին անհրաժեշտ է երթուղի դեպի resolver-ի հասցեն և վերադարձի ուղի, և 53 պորտը պետք է թույլատրվի և՛ UDP-ով, և՛ TCP-ով այնտեղ, որտեղ քաղաքականությունը թույլ է տալիս։ NSG-ն չի կարող տրամադրել բացակայող գոտու գրառում, և ճիշտ գոտին չի կարող պատասխանել այն հարցմանը, որը երբեք չի հասնում։

Ախտորոշելիս պահեք պահանջված FQDN-ը ընտրված resolver-ի կողքին, և տարանջատեք ժամանակի սպառումը բացասական պատասխանից։ Ժամանակի սպառումը ուղու կամ քաղաքականության խնդիր է։ Բացասական պատասխանը նշանակում է, որ հարցումը հասավ, և անվանատարածքը չհամընկավ։ Աշխատանքի կարգը՝ կապեք գոտին, ավելացրեք պայմանական forwarder-ը, բացեք 53 պորտը երկու ուղղությամբ, փորձեք մեկ անուն տեղականից, և միայն դրանից հետո նայեք հավելվածի սեփական լիազորությանը։

Առնչվող հոդվածներ