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.

Configurare il routing statico per le sottoreti

 

Avete varie sottoreti non tutte connesse allo stesso router.Come metterle in comunicazione tra loro?Ci sono due modi per farlo:uno semplice e uno difficile.Quello difficile consiste nell’impostare delle route statiche da router a router.Supponiamo di avere le tre sottoreti e i tre router schematizzati così:

Ciascun router avrà bisogno di due route statiche.I router del nostro esempio dovrannop essere configurati comne segue.

 

Router C


# route add -net 192.168.10.0/24 gw 172.24.0.25 eth1
# route add -net 172.16.5.0/24 gw 172.24.0.25 eth1


Router B


# route add -net 192.168.10.0/24 gw 172.16.5.125 eth1
# route add -net 172.24.0.0/24 gw 172.16.5.125 eth1


Router A


# route add -net 172.16.5.0/24 gw 192.168.10.100 eth1
# route add -net 172.24.0.0/24 gw 192.168.10.100 eth1


Ora gli host su ciascuna sottorete potranno comunicare tra loro.Per cancellare delle route statiche,usate comandi simili a questi:

 

# route del -net 192.168.10.0/24

 

Questo metodo è un pò complicato perchè dovete calcolare le maschere di rete e stare molto attenti a non sbagliare a digitare gli indirizzi.Il metodo più semplice consiste nel collegare tutti e tre i router sulla stessa sottorete come schematizzato nella successiva figura.In questo caso non dovreste impostare nessuna route statica.

 

Per impostare o rimuovere le route statiche potete anche usare il comando ip:


# ip route add 172.16.5.0/24 via 192.168.10.100
# ip route del 172.16.5.0/24


Quando sarete stufi di impostare a mano le route statiche,usate il routing dinamico che verrà trattato negli articoli successivi.

Configurare un semplice router locale

 

Avete un unica connessione a Internet condivisa e la vostra LAN è suddivisa in varie sottoreti.Volete che le varie sottoreti possono cominciare tra loro .Come fare?Tutto quello di cui avete bisogno è un singolo router a cui connettere tutte le sottoreti.Supponete di avere le seguenti tre sottoreti:Supponete di avere le seguenti tre sottoreti:

  • 10.25.0.0/16
  • 172.32.0.0/16
  • 192.168.254.0/24

Il router avrà bisogno di tre interfacce di rete con i seguenti indirizzi

  • eth0 = 10.25.0.10
  • eth1 = 172.32.12.100
  • eth2 = 192.168.254.31

Ciascuna sottorete ha il proprio switch e gli switch sono connessi al router, come mostrato nella seguente figura.

Ora dovete abilitare il forwarding IP sul router.Potete farlo dalla riga di comando:

# echo 1 > /proc/sys/net/ipv4/ip_forward


Questa configurazione è temporanea e quindi dovrete inserirla in /etc/sysctl.conf per non doverla reimpostare ad ogni reboot:

##/etc/sysctl.conf
net.ipv4.ip_forward = 1
# sysctl -p


Assegnare ora i tre indirizzi delle interfacce del router come gateway di default per le macchine delle tre sottoreti.Tutti gli host su 1025.0.0./16,per esempio,dovranno utilizzare 10.25.0.10 come gateway di default.Dopo aver effettuato queste configurazioni,le tre potranno scambiarsi traffico TCP/IP senza problemi.

Non dovete necessariamente utilizzare indirizzi tratti da reti private distinte come quelli nel nostro esempio.Noi lo abbiamo fatto solo per rendere evidente che si tratti di reti distinte.Potete utilizzare qualsiasi schema di indirizzamento,come in questi esempi:

  • 10.25.0.0/16
  • 10.26.0.0/16
  • 10.27.0.0/16

oppure

  • 172.16.1.0/24
  • 172.16.2.0/24
  • 172.16.3.0/24

L’unica cosa da evitare è il conflitto tra indirizzi:l’unico modo per evitare il pericolo è usare ipcalc.Quando abilitate L’IP forwarding sul router,abilitate lo smistamento automatico dei pacchetti tra le varie interfacce.Questa impostazione vale per due tipi di rete:

  • reti che utilizzano indirizzi privati:
  • reti che utilizzano indirizzi pubblici routabili.

Non funziona se dovete far condividere una connessione Internet a una rete che utlizza indirizzi privati poiche gli indirizzi privati non sono riconosciuti dai router pubblici di Internet.In questo caso,avrete bisogno di un NAT (Network Address Translator).Supponete di aver un router dotato di tre interfacce di rete connesso a due sottoreti locali che utilizzano indirizzi privati e una WAN dotata di indirizzo IP pubblico.Le due sottoreti locali private si vedranno senza problemi,ma non potranno andare sulla WAN fino a quando non configurerete il NAT.

A rigor di termine,gli indirizzi IP privati sono routabili,altrimenti le vostre sottoreti locali non potrebbero funzionar,ma gran parte degli ISP li filtrano e non li inviano verso Internet visto che,se lo facessero,Internet sarebbe inondata di pacchetti con indirizzi privati duplicati.

Calcolare le sottoreti con ipcalc

