Login remoto ai demoni Quagga

Dovrete configurare i demoni in modo che ascoltino su tutte le interfacce e quindi impostare il controllo d’accesso nei rispettivi file di configurazione.Sotto Debian editate /etc/quagga/debian.conf per abilitare l’ascolto su tette le interfacce:

vtysh_enable=yes
zebra_options=" --daemon"
ripd_options=" --daemon"

Sotto Fedora,fate la stessa cosa nel file /etc/sysconfig/quagga

Aggiungete quindi le righe che seguono nei file di configurazione dei demoni(ripd.conf,zebra.conf,Quagga.conf),come in questo esempio relativo a zebra.conf

 

access-list localhost permit 127.0.0.1/32
access-list localhost deny any
access-list lan1 permit 192.168.1.0/24
access-list lan1 deny any
access-list lan2 permit 192.168.2.0/24
access-list lan2 deny any
!
line vty
access-class localhost
access-class lan1
access-class lan2

 

Cio abilita le l ogin solo da localhost e da due sottoreti locali.Ciascun Login ha la propria classe in modo da poterlo disabilitare commentando l’opportuna riga access-class.

 

Ora dovete riavviare Quagga.Sotto Debian usate questo comando:

# /etc/init.d/quagga restart

Sotto Fedora dovete riavviare ciascun demone separatamente:

# /etc/init.d/zebra restart
# /etc/init.d/ripd restart

Ora dovreste essere in grado di effettuare delle connessioni in telnet dalla LAN specificando un IP e una porta:

test@testpc:~$ telnet router 2601

Piccolissima nota vi chiederà una password,quella di default è disponibile all’interno del file Quagga.conf.I nomi in access-list, nel nostro esempio localhost,lan1 e lan2 sono arbitrari.L’esempio che è stato presentato è abbastanza complesso e controlla gli accessi a livello di sottorete.Potete semplificarlo inserendo tutto in un unica access-list:

 

access-list allowed permit 127.0.0.1/32
access-list allowed permit 192.168.1.0/24
access-list allowed permit 192.168.2.0/24
access-list allowed deny any
!
line vty
access-class allowed

 

 


Usare la riga di comando di Quagga

Preferite utilizzare la shell (a me tantissimo 😀 perchè ricorda tantissimo l’IOS di cisco) per eseguire i comandi,senza dover modificare direttamente i file di configurazione.Come farlo nel caso dei demoni quagga?Quagga dispone della propria shell,la Virtual TeleYpe vtysh,usandola potete interagire direttamente con tutti i demoni Quagga della macchina,potete anche comunicare direttamente con i demono tramite telent.

Per prima cosa,modificare o creare il file /etc/quagga/vtysh.conf che segue:

!/etc/quagga/vtysh.conf
hostname router1
username root nopassword

Sotto Debian,se non lo avete già fatto,aggiungete questa riga a /etc/environment

 

VTYSH_PAGER=more

 

Aprire un nuovo terminale e collegatevi come root:

root@xena:~# vtysh
Hello, this is Quagga (version 0.99.4).
Copyright 1996-2005 Kunihiro Ishiguro, et al.
router1#

vtysh ha due modalità:normale e estesa.In modalità normale potete visualizzare lo stato del sistema;in modalità estesa potete modificare i file di configurazione ed eseguire comandi.vtysh si apre in modalità normale.Questi due comandi visualizzano i comandi disponibili in modalità normale:

router1# ?
router1# list

Questo comando visualizza la configurazione corrente:

router1# write terminal

Pereseguire qualsiasi comando di routing, o per modificare una configurazione,dovete passare in modalità estesa tramite il comando configure:

router1# configure terminal
router1(config)#

Questi due comandi visualizzano i comandi disponibili in questa modalità:

router1(config)# ?
router1(config)# list

exit chiude tutte le sessioni aperte.vtysh funziona anche quando non ci sono demoni Quagga in esecuzione.

La seconda opzione consiste nell’utilizzare telnet ma può comunicare solo con un demone alla volta,come in questo esempio per ripd:

carla@xena:~$ telnet localhost 2602
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Hello, this is Quagga (version 0.99.4).
Copyright 1996-2005 Kunihiro Ishiguro, et al.
User Access Verification
Password:
router1>

Fate molta attenzione,perchè qualsiasi utente che conosca la password del demone può controllarlo via telnet.Come nel caso di vtysh,le sessioni vengono aperte in modalità normale e dovete passare in modalità estesa tramite il comando enable prima di poter modificare le configurazioni tramite configure terminal:

router1> enable
router1# configure terminal
router1(config)#

exit,end o quit escono;? e list visualizzano i comandi disponibili.

