Jūsų nešiojamasis kompiuteris išsprendžia intranet.corp per tunelį, o gitlab.com toliau eina pas teikėjo sprendėją, ir tai yra sąranka, kuri veikia taip, kaip suprojektuota. Ją sukūrė du atskiri sprendimai: vardų atitikimo taisyklė parinko sprendėją, o maršrutas grąžino atsakymą. Sulaužykite bet kurį iš jų ir naršyklė parodo gedimą, kuris iš išorės atrodo taip pat. Dauguma ataskaitų apie padalintą DNS aprašo antrąjį gedimą, kartu cituodamos įrodymus apie pirmąjį.

Dvi pusės gyvena skirtingose vietose ir paprastai jas redaguoja skirtingi žmonės. Viena yra DNS politika, prijungta prie VPN profilio, kita yra maršrutas, kurį tunelis įdiegia arba sulaiko. Derinimas sustoja, kai niekas nenustato, kuri pusė iš tikrųjų pasikeitė.

Du sprendimai, paslėpti vienoje užklausoje

Vardo pusė yra politikos objektas, o ne maršrutas. Windows tai vardų sprendimo politika VPN profilyje; Apple platformose atitikimo domenų rinkinys DNS nustatymų objekte; Linux tai maršrutizavimo domenas, padalinto sprendėjo eilutė arba vardų tarnybos perjungiklio tvarka. Kelio pusė yra įprastas maršrutizavimas, įdiegtas tunelio arba rankomis, ir jis neturi supratimo, kas yra pagrindinio kompiuterio vardas. Profilis, kuris leidžia priesagą, tik nusprendžia, kas atsakys; jis niekada nepadaro atsakymo pasiekiamo.

Greitas simptomų testas juos atskiria: pakeiskite vardą adresu. Jei adresas veikia, kelias tvarkingas, o taisyklė neteisinga. Jei adresas irgi nepavyksta, taisyklė gali būti teisinga, o kelio gali trūkti.

Kaip kiekviena platforma išreiškia tą pačią vardo taisyklę

Ketini yra toks pat, o laukų pavadinimai ne. Pavyzdys, nukopijuotas iš vieno kliento į kitą, išanalizuojamas švariai ir niekada nesutampa. Trys formos atrodo taip:

PlatformWhere the rule livesWhat usually breaks
Windowsname-resolution policy on the VPN profileprecedence against the interface suffix list
Apple platformsmatch domains on the DNS settings objectdomains attached to the wrong extension
Linuxrouting domain, split resolver, nsswitch orderthe suffix written the wrong way round

Atitikimo arba maršrutizavimo domenas yra priesagos testas, todėl intranet.corp apima git.intranet.corp ir neapima corp.intranet, o jo apvertimas yra dažniausia visos konfigūracijos klaida. Windows neša susiejimą kaip prie profilio prijungtą vardų sprendimo politiką, su savo prioritetų tvarka bet kokio sąsajos jau turėto priesagų sąrašo atžvilgiu. Apple platformos prijungia atitikimo domenus prie tinklo plėtinio DNS nustatymų objekto, o sistema juos taiko kiekvienam apribotam sprendėjui. Nė viena iš šių formų nėra maršrutas, ir nė viena negali padaryti nepasiekiamo adreso pasiekiamu. Windows vardų sprendimo politika nuoroda išvardija tos platformos laukų pavadinimus ir prioritetų taisykles, ir jos nėra tos, kurias naudoja Apple ar systemd dokumentai.

Teisingam atsakymui vis tiek reikia kelio

Sprendėjo atsakymas yra tik adresas, ir programa vis tiek turi jį pasiekti. Padalinto tunelio dizainas dažnai stumia 10.20.0.0/16 ir sulaiko numatytąjį maršrutą, todėl vidinis vardas išsprendžiamas, o ryšys tada pakimba. Priešingas atvejis taip pat dažnas: maršrutas yra, viešas sprendėjas į privatų vardą atsako NXDOMAIN, o gedimas registruojamas kaip maršrutizavimo problema. Pirmiau išbandžius kelią, jūs spoksote į maršrutus vardo, kuris niekada nebus išspręstas.

Yra ir trečiasis vartai, kurių neapima nė viena pusė. ACL šliuze, ugniasienės taisyklė arba kliento pusės politika gali numesti ryšį po to, kai abu sprendimai buvo teisingi. Kai vardas išsprendžiamas, maršrutas yra, o ryšys vis tiek baigiasi laiku, nustokite testuoti DNS.

Vardų ir kelių testavimas fiksuota tvarka

Pasirinkite tvarką ir laikykitės jos, kitaip veisitės paskutinį kartą nepavykusį žingsnį. Išspręskite dokumentuotą pilną vidinį vardą, patvirtinkite, kad atsakymas yra adresas, kurį gali nešti maršrutų lentelė, tada pakartokite su viešu vardu, kad įrodytumėte, jog tunelis nepagavo visko. systemd pagrindiniame kompiuteryje užklausa ir sprendėjo maršrutizavimo domenas yra vienos komandos atstumu:

resolvectl query intranet.corp
resolvectl domain
ip route get 10.20.5.10

Windows klientas užduoda tuos pačius du klausimus kitais cmdlet. Antrasis praneša sąsają, kurią sistema iš tikrųjų naudotų:

Resolve-DnsName intranet.corp -Type A
Find-NetRoute -RemoteIPAddress 10.20.5.10

Jei paieška grąžina adresą, o kelio patikra įvardija fizinę sąsają, vardo taisyklė veikė, o maršrutas ne. Jei trumpas vardas nepavyksta, o pilnas išsprendžiamas, priesagų sąrašas neteisingas, o ne sprendėjas.

Kur palyginimas paprastai suklysta

Pirmoji klaida yra klausti nesusijusio viešo sprendėjo apie privatų vardą ir atsisakymą skaityti kaip įrodymą apie VPN. Antroji yra manyti, kad veikianti vieša paieška įrodo tunelio sprendėjo kelią. Trečioji yra traktuoti padalintą tuneliavimą ir padalintą DNS kaip vieną dizaino sprendimą, nors diegimas gali būti teisingas viename ir sugedęs kitame. Kiekviena klaida duoda užtikrintas išvadas iš testo, kuris niekada nepraktikavo kaltinamos dalies.

Naršyklė su savo saugiu DNS taip pat gali apeiti sistemos taisyklę, todėl tai, kad viena naršyklė nepavyksta, o kita pavyksta, nėra prieštaravimas. Palyginkite sprendėją, kuris atsakė, o ne naršyklę, kuri skundėsi.

Kai abi pusės matomos, likęs klausimas yra politikos, o ne techninis: kurios vardų erdvės priklauso organizacijai, kas valdo kiekvieną atsakymą ir kurios jų apskritai turėtų palikti mašiną. Užsirašykite tai prie profilio, nes kitam žmogui, kuris palies taisyklę, to prireiks.

Susiję straipsniai