Leggete spesso nella documentazione frasi come “affinchè funzioni,dovete usare sottoreti distinte”,oppure “assicuratevi che tutti gli host siano sulla stessa rete” e avete qualche dubbio sul loro esatto significato e su come calcolare gli indirizzi.

Il comando ipcalc serve al calcolo degli indirizzi delle sottoreti.E’ un comando standard disponibile in tutte le distribuzioni Linux.Il comanndo che segue mostra tutto ciò che è necessario sapere su una rete:

 

$ ipcalc 192.168.10.0/24
Address: 192.168.10.0 11000000.10101000.00001010. 00000000
Netmask: 255.255.255.0 = 24 11111111.11111111.11111111. 00000000
Wildcard: 0.0.0.255 00000000.00000000.00000000. 11111111
Network: 192.168.10.0/24 11000000.10101000.00001010. 00000000
HostMin: 192.168.10.1 11000000.10101000.00001010. 00000001
HostMax: 192.168.10.254 11000000.10101000.00001010. 11111110
Broadcast: 192.168.10.255 11000000.10101000.00001010. 11111111
Hosts/Net: 254 Class C, Private Internet

 

L’output del comando visualizza gli indirizzi nella normale notazione a punti e in quella CIDRS,gli intervalli di indirizzi disponibili,il numero di host che è possibile configurare e gli indirizzi binari.ipcalc mostra la parte di indirizzi relativa alla rete,192.168.10,e quella relativa agli host,che è 1-254.Questo comando è anche utile per impostare la maschera di rete.

Sotto Fedora,ipcalc è molto diverso e meno utile di quello delle altre distribuzioni Linux.Potete installare il “vero” ipcalc dai sorgenti che potete scaricare da http://freecode.com/projects/ipcalc , oppure provare whatmask che è molto simile a ipcalc ed è disponibile negli archivi di Fedora e lo potete installare tramite il comando.

yum install whatmask

Nel caso non sia /24 (o 255.255.255.0) dovete specificare la maschera di rete.Le più comuni maschere CIDR sono:

  • /8
  • /16
  • /24

Ecco i loro equivalenti nella notazione a punti:

  • 255.0.0.0
  • 255.255.0.0
  • 255.255.255.0

Usare le maschere di rete per differenziare le parti degli indirizzi relative alla rete e all’host.Questi sono intervalli di indirizzi IPV4 privati:

  • 10.0.0.0 – 10.255.255.255
  • 172.16.0.0 – 172.32.255.255
  • 192.168.0.0 – 192.168.255.255

Il primo 10.0.0.0 – 10.255.255.255 è quello che contiene più indirizzi.Se usate il primo numero del quartetto come indirizzo di rete e gli ultimi tre per gli indirizzi degli host potete avere fino a 16.777.214 indirizzi diversi in un unica rete gigante,come potete verificare con il seguente comando:

$ipcalc 10.0.0.0/8
Address: 10.0.0.0 00001010. 00000000.00000000.00000000
Netmask: 255.0.0.0 = 8 11111111. 00000000.00000000.00000000
Wildcard: 0.255.255.255 00000000. 11111111.11111111.11111111
Network: 10.0.0.0/8 00001010. 00000000.00000000.00000000
HostMin: 10.0.0.1 00001010. 00000000.00000000.00000001
HostMax: 10.255.255.254 00001010. 11111111.11111111.11111110
Broadcast: 10.255.255.255 00001010. 11111111.11111111.11111111
Hosts/Net: 16777214 Class A, Private Internet

 

Probabilmente una singola rete con 16.777.214 host non è esattamente ideale,quindi potete spezzarla in sottoreti.Questo esempio mostra tre sottoreti che utilizzano i primi due quartetti (evidenziati in grassetto) per la porzione degli indirizzi relativi alla rete:

$ ipcalc 10.1.0.0/16
$ ipcalc 10.2.0.0/16
$ ipcalc 10.3.0.0/16

Le altre sottoreti sono quelle che arrivano fino a 10.255.0.0/16.Potete configurare sottoreti ancora più piccole utilizzando maschere puù grandi:

$ ipcalc 10.1.1.0/24
$ ipcalc 10.1.2.0/24
$ ipcalc 10.1.3.0/24

Le altre sottoreti sono quelle che arrivano fino a 10.255.255.0/16

Le parti degli indirizzi che identificano gli host sono 1-254.Ricordate che l’indirizzo di broadcast è sempre quello più alto nella sottorete.ipcalc ha un altra funzionalità:permette di calcolare varie sottoreti con un solo comando.Supponete di voler suddividere la rete 10.150.0.0 in tre sottoreti per un totale di 100 host.Basterà dare a ipcalc la maschera e il numero di host desiderato in ciascun segmento:

$ipcalc 10.150.0.0/16 --s 25 25 50

ipcalc visualizzerà quindi le numerazioni e mostrerà gli intervalli gli indirizzi liberi.

ipcalc prevede alcune semplici opzioni,che potete vedere eseguendo:

$ipcalc --help

La notazione Classless Inter-Domain Routing (CIDR) è compatta e permette di specificare le sottoreti fino al livello di singolo host tramite il suffisso /32.

1 32 33 34 35 36 38