mDNS VPN viduje: kodėl .local vardai neišsprendžiami
Maršrutizuotas VPN perduoda unicast paketus, o ne link-local multicast. Patikrinkite, kas išsprendžiama, kodėl užklausa niekada neateina ir koks pavadinimų dizainas iš tikrųjų veikia.
Jūsų biuro spausdintuvas rodomas kiekvienoje jūsų stalo programoje ir dingsta VPN, nors galite pinginti adresą, kurį, kaip žinote, jis turi. Tunelyje niekas nesugedę: aptikimas ir pasiekiamumas yra atskiros paslaugos, ir pagal nutylėjimą tik viena jų kerta maršrutizuotą tunelį. Toliau pateikti patikrinimai atskiria jas prieš pradedant pridėti maršrutus. Maršrutas negali sutaisyti užklausos, kuri niekada nepaliko jungties.
Patikrinkite, kas išsprendžiama šiandien, ir kas tik atrodo išspręsta
Pirmiausia atskirkite du klausimus: unicast užklausa apie pagrindinio kompiuterio vardą klausia resolverio, o _ipp._tcp paieška klausia vietinės jungties. Linux sistemoje avahi-browse -a rodo, ką gali matyti multicast DNS, o resolvectl query name.local rodo, ką resolverio kamienas daro su tuo vardu. macOS sistemoje dns-sd -B _ipp._tcp išvardija aptiktas paslaugas iš pradžių nereikalaudamas adreso.
Jei adresas atsako, o vardas ne, maršrutizavimas veikia, o aptikimas ne. .local vardas taip pat gali būti atsakytas pačiame pagrindiniame kompiuteryje per nss-mdns, net jei avahi-browse neįdiegtas, todėl sėkmingas getent arba ping į tą vardą nėra įrodymas, kad aptikimas kirto tunelį; paieškos rezultatas ir resolverio rezultatas yra skirtingi įrodymai. Programos kaupia tai, ką aptiko, todėl gedimas dažnai pasirodo praėjus valandoms po prisijungimo, o ne prisijungimo metu. Uždarykite ir vėl atidarykite programą, tada patikrinkite, ar podėlyje esantis įrašas turi vardą, ar adresą, nes adresas veikia dar ilgai po to, kai aptikimas sustojo.
Kodėl užklausa niekada nekerta tunelio
Multicast DNS siunčia užklausas į 224.0.0.251, vietinio tinklo valdymo bloko viduje, UDP prievadu 5353. Maršrutizatoriai nepersiunčia adresų iš to bloko, todėl užklausa lieka jungtyje, į kurią buvo išsiųsta. Siuntėjai taip pat nustato IP TTL arba IPv6 šuolio limitą į 255, kad gavėjas galėtų atmesti paketą, jau kirtusį maršrutizatorių; taip protokolas aptinka klastojimą už jungties ribų, o ne taip jis išlieka vietinis. Vietiškumas ateina iš paskirties adreso, o ne iš vieno šuolio TTL.
Tunelio tipas taip pat svarbus. tun stiliaus sąsaja perduoda IP paketus ir nieko daugiau, todėl jokia multicast grupė jos nekerta. tap stiliaus tiltas praplečia patį transliacijos domeną, todėl kai kurie seni dizainai tiltą rinkosi vietoj maršrutizavimo ir paveldėjo visas tilto atnešamas problemas.
Patikimo LAN išimtis nieko to nekeičia, nes ji nusprendžia, kuris srautas gali naudoti tunelį, o ne moko tunelį persiųsti multicast. Paketas vis dar neturi bendro segmento, kuriame būtų girdimas.
Pasirinkite pavadinimų dizainą, kurį galite išlaikyti
Įmonės ištekliams ilgalaikis atsakymas yra maršrutizuotas pagrindinio kompiuterio vardas, kurį aptarnauja VPN stumiamas resolveris, kartu su padalintu DNS, kad vidiniai vardai eitų į vidinius serverius, o visa kita – ne. Windows tai pateikia kaip vardų sprendimo politikos lentelę, macOS naudoja apibrėžtus resolverius pagal sąsają, o dauguma klientų turi atitinkamą stūmimo nustatymą. Įrenginys išlaiko įprastą vardą vidiniame DNS, o aptikimas nustoja būti kelio dalimi.
Aptikimo tarpinė ar mDNS atšvaitas gali sujungti šią spragą, ir tai yra tikras dizainas su savo pagrindiniu kompiuteriu, savo poveikiu ir savo kliento reikalavimais. Jis neatsiranda todėl, kad pridėjote maršrutą. Niekada nepersiųskite .local užklausų viešajam resolveriui: domenas yra rezervuotas vietiniam multicast naudojimui pagal RFC 6762, o jo siuntimas į išorę sukelia lėtus gedimus ir nereikalingą duomenų atskleidimą.
Tikrinkite paslaugą, o ne vardą
Vardas paieškos sąraše įrodo aptikimo žingsnį, o ne tai, kad paslauga atsako. Atidarykite spausdinimo eilę arba žiniatinklio sąsają ir atlikite tikrą operaciją, tada pakartokite ją po pakartotinio prisijungimo.
Aptikimas agresyviai kaupia vardus, todėl pasenęs įrašas gali atrodyti kaip sėkmė. Jei pasirodo sertifikatas ar autentifikavimo užklausa, tai yra kitas sluoksnis ir atskira problema. Užsirašykite, kurį mechanizmą pakeitėte, resolverį ar aptikimą, kad kitas žmogus neturėtų vėl atidaryti viso klausimo.