La riga username root nopassword in /etc/quagga/vtysh.conf è necessaria affinchè vtysh possa partire.L’utente indicato non avrà bisogno della password per aprire una sessione vtysh.Assicuratevi che questo file sia leggibile e scrivibile solo dall’utente indicato al suo interno e ricordate che non c’è modo di impostare una password.Se tutto quello che ottenete è una schermata vuota con (END) in basso a sinistra,aggiungete VTYSH_PAGER=more alle vostre variabili di ambiente in .profile,oppure a quelle globali in /etc/environment

hostname può essere un nome arbitrario, in modo da poter identificare con facilità ciascun demone.

Usare il routing dinamico tramite RIP sotto Fedora

La topologia della rete non è complicata,ma non volete impostare a mano route statiche.I vostri router usano Fedora.Il protocollo RIP viene configurato esattamente allo stesso modo sia sotto Debian che sotto Fedora.L’unica differenza è che i demoni vengono avviati in modo diverso,Fedora ha un file di controllo per ciascun demone.Configurate zebra.conf,ripd.conf e vtysh.conf come nell’articolo che parla di RIP in Debian e proteggete il file allo stesso modo.

Se abilitate i file di avvio di zebra e ripd:

 

# chkconfig --add zebra
# chkconfig --add ripd

 

potrete controllare i demoni con i comandi standard di Fedora:

 

# /etc/init.d/zebra {start|stop|restart|reload|condrestart|status}

 

Quando vedete una riga come la seguente in un file di avvio di Fedora:

 

# chkconfig: - 16 84

 

significa che potete eseguire il comando chkconfig senza dover specificare a mano i livelli di run e le priorità.

Usare il routing dinamico tramite RIP sotto Debian

La topologia della vostra rete non è complicata,ma non volete impostare a mano route statiche e i vostri router usano debian o distribuzioni basate su di esso.Ci sono du e tipolo gie di routing dinamico:interno ed estermo.In questa ricetta useremo il protocollo Routing Information Protocol,il più semplice tra quelli interni.RIP è contenuto nella suite di protocolli di routing Quagga.L’installazione è molto semplice:

# aptitude install quagga

Ora dovete editare alcuni file di configurazione.Iniziate da /etc/quagga/daemons e abilitate i demoni zebra e ripd:

 

##/etc/quagga/daemons
zebra=yes
bgpd=no
ospfd=no
ospf6d=no
ripd=yes
ripngd=no
isisd=no

Create il file /etc/quagga/zebra.conf

 

!/etc/quagga/zebra.conf
hostname router1
password bigsecret
enable password bigsecret
service advanced-vty
log file /var/log/quagga/zebra.log
!
!administrative access controls- local machine only
!
access-list localhost permit 127.0.0.1/32
access-list localhost deny any
!
line vty
access-class localhost

 

Create il file /etc/quagga/ripd.conf

 

!/etc/quagga/ripd.conf
hostname router1
password moresecret
enable password moresecret
router rip
network eth1
redistribute static
redistribute connected
service advanced-vty
log file /var/log/quagga/ripd.log
!
!administrative access controls- local machine only
!
access-list localhost permit 127.0.0.1/32
access-list localhost deny any
!
line vty
access-class localhost

 

Impostare gli opportuni permessi sui file che avete creato:

# chown quagga:quagga ripd.conf zebra.conf
# chown :quaggavty vtysh.conf

Piccola nota:il file vtysh non lo ho trovato in /etc/quagga ma in /usr/share/doc/quagga/examples/vtysh.conf.sample(come file esempio),bisogna quindi spostarlo nella cartella appropriata e rinominarlo.

Aggiungete queste righe al file /etc/services

 

zebrasrv    2600/tcp     # zebra service
zebra         2601/tcp     # zebra vty
ripd            2602/tcp     # RIPd vty

 

Aggiungete questa riga al file /etc/environment

 

VTYSH_PAGER=more

 

Lanciate quagga

# /etc/init.d/quagga start

Ripetere su tutti i router della vostra rete e avrete finito.Aspettate qualche minuto affinchè le nuove configurazioni vengano propagate sulla LAN e verificate le tabelle di routing:

$ /sbin/route
$ ip route show
$ netstat -rn

I file di configurazione di Quagga utilizzano dei punti esclamativi per identificare le righe di commento.Tutti i demoni di Quagga sono controllati da un unico file di avvio:

# /etc/init.d/quagga {start|stop|restart|force-reload| [daemon]}

I demoni Quagga tramettono in broadcast multicast agli altri router della rete le tabelle di routing ogni 30 secondi  e quindi non è necessario impostare route statiche.Di default,Debian limita in /etc/quagga/debian.conf l’accesso a vty solo alle connessioni dalla macchina locale.Fedora usa /etc/sysconfig/quagga.

