Weekend Prosjekt: Sette opp DNS-tjeneste Discovery

DNS-tjeneste Discovery (DNS-SD) er en del av Zeroconf nettverk, som gjør at servere og klienter i et IP-nettverk for å utveksle sine beliggenhet og tilgang detaljer rundt LAN uten å kreve noen sentral konfigurasjon . De fleste Linux-distribusjoner forsyne Avahi biblioteket for Zeroconf støtte, men ikke på langt nær så mange brukere dra nytte av det. La oss se på en lett-å-set-up bruk for DNS-SD: gi automatiske bokmerker til tjenester. Alt som trengs er en Apache-modul og en Firefox-utvidelse.

Bakgrunn

Essensen av DNS-SD er at Zeroconf bærende programmer eller maskinvareenheter kringkaste en DNS SRV record (av den typen typisk brukes i statisk DNS til å peke på en vert og port nummer combo) annonserer seg selv, og alle andre på nettverket hører det og tar til etterretning. De gjør sendingen i løpet av multicast-DNS (mDNS), som er en protokoll som stammer fra normal DNS, men ved hjelp av spesiell, lokal-bare " multicast " adresser og den reserverte .local
pseudo-domene.

Systemet er beslektet med Universal Plug-and-Play (UPnP), bortsett fra at den håndterer flere typer tjenester, og bygger mer direkte på toppen av DNS. Den mDNS /DNS-SD pair viktigste backer er Apple, og UPnP s er Microsoft, slik som du kanskje skjønner, det er heller ikke sannsynlig å gi opp og begynne å støtte den andre. Det er håp for en samlende IETF protokollen i fremtiden, men i øyeblikket mDNS /DNS-SD er nok godt støttet av åpen kildekode Avahi bibliotek som Linux-brukere kan begynne å jobbe med det i dag.

I Apple World, skrivere og chat-klienter vanligvis bruker mDNS å annonsere sin tilgjengelighet. Men det er en lang liste over programtyper som kan annonsere over systemet, inkludert VoIP-klienter og servere (for eksempel Asterisk), lukket krets videoenheter, og med samarbeids redaktører (som Gobby). I hovedsak kan en hvilken som helst tjeneste som kan beskrives i en SRV record bli annonsert; det bare behov for å gi et tjenestenavn, en transport-protokollen (TCP eller UDP), og porten og vertsnavnet til serveren der det kan nås. Den mDNS .local domene tillater deltar enheter for å tildele seg selv nås vertsnavn.

Med serveren riktig konfigurert, vil DNS-SD stabelen på alle klientmaskiner fange og katalogisere de lokale tjenestene automatisk, for bruk av applikasjoner på system. På en Linux-boks, hører Avahi og notater mDNS meldinger, og en interessert kunde (si, en chat app) spør Avahi om det er noen XMPP servere nærliggende å snakke med. Tilkoblingen er gjort, og Voil à, du begynner å prate.

Oppdage Noen Services

Det er lett å forestille seg hvordan DNS-SD kunne ta smerten ut av noen typisk vanskelige å konfigurere programmer som VoIP, men hvis du er ny på DNS-SD er det enklere steder å starte, for eksempel med god gammeldags HTTP webservere. Hvis du er som meg, er din viktigste Linux boksen kjører en rekke web-grensesnitt for lokale tjenester: phpMyAdmin, CUPS administrasjon, Webmin eller annen config verktøyet (i mitt tilfelle, jeg har også en X10 hjemme automasjon front-end og MythWeb MythTV grensesnitt løping). Du kan også ha arbeidsrelaterte tjenester som kjører, for eksempel en Bugzilla forekomst eller nettverksadministrasjon arbeidsplass, eller til og med en grei intranett.

Den samlende prinsipp er at disse er alle web-tjenester du kanskje har lyst til å få tilgang fra mer enn én maskin på LAN. Du kan manuelt legge inn bokmerker på hver maskin, eller bruke en synkroniseringsverktøyet som Firefox Sync eller Xmarks, men disse strategiene gjør du velge mellom ensformig arbeid og potensielle sikkerhetsrisikoer - for ikke å nevne de krever oppdatering alle klientmaskinene når det er en forandring. Det er nettopp problemet Zeroconf nettverk ble utviklet for å løse.

Developer Andrew Tunnell-Jones har skrevet en liten, men svært nyttig utvidelse som legger DNS-SD støtte til Firefox. Koden er vert på Github, men du kan installere utvidelsen i seg selv, " DNSSD for Firefox, " gjennom addons.mozilla.org nettstedet. Det krever Firefox 4.0 eller nyere (ingen ord ennå på nettopp utgitt Firefox 5, det ser ikke ut som noe relevant er endret i Firefox selv, men add-ons system er notorisk pedantisk om versjonsnummer), og en arbeider Zeroconf gjennomføring. For Linux, fungerer Avahi helt fint, og Mac OS X-brukere vil allerede ha Apples Bonjour installert. Windows-brukere kan installere Apple-gitt Bonjour-for-Windows-pakken, som Tunnell-Jones linker til fra utvidelsen siden.

Når du starter Firefox, legger forlengelsen en meny merket DNSSD til navigasjonsverktøylinjen (mellom forover /tilbake-knapper og URL-bar) og til Bokmerker-menyen. Klikk på den, og du vil se en liste over alle de lokale HTTP-servere oppdaget av din Avahi eller Bonjour-tjenesten: ingen konfigurasjon er nødvendig. Hvis du ønsker å dobbeltsjekke utvidelsen liste, kan du kjøre avahi-bla --Alle fra kommandolinjen.

