Kirjoittaja Aihe: mDNS  (Luettu 5302 kertaa)

Mistofelees

  • Käyttäjä
  • Viestejä: 661
    • Profiili
mDNS
« : 27.09.18 - klo:19.21 »
Itselle on vielä epäselvää, miten mDNS toimii.
Kun en jaksanut lukea, kirjoitin itse oman ohjelmani.

Itse olen komentanut kaikki mittalaitteeni ja muut koneet lähettämään DHCP:llä saamansa IP:t ja niille annetut nimet http-protokollalla talon  levyserverille.
MIttalaite lähettää tietonsa aina virtakatkon jälkeen.
http oli yksinkertaisin protokolla tälläisen kyhäämiseen.
Jos joku mittalaite katoaa IP-avaruuteen, löydän sen nimen, IP:n ja dokumentoinnin palvelimen ylläpitosivuilta. Kaikkineen koodia ei taida olla kuin alle 20 riviä serverillä. esp8266:ssa ei sitäkään 
Seuraavana askeleena on päivittää osoitetieto palvelimen /etc/hosts -tiedostoon.
(M$Win -koneille en tee mitään, mädäntykööt)


nm

  • Käyttäjä
  • Viestejä: 16428
    • Profiili
Vs: mDNS
« Vastaus #1 : 27.09.18 - klo:21.18 »
Itselle on vielä epäselvää, miten mDNS toimii.
Kun en jaksanut lukea, kirjoitin itse oman ohjelmani.

Ainakin Ubuntussa on vakiona Avahi ja libnss-mdns, joiden avulla muut Ubuntut löytyvät lähiverkosta nimellä koneennimi.local
Tämä ei siis vaadi mitään konfiguraatiota käyttäjän puolesta, kun kyseiset komponentit on asennettu järjestelmään. Toki koneilla on hyvä olla helposti muistettavat nimet. Tässä ohje nimen muuttamiseen tarvittaessa: https://linuxize.com/post/how-to-change-hostname-on-ubuntu-18-04/

Debianiin nuo palikat asentuvat myös helposti:
Koodia: [Valitse]
apt-get install avahi-daemon avahi-discover libnss-mdns
Iltalukemista:
http://0pointer.de/lennart/projects/nss-mdns/#documentation
https://wiki.debian.org/ZeroConf
« Viimeksi muokattu: 27.09.18 - klo:21.20 kirjoittanut nm »

Mistofelees

  • Käyttäjä
  • Viestejä: 661
    • Profiili
Vs: mDNS
« Vastaus #2 : 29.10.18 - klo:11.09 »
Jos kyseessä olisi vain Ubuntu-koneet, ei asiassa olisi mitään ongelmaa.
Ongelma syntyy Arduino-, esp8266 ja vastaavista pikkupalikoista, joihin ei haluaisi rakentaa liian monimutkaisia ja isoja systeemeitä.
Tämä itse käyttämäni mekanismi näyttää olevan ihan hyvä.
Selaimen sivulta löytyy laitteen_nimi:IP:viimeinen_päivityshetki:rakennetietoa
Rakennetietona voi olla laitteen itse ilmoittama anturityyppi
Tiedostoon voi lisäksi itse kirjoittaa kommenttirivejä, joilla voi esimerkiksi kuvata anturin serverilä tarvitsemat ohjelmat ja tiedostot.
Samaan tiedostoon voi tietenkin /ohjata myös serveriin itseensä kytketyt anturit, kun scripteihin lisää osan, joka lähettää tiedostoon pyydetyt tiedot.

nm

  • Käyttäjä
  • Viestejä: 16428
    • Profiili
Vs: mDNS
« Vastaus #3 : 29.10.18 - klo:12.15 »
Jos kyseessä olisi vain Ubuntu-koneet, ei asiassa olisi mitään ongelmaa.
Ongelma syntyy Arduino-, esp8266 ja vastaavista pikkupalikoista, joihin ei haluaisi rakentaa liian monimutkaisia ja isoja systeemeitä.

ESP8266 Arduino core tarjoaa valmiin mDNS-toteutuksen: https://github.com/esp8266/Arduino/tree/master/libraries/ESP8266mDNS
« Viimeksi muokattu: 29.10.18 - klo:12.20 kirjoittanut nm »

Mistofelees

  • Käyttäjä
  • Viestejä: 661
    • Profiili
Vs: mDNS
« Vastaus #4 : 30.10.18 - klo:22.15 »
Kaivelin tuota AVAHI:a, enkä päässyt kiinni ajatukseen. En löytänyt temppua, jolla löytäisin kotiverkoon (192.168.0.xxx) kytketyn vekottimen.
Jos rakennan esim esp8266 mittalaitteen, pistän sen käyttämään DHCP:tä, jotta ei tarvitsisi ylläpitää osoitelistoja. Laitteen nimi ja IP saa kyllä kaivettua reitittimeltä,
Reitittimielle ei pysty lisäämään informaatiota mittalaitekoneiden ominaisuuksista.

Tämä itse rakentamani järjestelmä täyttää omat tarpeeni, enkä tyrkytä sitä muille, kukin tavallaan.
- Kukin laite päivittää itse tietonsa serverille html-protokollaa käyttäen
- Serverillä simppeli php-scripti tallettaa tiedot tiedostoon
- Laitetiedot sisältävät nimen, IP:n, päivitysajan ja vapaamuotoisen kentän
- Serverillä olevaan tiedostoon on helppo lisätä vapaamuotoista tietoa
- Tiedot näkyvät kotipalvelimen nettisivulla selkokielisinä.
- Mittalaitteella

nm

  • Käyttäjä
  • Viestejä: 16428
    • Profiili
Vs: mDNS
« Vastaus #5 : 30.10.18 - klo:22.47 »
Kaivelin tuota AVAHI:a, enkä päässyt kiinni ajatukseen. En löytänyt temppua, jolla löytäisin kotiverkoon (192.168.0.xxx) kytketyn vekottimen.

Vekottimessa on oltava mDNS-toteutus käytössä ja konfiguroituna siten, että laite vastaa halutulla nimellä. Silloin DHCP ei ole välttämätön, mutta useimmat mDNS-systeemit taitavat julkaista DHCP:llä saadun osoitteen, jos sellainen vain on saatavilla. Jos DHCP:tä ei ole, mDNS voi generoida IP:n automaattisesti osoiteavaruudesta 169.254.0.0/16. En tosin ole varma, miten reitittimet yleensä suhtautuvat tähän.

Sitten voit selvittää mDNS-yhteensopivan vekottimen osoitteen Linux-koneessa suoraan verkkotunnuksella vekotin.local, kunhan Avahi on asennettuna.

Koodia: [Valitse]
getent hosts vekotin.local
Koodia: [Valitse]
ping vekotin.local
mDNS:n kautta voi myös toimittaa kuvaukset vekottimen tarjoamista palveluista portteineen, jos haluaa hifistellä.



Tämä itse rakentamani järjestelmä täyttää omat tarpeeni, enkä tyrkytä sitä muille, kukin tavallaan.

Jep, mutta itsepä kysyit mDNS:stä, joka on aiheen nimenäkin, joten siitähän toki on kiva keskustella. ;) Kätevä teknologia, joka on monelle muullekin varmasti hämärän peitossa.
« Viimeksi muokattu: 30.10.18 - klo:22.55 kirjoittanut nm »