Ecco la definizione di alcune delle variabili utilizzate in ripd.conf:

hostname = E’ un nome arbitrario e non ha nulla a che fare con l’hostname Linux del router.Controlla il nome visualizzato dai comandi vtysh o telnet.

router rip = Specifica il protocollo di routing da utilizzare,in questo caso rip.Il default è inviare la versione 2 e ricevere la 1 e la 2.Gli altri protocolli che possibile specificare sono,     ovviamente nei rispettivi file di configurazione,ripng,ospf,ospf6 e bgp.

network eth1 = Specifica su quale interfaccia o interfacce ripd deve rimanere in ascolto.Le eventuali interfacce aggiuntive oltre alla prima vanno indicate su righe separate.

redistribute static = Condividere eventuali route statiche elencate in zebra.conf

redistribute connect = Condividere i router connessi direttamente.Se,per esempio,avete un router connesso alla rete 10.0.0.1/24,indica agli altri router come raggiungerlo.

service advanced-vty = Abilita le funzioni avanzate di vty,come lo storico dei comandi e l’autocompletamento tramite il tasto di tabulazione (TAB).

access-list = le due righe access-list definiscono una nuova classe,localhost.il nome della classe è arbitrario.Dopo aver definito la classe,le righe

 

line vty
access-class localhost

 

 

 

abilitano il login solo dalla macchina locale.Il livello di logging di default è debugging,che è quello che genera più output.Gli altri valoro previsti sono: emergencies,alerts,critical,errors,warnings,notifications e information,come in

 

log file /var/log/quagga/ripd.log warnings

 

Se non avete un file di log,un crash generà un file /var/tmp/quagga.[nome del demone].crashlog.Questo file va cancellato o rinominato per permettere la generazionedi un nuovo file di crash.Il protocollo RIP è disponibile in due versioni:RIPv1 è abbastanza limitato e,se possibile,non andrebbe usato.Non sopporta la notazione delle reti senza classi ed è abbastanza lento a rispondere a variazioni di condizioni,come,ad esempio,un router che va giù.RIPv2 è compatibile verso il basso cioè di default usa la versione 2 in uscita e le versioni 1 e 2 in ingresso.L’opzione version 2 invia e riceve solo RIPv2 (cosa diversa in cisco visto che lui di defaul parte in versione 1 e inserendo la versione 2 si rende retro-compatibile).Il protoccolo RIP non è in grado di gestire più di 15 hop,quindi non utilizzatelo per reticomplesse.

Quagga comprende cinque demoni di routing:ripd,ripngd,ospfd,ospf6d e bgpd e un demone di gestione,zebra.Quest’ultimo va sempre avviato prima dei demoni di routing.Ciascun demone ascolta una porta specifica:

zebrasrv 2600/tcp
zebra    2601/tcp
ripd     2602/tcp
ripngd   2603/tcp
ospfd    2604/tcp
bgpd     2605/tcp
ospf6d   2606/tcp
ospfapi  2607/tcp
isisd    2608/tcp

 

Rendere persistenti le route statiche

Volete rendere permanenti le route statiche che avete impostato sui router in modo da non doverle riconfigurare ogni volta che spegnete i router.Quali sono i file di configurazione da modificare?Sotto Debian,aggiungerete le route statiche in /etc/network/interfaces nei fiel relativi alle opportune interfacce:

 

auto eth1
iface eth1 inet static
address 192.168.10.100
netmask 255.255.255.0
gateway 22.33.44.55
broadcast 192.168.10.255
up route add -net 172.16.5.0/24 gw 192.168.10.100 eth1
up route add -net 172.24.0.0/24 gw 192.168.10.100 eth1
down route del -net 172.24.0.0/24
down route del -net 172.16.5.0/24

 

 

Sotto Fedora, create un file /etc/sysconfig/network-script/route-* come il seguente:

 

 

##/etc/sysconfig/network-scripts/route-eth1
192.168.10.0/24 via 172.24.0.25
172.16.5.0/24 via 172.24.0.25

 

 

In questi file abbiamo usato la sintassi del comando ip .Importante utilizzare i nomi di file e di interfacce corretti,altrimenti le route statiche non fuzioneranno.I nomi delle interfacce sono quelli che trovate nei loro rispettivi file di configurazione,per esempio /etc/sysconfig/network-script/ifcfg-eth1.

Sotto Fedora,non toccate /etc/network/static-routes;l’uso di questo file è stato deprecato da tempo e nelle versioni attuali di Fedora non funziona più.I router avranno bisogno anche di un gateway di default per eventuali uscite verso altre reti,per esempio,verso internet.

 

Riferimenti:

  • man 5 interfaces (Debian)
  • man 8 ifup (Debian)
  • man 8 ip
1 2 3 6