20.4. Router Advertisement Daemon (radvd)

Il router advertisement daemon è molto utile in una LAN, se i client devono essere configurati automaticamente. Il demone stesso dovrebbe girare sul gateway di default IPv6 (non è obbligatorio che questo sia anche il gateway di default IPv4, perciò si faccia attenzione a chi invia, sulla propria LAN, gli avvisi di instradamento).

Si possono specificare alcune informazioni e flag che devono essere contenute negli avvisi. Le più comunemente usate sono

Dopo un'appropriata configurazione, il demone invia gli avvisi attraverso le interfacce specificate, i client - si spera - le ricevono e configurano automaticamente gli indirizzi con i prefissi e l'instradamento di default ricevuti.

20.4.1. Configurazione di radvd

20.4.1.1. Configurazione semplice

Di solito, il file di configurazione di radvd è /etc/radvd.conf. Un semplice esempio è riportato di seguito:

interface eth0 { 
        AdvSendAdvert on;
        MinRtrAdvInterval 3; 
        MaxRtrAdvInterval 10;
        prefix 3ffe:ffff:0100:f101::/64 { 
                AdvOnLink on; 
                AdvAutonomous on; 
                AdvRouterAddr on; 
        };
};
    

Dal lato client ciò risulta come

# ip -6 addr show eth0 
3: eth0: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast qlen 100 
    inet6 3ffe:ffff:100:f101:2e0:12ff:fe34:1234/64 scope global dynamic 
       valid_lft 2591992sec preferred_lft 604792sec 
    inet6 fe80::2e0:12ff:fe34:1234/10 scope link
    

Poiché il tempo di vita non è stato definito, viene indicato un valore molto elevato.

20.4.1.2. Configurazione speciale 6to4

Dalla versione 0.6.2pl3 è supportata la (ri)-generazione automatica del prefisso dipendentemente dall'indirizzo IPv4 dell'interfaccia specificata. Questo meccanismo può essere utilizzato per distribuire avvisi in una LAN dopo che il tunneling 6to4 subisce variazioni. Il più delle volte viene utilizzato dietro ad un router Linux dial-on-demand dinamico. Poiché il tempo di vita di questo prefisso è sicuramente molto breve (dopo ogni dial-up c'è un diverso prefisso valido), esso viene configurato al valore minimo:

interface eth0 { 
        AdvSendAdvert on;
        MinRtrAdvInterval 3; 
        MaxRtrAdvInterval 10;
        prefix 0:0:0:f101::/64 { 
                AdvOnLink off; 
                AdvAutonomous on; 
                AdvRouterAddr on; 
                Base6to4Interface ppp0;
                AdvPreferredLifetime 20; 
                AdvValidLifetime 30;
        };
};
    

Lato client questo si traduce in (assumendo che ppp0 abbia attualmente l'indirizzo locale IPv4 1.2.3.4):

# /sbin/ip -6 addr show eth0 
3: eth0: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast qlen 100 
   inet6 2002:0102:0304:f101:2e0:12ff:fe34:1234/64 scope global dynamic 
      valid_lft 22sec preferred_lft 12sec
   inet6 fe80::2e0:12ff:fe34:1234/10 scope link
    

Poiché è stato definito un tempo di vita molto piccolo, tale prefisso verrà velocemente scartato se non saranno ricevuti avvisi relativi ad esso.

Nota aggiuntiva: se non si è usato lo speciale supporto 6to4 negli initscript, è necessario creare un instradamento speciale sull'interfaccia interna del router, altrimenti si avranno alcuni problemi di instradamento di ritorno. Per l'esempio mostrato qui:

# /sbin/ip -6 route add 2002:0102:0304:f101::/64 dev eth0 metric 1
    

questo instradamento deve essere rimpiazzato ogni volta che il prefisso cambia, come nel caso in cui all'interfaccia dial-up viene assegnato un nuovo indirizzo IPv4.

20.4.2. Debugging

Un programma chiamato "radvdump" può essere d'aiuto per guardare negli avvisi ricevuti e inviati. Semplice da usare:

# radvdump 
Router advertisement from fe80::280:c8ff:feb9:cef9 (hoplimit 255) 
        AdvCurHopLimit: 64 
        AdvManagedFlag: off 
        AdvOtherConfigFlag: off 
        AdvHomeAgentFlag: off 
        AdvReachableTime: 0 
        AdvRetransTimer: 0 
        Prefix 2002:0102:0304:f101::/64 
                AdvValidLifetime: 30 
                AdvPreferredLifetime: 20 
                AdvOnLink: off 
                AdvAutonomous: on 
                AdvRouterAddr: on 
        Prefix 3ffe:ffff:100:f101::/64 
                AdvValidLifetime: 2592000 
                AdvPreferredLifetime: 604800 
                AdvOnLink: on 
                AdvAutonomous: on 
                AdvRouterAddr: on 
        AdvSourceLLAddress: 00 80 12 34 56 78
   

L'output mostra ogni pacchetto di avviso ricevuto in formato leggibile. Si dovrebbero vedere i propri valori configurati, altrimenti forse non è il proprio radvd che invia gli avvisi... si cerchi un altro router sul link (e si consideri per il tracciamento il valore LLAddress che corrisponde all'indirizzo MAC).