Alternatives: differenze tra le versioni

Da Guide@Debianizzati.Org.
Vai alla navigazione Vai alla ricerca
mNessun oggetto della modifica
m (aggiunta "get-selections" + verifica guida)
 
(19 versioni intermedie di 6 utenti non mostrate)
Riga 1: Riga 1:
==Premessa==
{{Versioni compatibili}}
Oggi che la maggior parte degli utenti domestici ha la possibilit� di accede ad internet con connessioni a [http://it.wikipedia.org/wiki/Larghezza_di_banda banda] larga (ad esempio [http://it.wikipedia.org/wiki/ADSL ADSL]) e che � sempre pi� frequente avere a disposizione almeno un paio di computers si avverte la necessit� di poter condividere la connessione tra i vari computer della nostra rete domestica.
== Introduzione ==
Le ''alternative'' sono un sistema di link simbolici che permettono di gestire comodamente i programmi di default per ogni categoria di applicazioni (browser, editor, ecc ...).


GNU/Linux � probabilmente la scelta pi� indicata in questi frangenti, essendo un sistema operativo nato espressamente in ambiente di rete: moltissimi dei [http://it.wikipedia.org/wiki/Router router] sul mercato fanno uso di GNU/Linux come sistema operativo, perch� non farlo anche noi ?
L'idea che è alla base di questo sistema è di avere un database che raccoglie le possibili alternative ad una applicazione (per esempio, <code>x-www-browser</code> è una ''alternativa'' che può essere collegata al browser proferito).


==Prerequisiti==
== Struttura del sistema ==
Tutto quello di cui abbiamo bisogno � la nostra Debian, una scheda di rete per ciascun pc da collegare alla rete locale ed un hub o switch.


Se avete un collegamento adsl tramite modem usb e due soli computer, basta collegare le due schede di rete tramite cavetto ethernet cross (incrociato), non serve nient'altro. Uno dei due computer dovr� poi essere connesso ad internet tramite modem USB (vedere [[Indice_Guide#Modem_e_periferiche_di_rete|Modem e periferiche di rete]] per l'installazione e la configurazione), oppure tramite una seconda scheda di rete.
== Elenco Alternatives ==
 
<div align="center">
Per fare in modo che Debian si comporti come un router avremo bisogno anche di iptables. Vi rimando alla guida [[Debian e iptables]] per la sua corretta installazione e configurazione.
{|border="1" cellpadding="0" cellspacing="0" width="90%"
 
|Nome
==Configurazione Router==
|Descrizione
Per fare in modo che Debian faccia da [http://it.wikipedia.org/wiki/Gateway gateway] tra i pc della LAN e internet dobbiamo utilizzare il [http://it.wikipedia.org/wiki/Network_address_translation NAT] ''(Network Address Translation)''.<br>
|-
Il tipo di NAT che ci interessa in questa guida � chiamato '''masquerading''' ''(mascheramento)'' degli indirizzi locali.<br>
|editor
Il motivo � semplice: per accedere a internet � necessario avere un [http://it.wikipedia.org/wiki/Indirizzo_IP indirizzo IP] di tipo pubblico, che il nostro ISP ci fornisce. Per permettere anche ai computer sprovvisti di indirizzo pubblico di navigare, dobbiamo fare in modo che i loro indirizzi di tipo privato vengano "nascosti" dietro a quello pubblico.
|
 
|-
===Masquerading: configurazione automatica===
|fakeroot
Per fare masquerading � necessario utilizzare il firewall di Linux, Netfilter, tramite il comando apposito, che per i kernel recenti � <tt>iptables</tt>.
|
 
|-
Ci sono molti pacchetti in grado di impostare il firewall, in modo pi� o meno approfondito e pi� o meno user-friendly, ma la funzionalit� richiesta in questa sede � molto semplice, e se non siamo interessati ad aspetti legati alla sicurezza e al filtraggio di pacchetti forse non vale la pena di installare nulla.
|firefox-javaplugin.so
 
|
Nonostante questo, per�, segnalo il pacchetto '''ipmasq''', che � una collezione di script gi� impostati per gestire il firewall, e che gi� di default fornisce il masquerading e l'ip_forwarding (vedi pi� avanti), oltre ad un minimo di protezione di base, essenzialmente contro alcuni errori di configurazione. Per avere il masquerading funzionante basta quindi installarlo:
|-
aptitude install ipmasq
|ftp
 
|
se poi volete usare anche le funzionalit� avanzate potete sbizzarrirvi: la flessibilit� di ipmasq � totale, ma sar� necessario studiare un po'. La documentazione per ipmasq, come al solito, � in <tt>/usr/share/doc/ipmasq</tt>.
|-
 
|infobrowser
===Masquerading: configurazione manuale===
|
Se invece vogliamo procedere a mano, loghiamoci come utente '''root''' e digitiamo il seguente comando:
|-
<pre># iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE</pre>
|java, javac, ...
questo abilita il mascheramento degli indirizzi privati.
| impostazioni circa il [[path]] degli eseguibili Java
 
|-
Nel caso il computer che fa da router sia collegato ad internet mediante un'altra interfaccia di rete (di solito ethx) al posto di ppp0 va messo il nome di ques'ultima e quindi diventa:
|vi
<pre># iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE</pre>
| Permette di scegliere l'alternativa tra vi o vim
 
|-
Per caricare queste regole di iptables ad ogni avvio conviene salvarle una volta e per tutte con '''iptables-save''' e caricarle ad ogni avvio con '''iptables-restore'''. Questi comandi leggono e scrivono su STDIN e STDOUT quindi bisogna usare la redirezione di shell.
|view
 
|
Per salvare le regole correnti di iptables basta scrivere da root:
|-
<pre># iptables-save > /etc/iptables-save</pre>
|vim
 
|
Poi ad ogni avvio dovremo richiamare il seguente comando:
|-
<pre>
|www-browser
# cat /etc/iptables-save | iptables-restore
| Il browser di default in modalità testuale.
</pre>
|-
 
|x-cursor-theme
Questo comando si pu� inserire in uno script di avvio come <tt>/etc/init.d/bootmisc</tt>, forse � pi� logico inserirlo in <tt>/etc/init.d/networking</tt> anche perch�, in tal modo, riavviando la rete vengono anche reimpostate le regole di iptables. Per inserire il comando in <tt>/etc/init.d/networking </tt>scorrete il file fino a quasi la fine dove troverete le seguenti righe:
| Il tema dei cursori di default.
 
|-
<pre>
|x-session-manager
case "$1" in
| Il session manager di default.
    start)
|-
</pre>
|x-terminal-emulator
 
| L'emulatore di terminale predefinito da usare in X
ora appena prima di
|-
 
|x-window-manager
<pre>;;
| Il window manager di default.
stop)
|-
</pre>
|x-www-browser
 
| Il browser di default in modalità grafica.
si potr� inserire questo codice (al posto del singolo comando) per maggiore eleganza:
|}
 
</div>
<pre>
        # Carica le regole di iptables salvate
if [ -r /etc/iptables-save ]; then
    echo -en " * Loading iptables saved state ... "
    cat /etc/iptables-save | iptables-restore &&\
    echo "[ OK ]"
fi
</pre>
in questo modo la regola verr� caricata ad ogni avvio del sistema, senza che sia necessario digitarla nuovamente, e solo se il file <tt>/etc/iptables-save</tt> esiste ed � leggibile.
 
===Ip Forwarding===
Configurare iptables non � per� sufficiente. I comuni pc, infatti, non devono essere in grado di comportarsi come i [http://it.wikipedia.org/wiki/Router routers] e cio� non devono poter [[routing|instradare]] pacchetti da una rete all' altra.<br>
Dato che per noi � fondamentale abilitare questa possibilit�, dobbiamo agire su un paramentro del kernel che regola questa funzione: l' '''ip-forwarding'''.
 
L'ip-forwarding � abilitabile "al volo", semplicemente impostando a "1" la relativa variabile del kernel, con il comando:
<pre># echo 1 > /proc/sys/net/ipv4/ip_forward</pre>
cos� facendo per�, ad ogni riavvio dovremo reimpostare la variabile.
 
==== Impostare l'<tt>ip-forwarding</tt> al boot: <tt>/etc/sysctl.conf</tt> ====
 
Se avete installato ipmasq l'ip-forwarding � gi� abilitato: passate alle misure di sicurezza.
 
Il metodo pi� semplice, consigliato nella maggior parte dei casi, per impostare l'ip-forwarding ad ogni boot � di inserire in <tt>/etc/sysctl.conf</tt>:
 
<pre>
## Abilita il forwarding di pacchetti non locali - FONDAMENTALE
net/ipv4/ip_forward = 1
</pre>
 
E' opportuno impostare anche alcune misure di sicurezza:
 
<pre>
## Ignora finti messaggi di errore ICMP
net/ipv4/icmp_ignore_bogus_error_responses = 1
 
## Non risponde ai ping inviati al broadcast della subnet
net/ipv4/icmp_echo_ignore_broadcasts = 1
 
## Non accetta pacchetti ICMP di route redirection
net/ipv4/conf/all/accept_redirects = 0
</pre>
 
Oltre a queste regole Debian imposta per default la protezione dallo [http://it.wikipedia.org/wiki/IP_spoofing spoofing] degli indirizzi. Per completezza di informazione, comunque, questa regola risulta essere la seguente:
 
<pre>
## Protezione anti spoofing
net/ipv4/conf/all/rp_filter = 1
</pre>
 
Per un approfondimento riguardante i parametri del kernel networking modificabili a run-time, vi rimandiamo alla guida [[Parametri a run-time per Netfilter]].
 
==== Impostare l'<tt>ip-forwarding</tt> al boot: script ====
 
&Egrave; possibile anche abilitare l'ip-forwarding associando uno script alla creazione delle interfacce di rete, in fase di boot. Questo metodo � consigliato solo in caso di setup pi� complessi, in cui si vogliono impostare regole diverse a seconda dell'interfaccia di rete che si attiva.
 
Per prima cosa, apriamo con il nostro editor preferito il file '''/etc/network/interfaces''' e cerchiamo la sezione relativa alla nostra scheda di rete.
 
Dovreste individuare qualcosa di simile a:
 
<pre>
auto eth0
iface eth0 inet static
address 192.168.0.1
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255
</pre>
 
A questo punto, nella riga immediatamente successiva a "broadcast ...", inseriamo questa direttiva:
 
<pre>
auto eth0
iface eth0 inet static
address 192.168.0.1
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255
        pre-up /etc/network/iface-secure
</pre>
 
Questo comando dice allo script che si occupa di configurare la scheda di rete di lanciare un' altro script, e cio� '''/etc/network/iface-secure''', che provvediamo subito a creare con il comando:
 
<pre># touch /etc/network/iface-secure</pre>
 
Dopodiche' rendiamolo eseguibile con:
 
<pre># chmod +x /etc/network/iface-secure</pre>
 
All' interno di questo file scriveremo il nostro comando per abilitare l' ip-forwarding:
 
<pre>
### Abilita il forwarding di pacchetti non locali - FONDAMENTALE
echo 1 > /proc/sys/net/ipv4/ip_forward
 
### Ignora finti messaggi di errore ICMP
echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
 
### Non risponde ai ping inviati al broadcast della subnet
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
 
### Non accetta pacchetti ICMP di route redirection
echo 0 > /proc/sys/net/ipv4/conf/all/accept_redirects
</pre>
 
===Server DNS===
Per poter navigare su internet, � necessario che i PC della nostra rete locale abbiano accesso ad un server [[DNS]] che traduca per noi gli indirizzi internet in indiritti IP.  
 
Un modo per fare questo consiste nell' impostare per ciascuno dei nostri PC i server [[DNS]] forniti dal nostro provider.
 
Esiste tuttavia un' alternativa molto pi� comoda e performante: creare un nostro server [[DNS]] ed utilizzarlo in sostituzione di quelli del provider. Questa soluzione porta ad alcuni vantaggi:
* sui pc della LAN dovremo configurare sempre un solo server [[DNS]] immutabile e che conosciamo bene (senza faticose ricerche);
* i tempi di risposta sono nettamente pi� performanti rispetto a server esterni alla LAN, sia perch� il server � raggiungibile direttamente (senza instradamento attraverso internet), sia perch� sfrutta un sistema di cache (se 10 pc chiedono l' indirizzo di debian.org, ad esempio, il nostro [[DNS]] effetter� la richiesta solo la prima volta e per le restanti 9 utilizzer� le informazioni memorizzate nella propria cache);
* grazie a questo meccanismo di caching i [[DNS]] del provider sono meno stressati e quindi pi� performanti a loro volta.
 
Per realizzare il nostro server useremo '''bind''', probabilmente il miglior software esistente per questo compito.
 
Per prima cosa installiamo bind9 ed alcuni strumenti utili:
 
<pre># apt-get install bind9 bind9-host dnsutils</pre>
 
Ora configuriamo il server in modo che faccia le sue richieste ai server [[DNS]] che vogliamo noi anzich� ai ROOT SERVERS (sono pochi in tutto il mondo, molto stressati e aggiornati pi� lentamente di altri). Tutto quello che dobbiamo fare � editare la sezione '''options''' del file '''/etc/bind/named.conf.options''':
 
<pre>options {
directory "/var/cache/bind";
 
forward first;
forwarders {
INDIRIZZO IP DNS PRIMARIO; #varia a seconda del provider
INDIRIZZO IP DNS SECONDARIO; #varia a seconda del provider
};
 
auth-nxdomain no; # conform to RFC1035
};</pre>
 
Ora non ci resta che riavviare bind con il comando:
 
<pre># /etc/init.d/bind9 restart</pre>
 
e configurarlo come [[DNS]] sui pc della nostra rete.
 
===Altri Protocolli===
====FTP====
Con la configurazione svolta fino a questo punto dovrebbe essere possibile accedere dai PC della lan a server ftp esterni in ''passive mode'' (se ci� non fosse possibile vedere pi� avanti: [[Condividere_la_connessione_a_internet#Problemi_con_MTU|Problemi con MTU]]).
 
Se si vuole accedere a server ftp in active mode il router deve tracciare le connessioni ftp, e a tal scopo basta caricare i due moduli:


per visualizzare l'elenco completo delle alternatives disponibili nel sistema
<pre>
<pre>
# modprobe ip_conntrack_ftp
# update-alternatives --get-selections
# modprobe ip_nat_ftp
</pre>
</pre>


Da questo momento in poi i pc della lan dovrebbero essere in grado di accedere ai server ftp anche in ''active mode''.
== Modifica impostazioni ==
=== Ottenere informazioni ===
È possibile ottenere le informazioni relative alle varie alternative disponibili per una voce tramite il comando
<pre># update-alternatives --display <alternativa></pre>


====IRC====
L'output del comando sarà simile a questo:
Dovreste essere in grado di usare IRC senza problemi dai pc della vostra LAN. In caso contrario potreste provare a caricare manualmente i moduli che servono al router per gestire le connessioni ad IRC:
<pre># update-alternatives --display x-www-browser
x-www-browser - status is auto.
link currently points to /usr/bin/konqueror
/usr/bin/konqueror - priority 100
slave x-www-browser.1.gz: /usr/share/man/man1/konqueror.1.gz
/usr/bin/firefox - priority 70
slave x-www-browser.1.gz: /usr/share/man/man1/firefox.1.gz
/usr/bin/mozilla - priority 80
slave x-www-browser.1.gz: /usr/share/man/man1/mozilla.1.gz
Current `best' version is /usr/bin/konqueror.


<pre>
# modprobe ip_conntrack_irc ports=5555,6666,6667,6668,6669,7000
# modprobe ip_nat_irc
</pre>
</pre>
Verranno mostrati, in ordine di priorità, le varia alternative, accompagnate dalla [[manpage]].


dove, con la direttiva "ports=" indichiamo le porte generalmente utilizzate dai server IRC.
=== Cambiare l'associazione ===
 
Cambiare l'associazione, tra quelle disponibili, è semplice:
Se avete problemi, leggete pi� avanti: [[Condividere_la_connessione_a_internet#Problemi_con_MTU|Problemi con MTU]].
<pre># update-alternatives --config x-www-browser
 
==Configurazione LAN==
Passiamo ora alla configurazione degli altri PC della nostra rete domestica.<br>
===Premessa===
Generalmente per le reti locali domestiche si utilizzano indirizzi IP del tipo 192.168.0.x dove x � un numero variabile tra 1 e 254. Questo significa che all' interno della stessa rete possiamo avere fino a 254 indirizzi IP univoci.<br>
Generalmente il router di una rete ha come indirizzo IP il primo o l' ultimo della rete e cio� 192.168.0.1 oppure 192.168.0.254. In questo esempio noi useremo il primo.
===Assegnare un IP===
Ad ogni pc della LAN si deve assegnare un indirizzo ip per poter comunicare con gli altri pc della rete interna (che nel caso limite � il solo pc che fa da router). Per assegnare un indirizzo IP statico basta usare il comando:
<pre>
# ifconfig eth0 192.168.0.2 up
</pre>
dove 192.168.0.2 � l'indirizzo arbitrario che si � scelto per la particolare macchina.<br>
Il comando '''ifconfig''' permette di specificare molti pi� parametri, ma utilizzando l' indirizzo dell' esempio, questi verranno preconfigurati automaticamente.
Per non riscrivere questo comando ad ogni boot, si pu� inserire in /etc/network/interfaces:
<pre>
auto eth0
iface eth0 inet static
    address 192.168.0.2
    netmask 255.255.255.0
    network 192.168.0.0
    broadcast 192.168.0.255
</pre>


===Impostare il gateway===
There are 3 alternatives which provide `x-www-browser'.
Ora bisogna dire ad ogni macchina della lan di instradare tutti i pacchetti diretti verso l'esterno al pc fisicamente collegato ad internet (che fa da router). A tal scopo basta impostare il default gateway:
<pre>
# route add default gw 192.168.0.1
</pre>
Per non dover scrivere questo comando ad ogni riavvio, � sufficiente aggiungere al file /etc/network/interfaces, subito al di sotto della direttiva ''''broadcast ...'''' la seguente linea:
<pre>
  gateway 192.168.0.1
</pre>


===Impostare il server DNS===
  Selection    Alternative
Per impostare il server [[DNS]] che i nostri PC useranno � necessario editare il file '''/etc/resolv.conf''' inserendo la seguente linea:
-----------------------------------------------
<pre>nameserver 192.168.0.1</pre>
+        1    /usr/bin/konqueror
assicurandoci di scriverlo nella prima riga del file ''(ordine con cui il sistema interroga i [[DNS]] � identico a quello in cui compaiono in /etc/resolv.conf)''
*        2    /usr/bin/firefox
          3    /usr/bin/mozilla


===Client Windows�===
Press enter to keep the default[*], or type selection number:</pre>
Per la configurazione di eventuali PC con installato Microsoft� Windows� vi rimandiamo alla Guida in Linea, al sito di supporto ed al vostro rivenditore hardware (che per contratto � tenuto a fornirvi assistenza).
a questo punto sarà sufficiente inserire il numero della alternativa che si vuole utilizzare.


==Problemi con MTU==
A fianco delle varie scelte sono presenti due caratteri: '''+''' indica che quel programma ha la priorità maggiore (quindi, secondo il sistema, è l'associazione più appropriata); '''*''', invece, indica l'applicazione attualmente associata all'alternativa.
Pu� capitare a volte, specialmente con collegamenti adsl, che l'MTU impostato di default  per le interfacce di rete (1500) non sia appropriato e causi vari mafunzionamenti. Ad esempio, io non riuscivo ad usare wget, ftp, apt-get e irc. Altri hanno riportato di non potere accedere a certi siti.


Risolvere questo problema semplice, basta impostare l'MTU di tutte le interfacce ethernet ad un valore pi basso di 1500. A tal scopo basta aggiungere in /etc/network/interfaces una riga apposita:


Nel caso siano necessarie delle modifiche massive (come, ad esempio, nel caso in cui si voglia utilizzare il java ufficiale di Oracle) si può procedere alla riconfigurazione di tutte le ''alternatives'' con il comando:
<pre>
<pre>
iface eth0 inet static
# update-alternatives --all
address 192.168.0.2
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255
        mtu 1412
</pre>
</pre>
che si occuperà di richiamare <code>update-alternatives --config</code> su tutte le ''alternatives'' registrate. Per quelle relative a java, si potrà effettuare la modifica, mentre per le altre sarà sufficiente premere ''invio'' per mantenere le impostazioni attuali senza modificarle.


Questo su tutti i computer della LAN e anche sul pc che funge da router. Se si ha poi una connessione ppp per collegarsi ad internet, sul pc-router bisogner� impostare l'MTU anche per questa interfaccia. Qui, la configurazione potrebbe variare a seconda dei casi ma usualmente � possibile impostare l'MTU in '''/etc/ppp/options''' e/o in '''/etc/ppp/peers/tuo-provider'''.
=== Aggiunta ===
 
Per aggiungere alla lista delle alternative (o crearne una nuova) è possibile usare l'opzione <code>--install</code> nel seguente modo:
Riavviando ora tutte le interfacce di rete sia eth0 che ppp, avremo impostato il novo valore per l'MTU e sperabilmente avremo eliminato i malfunzionamenti.
 
==Test==
Finalmente siamo arrivati al momento di testare la nostra rete domestica.
 
Nei prossimi minuti cercheremo di appurare se i vari elementi che abbiamo predisposto in precedenza sono effettivamente funzionanti e, se non lo sono, per quale motivo.
 
Per fare questo avremo bisogno di alcuni tra i pi� usati strumenti diagnostici: '''ping''' e '''nslookup''', ma non preoccupatevi: il primo viene installato automaticamente ed il secondo abbiamo provveduto ad installarlo contestualmente a bind.
 
{{Warningbox| L'eseguibile '''/bin/ping''' deve avere il bit suid impostato per funzionare da utente normale. }}
 
===Comunicazione tra router e client===
Prima di tutto annotiamo l' indirizzo IP del client (in questo esempio: 192.168.0.2).
 
Ora apriamo una shell sul pc che funge da router e digitiamo il comando
<pre>
<pre>
$ ping -c 4 192.168.0.2
# update-alternatives [options] --install link name path priority [--slave link name path]
PING 192.168.0.2 (192.168.0.2) 56(84) bytes of data.
64 bytes from 192.168.0.2: icmp_seq=1 ttl=255 time=1.41 ms
64 bytes from 192.168.0.2: icmp_seq=2 ttl=255 time=0.953 ms
64 bytes from 192.168.0.2: icmp_seq=3 ttl=255 time=0.988 ms
64 bytes from 192.168.0.2: icmp_seq=4 ttl=255 time=1.02 ms
 
--- 192.168.2.0 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3002ms
rtt min/avg/max/mdev = 0.953/1.094/1.417/0.191 ms
</pre>
</pre>
con i seguenti parametri:
; link : il nome del link principale che punterà a quello inserito nella directory di alternatives (<code>/etc/alternatives/</code>)
; name : il nome del link in <code>/etc/alternatives/</code> (è normale farlo coincidere con il nome del link) che punterà all'eseguibile vero e proprio
; path : il path dell'eseguibile utilizzato come alternativa
; priority : la priorità da assegnare a questa alternativa
; --slave : si tratta di un'opzione facoltativa e utilizzabile più volte, che permette l'aggiunta di alternative secondarie, ciascuna accettante tre argomenti con il medesimo significato e configurata in base alla priorità dell'alternativa principale


Per ora non ci interessa il significato dei messaggi a video, ma unicamente il fatto che dal router � effettivamente possibile raggiungere (pingare) il client.
Ad esempio, se vogliamo aggiungere Firefox come browser, basterà dare il seguente comando:
 
Possiamo essere certi che � cos� guardando semplicemente le statistiche riassuntive stampate al termine del test, la frase
 
<pre>4 packets transmitted, 4 received, 0% packet loss, time 3002ms</pre>
 
infatti ci informa che abbiamo trasmesso al client 4 pacchetti e che il client li ha ricevuti tutti.
 
Se cos� non fosse, avremmo avuto un output del tipo
<pre>
<pre>
$ ping -c 4 192.168.0.2
# update-alternatives --install /usr/bin/x-www-browser x-www-browser /usr/bin/firefox 90 \
PING 192.168.0.1 (192.168.0.2) 56(84) bytes of data.
--slave /usr/share/man/man1/x-www-browser.1.gz x-www-browser.1.gz /usr/share/man/man1/firefox.1.gz
From 192.168.0.1 icmp_seq=1 Destination Host Unreachable
From 192.168.0.1 icmp_seq=2 Destination Host Unreachable
From 192.168.0.1 icmp_seq=3 Destination Host Unreachable
From 192.168.0.1 icmp_seq=4 Destination Host Unreachable
 
--- 192.168.0.2 ping statistics ---
4 packets transmitted, 0 received, +4 errors, 100% packet loss, time 2998ms
, pipe 3
</pre>
</pre>
L'alternativa secondaria specificata con <code>--slave</code> farà sì che dando:
<pre>$ man x-www-browser</pre>
sia richiamata la pagina di manuale di Firefox, fintanto che l'alternativa principale (<code>/usr/bin/firefox</code>) sarà utilizzata da <code>/usr/bin/x-www-browser</code>.


Possiamo vedere che il client (192.168.0.2) non � raggiungibile (Destination Host Unreachable) dal router (from 192.168.0.1).
=== Rimozione ===
Se tutto � andato bene passiamo al punto seguente, in caso contrario controlliamo:
Per la rimozione esistono due opzioni:
* che l' indirizzo del client sia corretto.
; --remove <name> <path> : provoca la rimozione di una sola alternativa (associata a <path>) dall'elenco di quelle relativa a <name>
* che i cavi di rete siano collegati correttamente;
; --remove-all <name> : rimuove l'intera alternativa <name>
* che le schede di rete segnalino la presenza del segnale elettrico (ethernel link);
 
===Comunicazione tra client e router===
Il traffico della nostra rete deve essere necessariamente di tipo bidirezionale: dobbiamo quindi assicurarci che dal client sia possibile raggiungere il router.
 
Ripetiamo le operazioni del punto precedente, questa volta, per�, operando dal client in direzione del router.
 
===Risoluzione dei nomi===
Verifichiamo che il nostro client sia in grado di risolvere i nomi degli host (di qui in seguito [[FQDN]]): questo significa che deve essere in grado di poter identificare un computer presente in internet non solo in base al suo indirizzo IP, ma anche in base ad un nome facilmente memorizzabile.
 
Facciamo subito un esempio usando come riferimento il FQDN '''www.debianizzati.org'''.
<pre>
# nslookup www.debianizzati.org
Server:        192.168.0.1
Address:        192.168.0.1#53


Non-authoritative answer:
Name:  www.debianizzati.org
Address: 66.199.227.58
</pre>
Possiamo vedere che il server che ci fornisce l' indirizzo 192.168.0.1, cio il nostro router, e che siamo in grado di risolvere gli FQDN in indirizzi IP. A riprova di questo, se tentiamo di pingare www.debianizzati.org, otterremo il seguente output:
<pre>
<pre>
$ ping -c 2 www.debianizzati.org
# update-alternatives --remove x-www-browser /usr/bin/firefox
PING www.debianizzati.org (66.199.227.58) 56(84) bytes of data.
64 bytes from cp4.idleserv.net (66.199.227.58): icmp_seq=1 ttl=50 time=153 ms
64 bytes from cp4.idleserv.net (66.199.227.58): icmp_seq=2 ttl=50 time=152 ms
</pre>
</pre>
mentre se non fosse possibile associare www.debianizzati.org al corretto IP, leggeremmo:
<pre>
$ ping www.debianizzati.org
ping: unknown host www.debianizzati.org
</pre>
== Conclusioni ==
Se siete giunti fino in fondo dovreste essere in grado di condividere la connessione ad internet in semplici LAN domestiche e risolvere i principali problemi che possono insorgere.


Se avete idee su come migliorare questa guida, segnalazione di errori e/o proposte non esistate a comunicarle nella pagina di discussione oppure sul [http://www.debianizzati.org forum di debianizzati].
== Riferimenti ==
* <code>man update-alternatives</code>


Buona Navigazione!
Per una gestione grafica dei link si veda la [[Amministrazione_grafica_delle_%22Alternatives%22|pagina]] dedicata.


----
{{Autori
Autore: [[Utente:Guide @ Debianizzati.Org|Debianizzati.Org]]<br>
|Autore= [[Utente:MaXeR|MaXeR]]
Revisione: [[Utente:Keltik|keltik]]<br>
|Estesa_da=
Revisione: [[Utente:TheNoise|The Noise]]
|Verificata_da=
: [[Utente:MadameZou|MadameZou]] 22:26, 5 mar 2010 (CET)
: [[Utente:HAL 9000|HAL 9000]] 18:03, 20 mag 2015 (CEST)
: [[Utente:Ombra|Ombra]] 19:02, 11 mar 2017 (CET)
|Numero_revisori=3
}}


Verificato da: [[Utente:Clockwork orange|Clockwork Orange]]
[[Categoria:Programmi da terminale]]
[[Categoria:Networking]][[Categoria:Desktop]]

Versione attuale delle 18:02, 11 mar 2017

Debian-swirl.png Versioni Compatibili

Tutte le versioni supportate di Debian

Introduzione

Le alternative sono un sistema di link simbolici che permettono di gestire comodamente i programmi di default per ogni categoria di applicazioni (browser, editor, ecc ...).

L'idea che è alla base di questo sistema è di avere un database che raccoglie le possibili alternative ad una applicazione (per esempio, x-www-browser è una alternativa che può essere collegata al browser proferito).

Struttura del sistema

Elenco Alternatives

Nome Descrizione
editor
fakeroot
firefox-javaplugin.so
ftp
infobrowser
java, javac, ... impostazioni circa il path degli eseguibili Java
vi Permette di scegliere l'alternativa tra vi o vim
view
vim
www-browser Il browser di default in modalità testuale.
x-cursor-theme Il tema dei cursori di default.
x-session-manager Il session manager di default.
x-terminal-emulator L'emulatore di terminale predefinito da usare in X
x-window-manager Il window manager di default.
x-www-browser Il browser di default in modalità grafica.

per visualizzare l'elenco completo delle alternatives disponibili nel sistema

# update-alternatives --get-selections

Modifica impostazioni

Ottenere informazioni

È possibile ottenere le informazioni relative alle varie alternative disponibili per una voce tramite il comando

# update-alternatives --display <alternativa>

L'output del comando sarà simile a questo:

# update-alternatives --display x-www-browser
x-www-browser - status is auto.
 link currently points to /usr/bin/konqueror
/usr/bin/konqueror - priority 100
 slave x-www-browser.1.gz: /usr/share/man/man1/konqueror.1.gz
/usr/bin/firefox - priority 70
 slave x-www-browser.1.gz: /usr/share/man/man1/firefox.1.gz
/usr/bin/mozilla - priority 80
 slave x-www-browser.1.gz: /usr/share/man/man1/mozilla.1.gz
Current `best' version is /usr/bin/konqueror.

Verranno mostrati, in ordine di priorità, le varia alternative, accompagnate dalla manpage.

Cambiare l'associazione

Cambiare l'associazione, tra quelle disponibili, è semplice:

# update-alternatives --config x-www-browser

There are 3 alternatives which provide `x-www-browser'.

  Selection    Alternative
-----------------------------------------------
 +        1    /usr/bin/konqueror
*         2    /usr/bin/firefox
          3    /usr/bin/mozilla

Press enter to keep the default[*], or type selection number:

a questo punto sarà sufficiente inserire il numero della alternativa che si vuole utilizzare.

A fianco delle varie scelte sono presenti due caratteri: + indica che quel programma ha la priorità maggiore (quindi, secondo il sistema, è l'associazione più appropriata); *, invece, indica l'applicazione attualmente associata all'alternativa.


Nel caso siano necessarie delle modifiche massive (come, ad esempio, nel caso in cui si voglia utilizzare il java ufficiale di Oracle) si può procedere alla riconfigurazione di tutte le alternatives con il comando:

# update-alternatives --all

che si occuperà di richiamare update-alternatives --config su tutte le alternatives registrate. Per quelle relative a java, si potrà effettuare la modifica, mentre per le altre sarà sufficiente premere invio per mantenere le impostazioni attuali senza modificarle.

Aggiunta

Per aggiungere alla lista delle alternative (o crearne una nuova) è possibile usare l'opzione --install nel seguente modo:

# update-alternatives [options] --install link name path priority [--slave link name path]

con i seguenti parametri:

link
il nome del link principale che punterà a quello inserito nella directory di alternatives (/etc/alternatives/)
name
il nome del link in /etc/alternatives/ (è normale farlo coincidere con il nome del link) che punterà all'eseguibile vero e proprio
path
il path dell'eseguibile utilizzato come alternativa
priority
la priorità da assegnare a questa alternativa
--slave
si tratta di un'opzione facoltativa e utilizzabile più volte, che permette l'aggiunta di alternative secondarie, ciascuna accettante tre argomenti con il medesimo significato e configurata in base alla priorità dell'alternativa principale

Ad esempio, se vogliamo aggiungere Firefox come browser, basterà dare il seguente comando:

# update-alternatives --install /usr/bin/x-www-browser x-www-browser /usr/bin/firefox 90 \ 
--slave /usr/share/man/man1/x-www-browser.1.gz x-www-browser.1.gz /usr/share/man/man1/firefox.1.gz

L'alternativa secondaria specificata con --slave farà sì che dando:

$ man x-www-browser

sia richiamata la pagina di manuale di Firefox, fintanto che l'alternativa principale (/usr/bin/firefox) sarà utilizzata da /usr/bin/x-www-browser.

Rimozione

Per la rimozione esistono due opzioni:

--remove <name> <path>
provoca la rimozione di una sola alternativa (associata a <path>) dall'elenco di quelle relativa a <name>
--remove-all <name>
rimuove l'intera alternativa <name>
# update-alternatives --remove x-www-browser /usr/bin/firefox

Riferimenti

  • man update-alternatives

Per una gestione grafica dei link si veda la pagina dedicata.




Guida scritta da: MaXeR Swirl-auth80.png Debianized 80%
Estesa da:
Verificata da:
MadameZou 22:26, 5 mar 2010 (CET)
HAL 9000 18:03, 20 mag 2015 (CEST)
Ombra 19:02, 11 mar 2017 (CET)

Verificare ed estendere la guida | Cos'è una guida Debianized