Zeroconf

From NMS
Jump to: navigation, search

Úvod

Zeroconf, nebo také Zero Configuration Networking je soubor technik k automatické konfiguraci IP sítě bez nutnosti nastavování speciálních serverů (DHCP, DNS). Také je znám jako Automatic Private IP Addressing, AIPA. Toto umožňuje uživatelům snadné připojení počítačů, síťových tiskáren a dalších bez nutnosti znalostí IP síťování. Bez Zeroconfu, nebo podobných, musí uživatelé nastavit každý síťový prvek individuálně v závislosti na topologii sítě, apod.

IPv4 Link-Local Addressing (RFC 3927)

Je automatická konfigurace IP adresy bez manuálního zásahu do nastavení síťového zařízení. Např. síťová tiskárna se připojí k síťovému vedení a sama si nakonfiguruje IP pod, pod kterým je dostupná pro počítače v lokalní síti.

Tento standard se nedoporučuje pro použití mezi zařízeními, která nejsou fyzicky spojena stejným vedením, tj. je to určeno pro izolované soukromé sítě, ale jak uvidíme dále, dá se i toto použít v síti, která je připojena do internetu pomocí maškarádování na jednom z uzlů lokální sítě.

Tento systém přiděluje adresy pouze z rozsahu 169.254/16.

Multicast DNS

Je způsob překládání adres bez nutnosti klasického DNS serveru, kdy se počítače dotazují toho jedince DNS serveru. V případě mDNS se dotaz posílá pomocí multicast packetu na speciální adresu 224.0.0.251, UDP port 5353. Kdo z příjemců zná překlad IP na jméno, nebo obráceně, tak odpoví.

DNS Service Discovery

DNS-SD je způsob užívání standardního DNS interfacu, serveru a formátu packetů k objevování služeb na síti. Vyvinul se z Macintosh AppleTalk "Chooser". DNS-SD je kompatibilní s mDNS, ale není na něm závislý.

Po dotazu klienta na DNS server, server odpoví packetem, kde je uvedena doména prohledávání. Zeroconf impelmentace jednotlivého klientského systému (Mac OS X 10.4 (Tiger), Bonjour for Windows, atd.) se automaticky začnou dotazovat domény na publikované služby sítě. Takto klienti zjistí služby jako jsou tiskárny, webové stránky, apod.

Implementace v různých systémech

Linux

V Linuxu jsou alespoň dvě implementace Zeroconf nástrojů: mdnsd a Avahi. mdnsd je velmi malý prográmek implementující pouze mDNS část Zeroconf aktivity. O Avahi viz. níže.

Mac OS, MS Windows

V systému Mac OS je implementace Zeroconfu známá jako Randevouz, stejně tak jako v Microsoft Windows.


Avahi

Avahi je systém objevování služeb na lokální síti. Je založeno hlavně na flexmdns implementaci mDNS od Lennarta Poetteringa, který zastavil vývoj svého projektu ve prospěch avahi. Tento software je možno stánhout ze stránek projektu.

Je to kompletní implementace DNS-SD/mDNS standardu.

Instalace

Avahi jsem instaloval ze zdrojových kódů na systému SuSE Linux 10.0. Je k dispozici standardní konfigurační script configure. Následující příkaz nakonfiguruje zdrojový kód:

./configure --prefix=/usr/local --disable-qt4 --disable-python --disable-mono

Musel jsem zakázat některé možnosti, protože SuSE 10.0 nemá potřebné knihovny.

Potom už standardně:

make

make install

ldconfig

A musí se povolit v D-BUS daemonovi:

ln -s /usr/local/etc/dbus-1/system.d/avahi-dbus.conf /etc/dbus-1/system.d/

Dále je potřeba mít následující systémové uživatele:

avahi
avahi-autoip

v příslušných skupinách.

Před samotným spuštěním je třeba restartovat D-BUS daemona!

Konfigurace

Uvedu ukázkové nastavení, které používám. Mám naprosto jednoduchou topologii sítě: server - notebook. K serveru je připojena tiskárna (která se tváří jako síťová) a běží na něm FTP server. Ukážu, jak se dají publikovat tyto služby.

