Avahi kasutamine Debian Lennyga

Allikas: Kuutõrvaja

Sissejuhatus

Avahi http://avahi.org/ on vaba Apple Zeroconf http://en.wikipedia.org/wiki/Zeroconf spetsifikatsiooni implementatsioon, mille kasutamine on levinud vabades operatsioonisüsteemides ja mida märkimisväärselt tunnustab ka Apple ise.

Avahi kasutamise eesmärk on lihtsustada seadmete, eelkõige nö mobiilsete töökohaarvutite, võrku seadistamist ning teenuste leidmist võrgust. Tavaliselt peetakse võrgu all silmas kohtvõrku ja teenuste all nö lõppkasutajale olulisi teenuseid, nt võrgust printeri leidmine.

Avahi pakub sellist funktsionaalsust

  • IPv4LL (IPv4 Link-Local) - võrku ühendatud arvutid nö automaatselt seadistavad ennast käima samasse võrku
  • mDNS (multicast DNS) - nimede päri-ja pöördteisenduste lahendamine
  • DNS-SD (DNS Service Discovery) - teenuste kohta info levitamine

Kusjuures tingimata ei pea kasutama kõiki loetletud komponente, nt võib vajadusel kasutada ainult viimaseid kahte.

Kui Avahit ei ole kavatsus otseselt ka kasutada, on kasulik olla sellega kursis, et olla nt teadlik võimalikest asjaomastest turvaprobleemidest ning mõista võrgus muidu anomaalsena näivaid nähtusi

  • arvuti võrguseade muudab ip aadressi
  • võrgus esineb nö imelik multiedastuse liiklus
  • arvutid tutvustavad ja pakuvad teenuseid, mida nad ei peaks tutvustama ega pakkuma

Avahi on iseensest tuntud ka kui leemur ja tema nime hääldatakse kõlaliselt nagu mõnes eesti murdes öeldakse 'ära vaata' - 'ää vahi'.

Arvuti võrguühenduse seadistamine IPv4LL abil

Avahi abil sobib võrguühendust seadistada, kui võrgus puuduvad muud automaatsed võimalused nt DHCP server ja käsitsi mingil põhjusel on seda ebasobiv teha, nt nö ad-hoc võrku mitme arvuti automaatseks ühendamiseks. Arvutite võrguseadmete seadistamisega tegeleb Avahi IPv4LL komponent.

Tavaliselt ei kasutata avahi-autoipd http://avahi.org/wiki/AvahiAutoipd tarkvara iseseisvalt, vaid DHCP kliendi lisana, st teda kasutatakse kui DHCP server ei ole parasjagu kliendile kättesaadav.

avahi-autoipd omistab seadmetele aadresse nn local-link kasutuseks eraldatud vahemikust 169.254.0.0/16 (tundub, et see on see sama vahemik, millest kasutavad ka Windows operatsioonisüsteemid võrguseadmete aadresse, kui võrk on nö katki).

Tarkvara paigaldamiseks tuleb öelda

 # apt-get install avahi-autoipd

Kui kasutada läbi DHCP kliendi, siis on eelduseks DCHP kliendi (nt pakett dhcp3-client) olemasolu ning /etc/network/interfaces peab sisaldab võrgukaardi sellist seadistust

 auto eth0
 iface eth0 inet dhcp

Tulemusena võrku ühendatud arvuti käivitamisel omandab võrguseade local-link aadressi, eth0 on füüsiline seade ja eth0:avahi vastav Avahi seade

 eth0    Link encap:Ethernet  HWaddr 70:01:68:01:01:51  
         inet6 addr: fe80::7201:68ff:fe01:151/64 Scope:Link
         UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
         RX packets:10204 errors:0 dropped:0 overruns:0 frame:0
         TX packets:933 errors:0 dropped:0 overruns:0 carrier:0
         collisions:0 txqueuelen:1000 
         RX bytes:716609 (699.8 KiB)  TX bytes:194701 (190.1 KiB)
 
 eth0:avahi Link encap:Ethernet  HWaddr 70:01:68:01:01:51  
         inet addr:169.254.184.10  Bcast:169.254.255.255  Mask:255.255.0.0
         UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

Otseselt saab nt testimiseks käivitada avahi-autoipd selliselt, kuid eelnevalt tuleb ip aadress eemaldada vastavalt võrguseadmelt, nt ip programmi abil

 # avahi-autoipd eth0
 Found user 'avahi-autoipd' (UID 104) and group 'avahi-autoipd' (GID 109).
 Successfully called chroot().
 Successfully dropped root privileges.
 Starting with address 169.254.184.10
 Callout BIND, address 169.254.184.10 on interface eth0
 Successfully claimed IP address 169.254.184.10

mDNS nimelahendus

Avahi mDNS komponent tegeleb nimelahendusega ja kasutab andmevahetuseks multiedastust (ingl. k. multicast), vaikimisi address 224.0.0.251 ja port 5353. Vaikimis moodustatakse nimed domeeni .local alla, nt loomaaed.local.

mDNS kasutavatel osalised arvutid on tavaliselt samaaegselt nii mDNS nö serverid kui ka kliendid.

mDNS server

Üle võrgu tulevatele mDNS päringutele vastab avahi-daemon, tarkvara paigaldamiseks tuleb öelda

 # apt-get install avahi-daemon

Vaikimisi publitseeritakse võrku ainult arvuti enda olemasolu, st .local domeeni nime ja ip aadressi.

