nicolap8
Posts: 677
Joined: Mon Mar 13, 2017 9:45 pm

[GUIDA] Impostare un IP statico

Tue May 26, 2020 10:39 am

Come impostare un IP statico su una delle interfacce di rete, con Raspbian. Per principianti.
Guida aggiornata il 26/05/2020.

La configurazione delle rete non è mai banale ma con qualche accortezza si può fare senza spargimento di bit.
Servono alcune conoscenze e qualche informazione. Vediamo quindi di conoscere il minimo indispensabile del protocollo tcp/ip.

Intanto un minimo di bibliografia, da leggere in ordine:
https://it.wikipedia.org/wiki/Modello_OSI
https://it.wikipedia.org/wiki/Suite_di_ ... i_Internet
https://it.wikipedia.org/wiki/Internet_Protocol
https://it.wikipedia.org/wiki/Classi_di_indirizzi_IP

In questa guida parlerò solo di IPV4, ignorerò IPV6 perché troppo complesso e sostanzialmente inutile per l'utente principiante.
Se qualche volta facessi delle generalizzazioni, vanno intese come semplificazioni per non complicare troppo le cose addentrandosi in dettagli.

Tutti i dispositivi collegati in una rete tramite cavo ETHERNET o via WIFI hanno bisogno di un codice identificativo univoco: il numero IP. Tale numero è un numero intero tra 0 e 2^32 -1 (usa cioè 32 bit). Poiché usare un numero in tale modo è scomodo si usa rappresentarlo in un modo alternativo (quando serve agli umani) dividendo i 32 bit in 4 byte (8*4=32), usando la numerazione decimale e separando i 4 numeri (1 byte "contiene" i numeri da 0 a 255) con un punto ".". Ad esempio:
in base 10: 3232235778
in base 16: 0xC0A80102
notazione umana standard: 192.168.1.2

Inoltre gli indirizzi IP sono divisi in classi, reti, sottoreti, etc. Esiste quindi un secondo numero che permette di gestire il partizionamento e la separazione tra le reti, si chiama netmask ed ha una forma analoga, es.: 255.255.255.0
Nell'uso normale, casalingo di PC e Raspberry si usa la netmask 255.255.255.0 che permette di avere fino a 254 dispositivi collegati in rete. Qualche volta però i router ADSL usano delle netmask differenti, vedremo poi come ovviare.

Un altro numero che ci serve per configurare la nostra rete è il cosidetto gateway, cioè il dispositivo che si occupa di fare da tramite tra la nostra rete locale e internet, di solito il router ADSL. Anche questo, ovviamente è un numero IP, spesso questo: 192.168.1.1

Si ma... tutti sti numeri a che servono se poi io al browser chiedo di mostrarmi www.youtube.com??? La risposta sintetica è che in realtà anche www.youtube.com ha un suo IP e il browser prima cercherà tale numero e solo se lo trova si collegherà a quel IP per ricevere le pagine. Esiste infatti un servizio chiamato DNS che permette di fare questa trasposizione nome-IP. E, ovviamente, per usare il servizio serve conoscerne prima il numero IP! Quindi per configurare un dispositivo affinché possa connettersi ad internet serve un quarto numero: l'IP del server DNS (di solito, in realtà, si usano 2 DNS in modo da averne uno di riserva).
Di DNS ce ne sono molti, pubblici, "open" e privati. Inoltre, di solito, il nostro router è in grado di fare da DNS.