Nejdříve je nutné nastavit avahi-daemona, který je zodpovědný za veškerou komunikaci mDNS na každém stroji. Řekneme mu, které služby má ohlásit v lokální síti a pokud je zvolený stroj i jako brána do internetu, dá se nastavit, aby přeposílal adresy "klasických" DNS serverů ostatním pomocí mDNS. Bohužel zatím není možné použít pouze balíček Avahi v situaci, kdy se chcete připojít k síti s bránou do internetu, je nutné nastavení adresy implicitní brány na každém uzlu jiným způsobem (route add default gw 169.254.1.1), což znamená, že brána musí mít statickou adresu.


/usr/local/etc/avahi/avahi-daemon.conf

[server]
host-name=hofos-server
domain-name=local
#browse-domains=
use-ipv4=yes
use-ipv6=no
check-response-ttl=no
use-iff-running=yes
enable-dbus=yes
disallow-other-stacks=yes
#allow-point-to-point=no

[wide-area]
enable-wide-area=yes 

[publish]
disable-publishing=no
disable-user-service-publishing=no
add-service-cookie=no
publish-addresses=yes
publish-hinfo=yes
publish-workstation=yes
publish-domain=yes
#publish-dns-servers=
publish-resolv-conf-dns-servers=yes

[reflector]
enable-reflector=no
reflect-ipv=no 

[rlimits]
#rlimit-as=
rlimit-core=0
rlimit-data=4194304
rlimit-fsize=0
rlimit-nofile=30
rlimit-stack=4194304
rlimit-nproc=3

V případě stanic, které nejou bránou do internetu, obvykle není potřeba nastavovat publikování DNS serverů. V tomto konkétním případě se publikují klasické DNS servery, které jsou nastaveny v /etc/resolve.conf souboru při připojení k poskytovateli, což je příjemné, protože se nemusí nastavovat napevno.


Každá služba, která má být publikována, je pak definována ve zvláštním souboru XML, kde se popíše veřejné jméno, typ a port, na kterém běží. Jako ukázka poslouží nastavení služby jako síťové tiskárny:


.../etc/avahi/services/printer.service

<?xml version="1.0" standalone='no'?>
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">

<service-group>
    <name replace-wildcards="yes">Tiskarna HP LaserJet 4L na %h</name>

    <service>
        <type>_ipp._tcp</type>
        <port>631</port>
    </service>
</service-group>

Test

Před samotným spuštěním si ověřte, zda vám již neběží nějaká implementace mDNS na portu 5353! Pokud ano, tak po spuštění avahi-daemona budete uvítáni hláškou "Failed to create server: No suitable network protocol available". Např. SuSE 10.0 používá mdnsd implementaci Multicast DNS, tu vypnete /etc/init.d/mdnsd stop.


Pokud nejde o bránu do sítě internet nastavíte IP adresu pomocí příkazu

avahi-autoipd eth0

který nastaví IP adresu z lokálního pásma (168.254/16).

Pro použití mDNS systému spustíte

avahi-daemon

V případě, že se chcete připojit k internetu (nebo z nějakého důvodu chcete používat klasický DNS na vaší lokální síti), použijte autokonfiguračního daemona

avahi-dnsconfd

Nezapomeňte nastavit implicitní bránu (viz. výše)!

Výsledky

Publikované služby se dají prohlédnout v mnoha nástrojích, já uvedu výpis utility z balíčku Avahi.

Avahi-discovery.jpg

hofos-notebook:~ # avahi-resolve-host-name hofos-server.local
hofos-server.local      169.254.1.1
----
hofos-server:~> avahi-resolve-host-name hofos-notebook.local
hofos-notebook.local    169.254.125.154
hofos-notebook:~ # avahi-browse -a
+ eth0 IPv4 hofos-notebook [00:15:c5:0a:15:94]            Workstation          local
+ eth0 IPv4 hofos-server [00:11:09:e8:38:19]              Workstation          local
+ eth0 IPv4 SSH Terminal na hofos-notebook                SSH Remote Terminal  local
+ eth0 IPv4 SSH Terminal na hofos-server                  SSH Remote Terminal  local
+ eth0 IPv4 SFTP Server na hofos-notebook                 SFTP File Transfer   local
+ eth0 IPv4 SFTP Server na hofos-server                   SFTP File Transfer   local
+ eth0 IPv4 Tiskarna HP LaserJet 4L na hofos-server       Internet Printer     local
+ eth0 IPv4 FTP Server na hofos-server                    FTP File Transfer    local

Odkazy

Multicast DNS

DNS Service Discovery

Apple - Mac OS X - Bonjour

Aplikace v praxi - Bonjour

Avahi