Avahi deemoni käivitamiseks tuleb öelda

 # /etc/init.d/avahi-daemon start

Avahi deemonile vastab protsess

 # ps aux | grep avahi-daemon
 avahi     2708  0.0  1.8  31732  1208 ?        Ss   17:37   0:00 avahi-daemon: running [post-relee.local]
 avahi     2710  0.0  0.6  31600   412 ?        Ss   17:37   0:00 avahi-daemon: chroot helper

ning võrgusoketid

 # netstat -anp | grep 5353
 udp        0      0 0.0.0.0:5353   0.0.0.0:*       2664/avahi-daemon: 
 udp6       0      0 :::5353             :::*       2664/avahi-daemon

Olulised seadistusfailid on

  • /etc/avahi/avahi-daemon.conf - põhiline seadistusfail
  • /etc/avahi/hosts - saab kirjeldada liskaks teisendatavate nimede-aadresside vahelisi seoseid
  • /etc/avahi/services - mDNS-SD abil publitseeritavate teenuste kirjeldused
  • /etc/default/avahi-daemon

Kui mingil põhjusel on vaja arvutis tutvustada võrgule mõnda muud nime-aadressi vahelist seost, sobib seda teha /etc/avahi/hosts faili abil

mDNS liiklus on multicast liiklus ja paistab võrgus sarnaselt (konkreetselt on kasutatud Xen virtuaalseid arvuteid)

 17:45:26.731223 70:01:68:01:01:51 > 01:00:5e:00:00:fb, ethertype IPv4 (0x0800), \
   length 121: 169.254.184.10.5353 > 224.0.0.251.5353: 0*- [0q] 2/0/0 (Cache flush) PTR[|domain]
 17:45:26.972295 70:01:68:01:01:51 > 01:00:5e:00:00:fb, ethertype IPv4 (0x0800), \
   length 133: 169.254.184.10.5353 > 224.0.0.251.5353: 0 [2q] [2n] ANY (QM)? 246.2.254.169.in-addr.arpa.[|domain]

mDNS klient

mDNS kliendiks olemiseks on tarvis lisada süsteemi NSSile mDNS tugi

 # apt-get install libnss-mdns

ning kasutada failis /etc/nsswitch.conf rida

 hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4

Praktiliselt paigaldatakse aga ka mDNS serveri osa, st avahi-daemon pakett ning muudetakse /etc/nsswitch.conf faili.

Kui võrgus on mõni mDNS server veel, saab küsida nt nii (NB! dig ja nslookup ei kasuta NSSi) päriteisendust

 # getent hosts loomaaed.local
 169.254.184.10 loomaaed.local

ning pöördteisendust

 # getent hosts 169.254.184.10
 loomaaed.local 169.254.184.10

DNS-DS abil teenuste kasutamine

Selleks, et mDNS abil publitseeritud teenuseks saaks võrgus kasutada tuleb nad esmalt avahi-daemon abil võrku publitseerida. Teenuste publitseerimisega tegeleb Avahi DNS-DS komponent.

Teenuste publitseerimine

Teenuste publitseerimine toimub avahi-deemoni abil, täpsemalt kataloogi /etc/avahi/services sisalduvate seadistusfailide abil. avahi-daemoniga on kaasas ssh serveri kohta näide, kasutamiseks tuleb seadistusfail kopeerida

 # cp /usr/share/doc/avahi-daemon/examples/ssh.service /etc/avahi/servics

kusjuures selle xml formaadis faili sisu on selline

 <?xml version="1.0" standalone='no'?>
 <!DOCTYPE service-group SYSTEM "avahi-service.dtd">
   
 <service-group>
 
   <name replace-wildcards="yes">%h</name>
 
   <service>
     <type>_ssh._tcp</type>
     <port>22</port>
   </service>
 
 </service-group>

Faili lisamisel muudatus kehtestatakse, avahi-daemonit ei ole tarvis restartida vms.

Publitseeritud teenuste kasutamine

Üldiselt saab võrgus olevate arvutite ja teenuste nimekirja küsida avahi-discover paketist paigaldatud programmiga avahi-discover

 $ avahi-discover

Avahi-1.gif

On näha neli arvutit, ühel arvutil töötav print-server ja teisel arvutil töötav SSH server.

Konkreetselt Avahi abil publitseeritud SSH ja VNC serveri poole pöördumiseks sobib kasutada paketist avahi-ui-utils programmi bshell

 $ bshell

Avahi-2.gif

Avahi utiliidid

Pakett avahi-utils sisaldab mitmesuguseid utiliite, mida saab nt diagnostikaks kasutada

 # apt-get install avahi-utils

IPv4 nime aadressiks lahendamiseks sobib öelda

 # avahi-resolve -4 -n loomaaed.local
 loomaaed.local 169.254.184.10

Paketist mdns-scan samanimelise programmiga saab skaneerida võrku avahi teenustes suhtes, nt selliselt

 # mdns-scan
 + moraal [00:0e:0c:b0:96:b6]._workstation._tcp.local
 + hp LaserJet 1300 @ moraal.auul._ipp._tcp.local
 + kopka [00:1b:21:1d:f6:06]._workstation._tcp.local
 + kopka._ssh._tcp.local
 + post-lenny [70:01:68:01:01:51]._workstation._tcp.local
 + post-relee [70:01:68:01:01:50]._workstation._tcp.local
 ^Cowsing ... |

Avahi-võimeline tarkvara

Kasulikud lisamaterjalid