Hvis du kjører GNOME, bør du også se en stasjonær varsel dukker opp når forlengelses merknader en ny tjeneste (selv for de fleste tjenester, vil dette bare være ved oppstart tid). Dette alternativet kan konfigureres i innstillingene, som du kan få til gjennom Add-ons Manager.

Det fungerer, og det er automatisk, men det er noen quirks å være klar over. Først gjør du ikke (ennå) har muligheten til å velge hvor DNSSD menyen vises. Plassere den i navigeringslinjen er fornuftig fordi det er den ene verktøylinjen nesten garantert å være til stede, men å sette den i favoritter verktøylinjen synes å være mer fornuftig for meg - det virker som et naturlig supplement til Firefox automatiske " Mest besøkt " og " Nylig lagt " bokmerkemapper. For det andre, selv om du kan få tilgang til DNSSD menyen via Bokmerker-menyen, kan du ikke flytte den rundt i bokmerkene dine til et mer passende sted. Jeg spurte Tunnell-Jones om begge disse alternativene, imidlertid, og det høres ut som de er muligheter for fremtidige utgivelser.

Du kan sikkert tenke på en håndfull lokale web-tjenester du vil automatisk annonsere rundt kontoret eller hjemmenettverk, men oddsen er at de fleste av dem ikke annonsere i løpet mDNS out-of-the-box. I mitt tilfelle, den eneste som kjører serveren som gjorde gi et webgrensesnitt i løpet av DNS-SD var MT-DAAP audio server. Å få andre tjenester for å kunngjøre seg selv, trenger du mod_dnssd.

Beliggenhet, beliggenhet, beliggenhet

Mod_dnssd er en Apache-modul som gir enkel mDNS /DNS-SD støtte til Apache- vert nettsteder, med et minimum av konfigurasjon oppstyr. Den nyeste versjonen er 0.6, som støtter Apache 2.2, selv om det er eldre versjoner for de som fortsatt kjører Apache 2.0 for noen grunn.

Forfatteren, Lennart Poettering, er best kjent som vedlikeholdPulseAudio (som, ja bruker mDNS /DNS-SD å finne andre nettverksPulseAudio kilder på LAN). Docs på nettstedet er en fin introduksjon, men Poettering har skrevet en mer omfattende how-to på sin blogg. For å få det til å fungere, må du installere modulen (pakker er tilgjengelig på nettstedet, men de fleste distribusjoner tilbyr det også), og sørg for at Apache laster det ved oppstart (sjekk din distro dokumentasjon for detaljer, eller redigere /etc/apache2/apache2.conf hvis du installerer fra kilde).

For å bruke modulen, må du først aktivere det ved å plassere DNSSDEnable på direktivet i Global Environment delen av apache2.conf. Med denne konfigurasjonen alene, vil Apache annonsere alle de VirtualHosts løpet mDNS /DNS-SD - men kundene vil ha problemer med å koble til dem hvis du ikke merke dine VirtualHosts med fullt kvalifiserte domenenavn

For. litt mer finkornet kontroll, kan du legge til en DNSSDServiceName " hva du ønsker å annonsere det som " direktiv til hver virtuellverten eller Beliggenhet blokken. Den Tjeneste du tildeler vil være den bruker synlig etikett sett i DNSSD menyen tilbys av Firefox-utvidelsen, slik at du kan gi lett å huske, LAN-brede etiketter til din bug tracker, Apt-CacherNG kontrollpanelet, eller hvilken som helst annen nettstedet. Men husk å ta med serverens navn hvis du kjører flere webservere på LAN, lest brukerne blir forvirret.

Som standard annonserer mod_dnssd ressurser Apache som HTTP tjenester (dvs. bruker _http._tcp SRV record ). Som gir mening for de fleste web-tjenester, men du kan også endre det til ordentlig annonsere andre programmer, for eksempel WebDAV eller RSS-feeds. Bare legg til DNSSDServiceTypes direktivet til Apache-konfigurasjonen, etterfulgt av et mellomrom separert liste over tjenestetyper du ønsker å annonsere - enten for serveren som en helhet, virtuellverten, eller plassering, avhengig av hvor du setter direktivet.

Det er hva jeg kaller tjenesten

Selvfølgelig, Apache pluss Firefox kombinasjon skraper bare overflaten av hva DNS-SD som helhet er i stand til, men som stadig flere tjenester bruker HTTP, det er minst et nyttig utgangspunkt. Du kan spare deg selv noen problemer med DNS-SD-muliggjør dine Intranett-steder og la brukerne finner dem automatisk. Selvfølgelig, du gjør
fortsatt trenger å ta forholdsregler for å beskytte dine tjenester. DNS-SD-tjenester vil kun være synlig for LAN-klienter, men hvis du ikke vil at dette skal inkludere WiFi besøkende, bør du partisjonere dem ut i et annet subnett helt - og det sier seg selv at admin paneler burde være passord -beskyttede

Men det er en annen subtil tilstand pålegges av denne ordningen. det krever endring Firefox, klientprogrammet. Så selv om det er lett å forestille DNS-SD-annonserte bokmerker være nyttig i et offentlig miljø (si, en Internett-kafé), du fortsatt ikke kan forvente besøkende vandre inn fra gaten for å ha rett til forlengelse installert. I mitt sinn, DNS-SD, som Microformats, er en teknologi som Firefox egentlig burde støtte off-the-sokkel. Det er ingen grunn til å ikke, med mindre du gjør sikkerheten argument - men ærlig talt, er ikke en tjeneste i fare noe bedre beskyttet bare fordi det er un-annonseres. Kanskje Tunnell-Jones utvidelsen vil ha en hånd i å øke bevisstheten om fordelene som tilbys av DNS-SD. I det minste, kan du utnytte at bekvemmelighet selv, og det er en ganske god start. Anmeldelser