Quando parte la prima volta Raspbian cerca di assegnare i vari numeri IP usando il protocollo DHCP (di solito abilitato nel router). Vediamo quindi quali sono le impostazioni attuali.
Una premessa, il nostro Raspberry può avere una o due interfacce di rete (se non ne avesse nessuna... manca qualcosa!) che avranno un nome del tipo
eth0 per la scheda ethernet
wlan0 per il WIFI
Esiste anche una interfaccia virtuale chiamata "lo" (abbreviazione di loopback) che serve al Sistema Operativo e alle applicazioni per usare il protocollo TCP/IP almeno tra di loro. Tale interfaccia ha sempre IP 127.0.0.1 e risponde anche al nome di "localhost", cioè se cercate, in qualche modo, il PC chiamato "localhost" vi risponderà sempre il PC stesso.
Ora apriamo un terminale e diamo il comando "ifconfig", riceveremo una risposta del genere (in questo caso da un Raspberry Pi 3B+):
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.38 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 fe80::5c7f:ef7b:4c0d:2e4d prefixlen 64 scopeid 0x20<link>
ether b8:27:eb:68:20:68 txqueuelen 1000 (Ethernet)
RX packets 37305 bytes 5698019 (5.4 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 9979 bytes 1171278 (1.1 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 267 bytes 16244 (15.8 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 267 bytes 16244 (15.8 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.242 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 fe80::4dd9:fc1b:d92c:6845 prefixlen 64 scopeid 0x20<link>
ether b8:27:eb:3d:75:3d txqueuelen 1000 (Ethernet)
RX packets 21510 bytes 3801657 (3.6 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 1094 bytes 208087 (203.2 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
Ho evidenziato i dati che ci interessano, per l'interfaccia wlan0: ha un IP 192.168.1.242 e netmask 255.255.255.0
Tutto il resto non ci serve.

Ora vediamo qual'è il gateway usando il comando "route":
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default 192.168.1.1 0.0.0.0 UG 202 0 0 eth0
default 192.168.1.1 0.0.0.0 UG 303 0 0 wlan0
192.168.1.0 0.0.0.0 255.255.255.0 U 202 0 0 eth0
192.168.1.0 0.0.0.0 255.255.255.0 U 303 0 0 wlan0
Il numero che ci interessa è 192.168.1.1, annotatelo.

L'ultimo che ci serve è il DNS, per la "risoluzione" dei nomi, infatti lo leggiamo così: "cat /etc/resolv.conf"
# Generated by resolvconf
nameserver 192.168.1.1
In questo caso l'unico DNS configurato corrisponde al IP del mio router, ragionevole. Molti usano quelli di Google 8.8.8.8 o di https://www.opendns.com/ 208.67.222.222

Riassumiamo, l'interfaccia WIFI, di nome wlan0 è configurata così:
IP 192.168.1.242
Netmask 255.255.255.0
Gateway 192.168.1.1
DNS 192.168.1.1
Una nota fondamentale: il numero IP DEVE essere univoco (nella vostra rete locale). La maggior parte dei router moderni si accorge se state usando in modo statico l'IP che vi avrebbe dato lui, pertanto è possibile continuare ad usare lo stesso. Le eccezioni sono abbastanza rare.
Per dare un IP diverso dovete essere certi che nessun altro dispositivo lo stia già usando, altrimenti entrambi avranno problemi!

Per i pignoli, manca un'informazione: come sappiamo che quell'IP non è statico ma arriva dal DHCP? Con il comando "ip addr show dev eth0"
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether b8:27:eb:68:20:68 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.236/24 brd 192.168.1.255 scope global dynamic noprefixroute eth0
valid_lft 86191sec preferred_lft 75391sec
In questo caso ho richiesto solo le informazioni per l'interfaccia "eth0" per avere una lettura più semplice. Il flag "dynamic" che ho evidenziato ci dice che l'IP è dinamico e non statico.

Dopo questa lunga introduzione passiamo all'azione.
Fin'ora abbiamo usato il terminale ma se avete attivato anche l'interfaccia grafica potete fare quest'iltimo passo anche col mouse, più sotto...

Nel terminale diamo il comando "sudo nano /etc/dhcpcd.conf" e procediamo alla modifica. Verso la fine del file troviamo questo:
# Example static IP configuration:
#interface eth0
#static ip_address=192.168.0.10/24
#static ip6_address=fd51:42f8:caae:d92e::ff/64
#static routers=192.168.0.1
#static domain_name_servers=192.168.0.1 8.8.8.8 fd51:42f8:caae:d92e::1
Dobbiamo notare alcune cose che, purtroppo, complicano un po' le cose (ricordate una cosa fondamentale: Linux non è fatto per gli "utenti").
Innanzitutto la cosa più importante: il primo carattere di ogni riga è un cancelletto "#", questo significa che quella riga è un commento e verrà ignorata. Quest'uso è molto comune in Linux, ricordatelo!
Un'altra cosa nuova è il "/24" posto dopo il valore di ip_address. Quello è un modo alternativo di impostare la netmask e /24 corrisponde a 255.255.255.0 che è il valore che ci interessa.
L'ultima anomalia è la presenza di ip6_address che permette di impostare i parametri per il protocollo IPV6, ignoriamolo!

Finalmente ecco cosa dovremo scrivere (in fondo al file):
#config del 26/05/2020 impostata da Nicola
interface eth0
static ip_address=192.168.1.38/24
static routers=192.168.1.1
static domain_name_servers=192.168.1.1 8.8.8.8 208.67.222.222
Poi premete Ctrl+o per salvare e Ctrl+x per uscire, a questo punto perché la configurazione sia resa attiva bisogna fare il "sudo reboot" del Raspberry.


Vediamo, infine, come usare il programma di configurazione fornito con la GUI. In altro a destra, appena a sinistra dell'ora dovreste vedere l'icona della rete
iconaretebuster.PNG
iconaretebuster.PNG (24.08 KiB) Viewed 5047 times
andateci sopra col mouse e premete il tasto destro, apparirà un menù contestuale, scegliete la prima voce.
Comparirà una finestra in cui potrete configurare comodamente tutte le vostre interfacce di rete.

Return to “Italiano”