HowToRete
Bene, hai un'antenna sul tetto ed ora?
Se tutto è andato a buon fine appena collegato alla rete il tuo computer riceverà delle informazioni come IP, rotte, DNS servers, ... vediamo un po' cosa sono, se funziona tutto e se hai accesso alla rete...
In questa guida si assume che tu abbia Linux.
Se invece sei utente Windows o Mac probabilmente ti "basta che funzioni", salta direttamente a: Riavviare, se non funziona passa a Riavviare. Se invece fossi interessato a capire ed a smanettare ti invitiamo a creare una nuova guida su questo wiki che tratti anche altri sistemi operativi!
Overview
Quando ti connetti ad una rete di computers stai usando un insieme di protocolli ed elementi fisici, le loro interazioni sono schematizzate in uno standard chiamato OSI. Per avere un'idea del funzionamento della rete eigenNet, ma non solo, possiamo partire descrivendo il percorso che faranno i dati dalla sorgente alla destinazione, partiamo dal computer (il tuo) passo passo:
- Dei dati devono essere spediti dal computer client, per esempio il tuo, ad un server, per esempio uno dei server di wikipedia
- Il computer richiede ad un server DNS qual è l'IP del server di wikipedia (don't panic, è tutto spiegato più sotto)
- Una volta ottenuto l'IP il computer proverà a connettersi al server per ricevere i dati, i testi, le immagini
- Per fare questo creerà dei piccoli pacchetti di bits che verranno spediti alla scheda di rete (sia questa wireless o via cavo) contenenti la richiesta di questo o quel contenuto presente su wikipedia
- La scheda di rete si occuperà di trasmettere i pacchetti al passo successivo, nel caso della nostra rete i pacchetti verranno trasmessi fino all'antenna che è sul tuo tetto o sul tetto più vicino e da lì inizierà il percorso fino al gateway più vicino, dal quale raggiungerà il sito richiesto.
- Per il ritorno basta seguire il percorso inverso ma questa volta non serve il passaggio del DNS visto che i pacchetti contengono già nei loro header gli IP corretti (come una raccomandata a/r).
Un po' di spiegazioni dei termini usati:
- Un IP è un indirizzo numerico (ad esempio 123.4.56.78) che identifica un PC in una rete, se il PC viene spostato su una rete diversa il suo IP sarà diverso. Ci sono due tipi di IP: quello classico (IPv4) e quello nuovissimo (IPv6).
- Un IPv4 è un indirizzo formato da 4 campi di 8 bit ciascuno, in decimale i valori oscillano da 0 a 255 (ad esempio 123.4.56.78)
- Un IPv4 è un indirizzo formato da 4 campi di 8 bit ciascuno, in decimale i valori oscillano da 0 a 255 (ad esempio 123.4.56.78)
-
- Un IPv6 è un indirizzo formato da 8 campi di 16 bit ciascuno, in base16 i valori oscillano da 0000 a FFFF (ad esempio 2a00:1508:1:f010:abcd:1234:ef56:7890)
- Un IPv6 è un indirizzo formato da 8 campi di 16 bit ciascuno, in base16 i valori oscillano da 0000 a FFFF (ad esempio 2a00:1508:1:f010:abcd:1234:ef56:7890)
- Quando ci si connette ad una rete o si imposta sul proprio PC un IP statico o si chiede al DHCP che ci dia lui un IP.
- Il DHCP è protocollo che permette di avere assegnati i parametri corretti al momento della connessione, esso provvederà (se correttamente configurato lato server) a fornirci principalmente IP, rotte e DNS.
- Il gateway è chi (il modem di casa, il router wireless, un server...) ci permette di raggiungere internet, è l'apparecchio che inoltrerà i nostri pacchetti verso il resto del mondo e da cui passeranno le risposte.
- Un pacchetto è un blocco di 1 e 0 che viaggia su una linea di comunicazione. Chi vuole inviare dei dati li traduce in uni e zeri, li divide in pacchetti (di solito la dimensione massima di un pacchetto è circa un kilobyte e mezzo) e aggiunge all'inizio del pacchetto (header) delle informazioni come l'IP di destinazione e l'IP del mittente.
- Una interfaccia di rete rappresenta la componente fisica (di solito, ma non solo) con cui il PC si interfaccia col mondo esterno, ad esempio una interfaccia di rete può essere la porta a cui attacchi il cavo di rete (porta ethernet, su Linux solitamente si chiama eth0) oppure la scheda wireless del portatile (solitamente si chiama wlan0).
- Le rotte sono delle indicazioni che istruiscono il computer riguardo a come fare per poter raggiungere un certo computer in base al suo IP. Ad esempio una rotta può essere qualcosa tipo: "per comunicare tutti i pc che hanno un IP che inizia con 12.34. (la destnazione, può riferirsi ad un IP solo o a un grosso gruppo di IP che iniziano tutti nello stesso modo) devi passare tramite il pc che ha IP 11.22.33.44 (il gateway)".
- Perciò ogni rotta è un'indicazione "stradale" ed è strutturata così:
primo campo destinazione (default = 0.0.0.0/0 ovvero tutto) es. 192.168.1.0/24 secondo campo gateway ovvero colui che ti permette di raggiungere la destinazione es. via 192.168.1.1 campo dev indica l'interfaccia di rete (ad es. wireless o cavo o vpn) attraverso la quale si raggiunge la destinazione es. dev wlan0
Usando il terminale su Linux vediamo la configurazione delle rotte sul nostro pc per esempio con il commando "ip route show", ottenendo qualcosa di simile a:
user@computer $ ip route show default via 10.175.0.101 dev wlan0 proto static 10.0.0.0/8 via 172.18.0.1 dev eigennet 10.174.0.0/15 dev wlan0 proto kernel scope link src 10.174.0.178 172.16.0.0/12 via 172.18.0.1 dev eigennet 172.18.0.0/24 dev eigennet proto kernel scope link src 172.18.0.213 192.168.1.0/24 dev wlan0 proto kernel scope link src 192.168.1.111
- "10.0.0.0/8 via 172.18.0.1 dev eigennet" vuol dire che tutti i computer con IP 10.X.Y.Z sono raggiungibili attraverso il gateway avente IPv4 172.18.0.1 e l'interfaccia di rete "eigennet" (in questo caso non si tratta di interfaccia fisica, come quella via cavo o wireless bensì di una interfaccia che comunica con una VPN, argomento molto più avanzato).
- "10.0.0.0/8 via 172.18.0.1 dev eigennet" vuol dire che tutti i computer con IP 10.X.Y.Z sono raggiungibili attraverso il gateway avente IPv4 172.18.0.1 e l'interfaccia di rete "eigennet" (in questo caso non si tratta di interfaccia fisica, come quella via cavo o wireless bensì di una interfaccia che comunica con una VPN, argomento molto più avanzato).
- "10.174.0.0/15 dev wlan0" vuol dire che tutti i computer con IP 10.17{cifra che può essere 4 o 5}.X.Y sono raggiungibili direttamente (cioè senza dover passare da un gateway) attraverso l'interfaccia wireless chiamata "wlan0"
- I DNS (Domain Name Server) sono dei server che conoscono le associazioni "nome del sito" <-> "indirizzo IP del server su cui sta il sito". Il punto è che la comunicazione avviene tra l'IP del PC e l'IP del server, dunque non si può contattare un sito, esempio "eigenlab.org" senza prima conoscerne l'indirizzo IP. Quando noi cerchiamo di contattare un sito scrivendone il nome (come eigenlab.org) il nostro PC farà una domanda ad un DNS (del quale conosciamo già l'IP perchè ce lo ha detto il DHCP server) il quale ci risponderà con l'indirizzo IP associato a quel nome (nel nostro caso ad esempio l'associazione sarà eigenlab.org->10.175.0.85).
- Se ti interessa approfondire cos'è un server DNS puoi dare un'occhiata
- https://en.wikipedia.org/wiki/Domain_Name_System
- Per vedere come funzionano i DNS distribuiti nella rete eigenNet dai un occhiata a
- https://wiki.eigenlab.org/index.php/ConfigureBackUpAnycastDNS
Bene innanzitutto vediamo se tutto è ok
Prova ad aprire un terminale (in Linux ha l'icona di un quadrato nero, spesso sta in:programmi->accessori->console/terminale)
ed a scrivere:
ping 10.174.0.100 [invio]
Questo farà in modo che il tuo computer provi a parlare con uno dei server interni alla rete, quello che farà sarà mandare tanti piccoli pacchetti con scritto PING ed aspetterà altrettanti PONG in risposta dal server che ha IPv4 10.174.0.100.
Se compare qualcosa simile a:
user@computer $ ping 10.174.0.100 PING 10.174.0.100 (10.174.0.100) 56(84) bytes of data. 64 bytes from 10.174.0.100: icmp_seq=1 ttl=63 time=247 ms 64 bytes from 10.174.0.100: icmp_seq=5 ttl=63 time=70.9 ms 64 bytes from 10.174.0.100: icmp_seq=7 ttl=63 time=124 ms 64 bytes from 10.174.0.100: icmp_seq=8 ttl=63 time=80.9 ms
Allora stai comunicando con il server e sei dentro la rete :-)
Per interrompere il comando premi “Ctrl+C” (come per fare copia) che nella shell Linux termina un programma
--- 10.174.0.100 ping statistics --- 8 packets transmitted, 4 received, 50% packet loss, time 7029ms rtt min/avg/max/mdev = 70.992/130.862/247.472/70.216 ms
Questa sezione da qualche informaziona aggiuntiva ovvero quanti PING non hanno ricevuto un PONG, il minor tempo di risposta, quello medio, quello massimo e la deviazione standard dei tempi.
Altrimenti se il risultato è
user@computer $ ping 10.174.0.100 PING 10.174.0.100 (10.174.0.100) 56(84) bytes of data. ^C (ovvero Ctrl+C per interrompere) --- 10.174.0.100 ping statistics --- *70 packets transmitted, 0 received, 100% packet loss, time 69058ms*
Vuol dire che non sei collegato alla rete, dobbiamo iniziare a fare un po' di indagini. Intanto capiamo come è configurato il tuo computer.
Trubleshooting
Cominciamo col controllare un elemento per volta fra quelli coinvolti solitamente nei problemi dal lato client.
Controllo Dell'IP
Sempre da un terminale prova a scrivere
Se sei connesso in wireless
ip address show dev wlan0 (o il nome dell'interfaccia wireless, ad es. potrebbe essere wlan1, eth1, ath0, ra0) [invio]
Se sei connesso via cavo
ip address show dev eth0 (o il nome dell'interfaccia via cavo) [invio]
se il risultato è simile a
user@computer $ ip address show dev [nome interfaccia] 3: [interfaccia]: : <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1350 qdisc pfifo_fast state UNKNOWN qlen 500 link/ether e6:b9:06:73:14:1a brd ff:ff:ff:ff:ff:ff inet 10.175.0.213/15 brd 10.175.0.255 scope global valid_lft forever preferred_lft forever inet6 2001:1418:1a9:eebb:10:175:0:213/64 scope global valid_lft forever preferred_lft forever inet6 fe80::e4b9:6ff:fe73:141a/64 scope link valid_lft forever preferred_lft forever
Allora hai un indirizzo ipv4 e ipv6 impostati. Non stupirti se vedi tutti questi indirizzi IP diversi, ne puoi avere quanti vuoi anche sulla stessa interfaccia di rete (anche se normalmente sono pochi).
Cosa guardare:
<BROADCAST,MULTICAST,UP,LOWER_UP>
- è lo stato dell'interfaccia le cose importanti sono UP, LOWER_UP che ci dicono che l'interfaccia è attiva (potrebbe essere disattivata via software, via hardware ad esempio col bottoncino della wireless fisicamente presente sul portatile oppure semplicemente potrebbe esserci il cavo di rete staccato o rovinato (nel caso di scritta NO-CARRIER)).
inet 10.175.0.213/15 brd 10.175.0.255 scope global
- 10.175.0.213 è l'IPv4 dell'interfaccia: la nostra subnet (cioè il nostro gruppo di IP, quelli che il tuo computer, essendo collegato ad eigenNet, può contattare direttamente senza passare da un gateway) inizia con *10.17{5,4}* se hai un IP che comincia in quel modo è uno dei nostri; lo slash in fondo è la dimensione subnet, 15 è corretto.
inet6 2001:1418:1a9:eebb:10:175:0:213/64 scope global
- questo è l'IPv6 dell'interfaccia: la nostra subnet inizia con *2001:1418:1a9:eebb* se hai un IP che comincia in quel modo è uno dei nostri, come prima lo slash in fondo indica la subnet, 64 è corretto. Ignora la riga "inet6 fe80[...]/64 scope link" che riguarda un indirizzo presente anche se non si è davvero connessi.
Nessun IP
Se non hai gli IP impostati possiamo guardare le interfacce, ci viene in aiuto il comando
ip link
user@computer $ ip link 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 2: eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN mode DEFAULT qlen 1000 link/ether 00:23:8b:0b:b5:39 brd ff:ff:ff:ff:ff:ff 3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DORMANT qlen 1000 link/ether 00:23:4d:69:d5:f7 brd ff:ff:ff:ff:ff:ff
Anche qui possiamo vedere che ad esempio l'intefaccia eth0
<NO-CARRIER,BROADCAST,MULTICAST,UP>
Dice NO-CARRIER ovvero non collegato, potrebbe essere il caso di controllare l'attacco del cavo ethernet (cavo staccato o cavo rovinato)
E con state DOWN ci informa che l'interfaccia eth0 è spenta
Mentre l'interfaccia wlan0
<BROADCAST,MULTICAST,UP,LOWER_UP>
Dice che è collegata e tutto funziona
Una possibile soluzione nel caso che una delle interfacce avesse come state DOWN è la seguente:
sudo ip link set dev <interfaccia> up
Dopodichè ricontrollare se l'interfaccia è UP e provare a riconnettersi alla rete per vedere se viene assegnato un IP.
Altre cose esotiche che potrebbero impedire ad una interfaccia di rete di essere UP: il bottoncino della wireless sul portatile è su off, è necessario sbloccare l'interfaccia wireless via software con
rfkill unblock all
oppure raramente può esser necessario ricaricate i driver della scheda di rete, trovate il nome del driver con
lspci -k
sotto "Network controller" o "Ethernet controller", dopo "Kernel driver in use:", lo rimuovete e ricaricate con
sudo rmmod <nome del driver>; sudo modprobe <nome del driver>
Nel caso l'interfaccia indicasse UP per un certo tempo ma non si ricevesse un IP dal server DHCP è possibile capire cosa stia succedendo:
- Se usate NetworkManager controllate se siete associati all'Access Point (AP) di eigennet con
nm-tool
- Altrimenti provate con
iwconfig
- O ancora
iw dev <interfaccia> link
Che vi daranno informazioni sulla connessione wireless, sopratutto i primi campi. Se risultate associati all'access point (cioè c'è scritto il nome della rete, ad esempio "eigenNet") allora provate a dare
sudo dhcpcd wlan0
oppure, se lamenta che dhcpcd non esiste
sudo dhclient -v wlan0
Che cercherà nuovamente di ottenere i parametri (IP, rotte, DNS...) chiedendo se nella rete sono presenti dei server DHCP. In base all'output (il testo che esce dai comandi sopra riportati) capirete se ci sono altri problemi e potrete contattarci per segnalarlo ed aiutarci.
Controllo Delle Rotte
A questo punto controlliamo le rotte. Le possiamo controllare usando il comando
ip route show
Ottenendo qualcosa di simile a
user@computer $ ip route show default via 10.175.0.101 dev wlan0 proto static 10.0.0.0/8 via 172.18.0.1 dev eigennet 10.174.0.0/15 dev wlan0 proto kernel scope link src 10.174.0.178 172.16.0.0/12 via 172.18.0.1 dev eigennet 172.18.0.0/24 dev eigennet proto kernel scope link src 172.18.0.213 192.168.1.0/24 dev wlan0 proto kernel scope link src 192.168.1.111
Nessuna rotta
Per navigare dentro eigennet non serve una rotta global (0.0.0.0/0) perchè è una rete locale e, una volta connessi, si può raggiungere ogni risorsa dall'interno.
Se quindi il comando vi restituisce qualcosa di simile a
user@computer $ ip route show 10.174.0.0/15 dev wlan0 proto kernel scope link src 10.174.0.178
Vuol dire che avete la possibilità di raggiungere tutte le risorse interne ma che non potete raggiungere internet. Questo può essere a causa di qualche problema con i gateway o un problema nel raggiungerli. Se conoscete l'IP della macchina che dovrebbe farvi da gateway per il mondo provate a pingarla (ovvero fare un ping al suo indirizzo) per vedere se la raggiungete. Nel caso non riusciste fatecelo sapere, qualcosa sta succedendo sulla rete.
Rotta presente ma comunque non raggiungo internet
Nel caso ci sia una rotta definita anche per default ma non foste comunque in grado di connettervi potete aiutarci nel risolvere il problema digitando in un terminale il comando
traceroute wikipedia.org
o
tracepath wikipedia.org
questo dovrebbe dare un risultato similie a
user@computer $ tracepath wikipedia.org 1: etherpad.eigenlab.org 0.090ms pmtu 1500 1: 10.175.0.101 0.811ms 1: 10.175.0.101 0.496ms 2: 131.114.186.1 0.946ms 3: fib-ser.unipi.it 0.945ms asymm 4 4: ru-unipi-rx1-pi1.pi1.garr.net 0.970ms 5: rx1-pi1-rx1-rm2.rm2.garr.net 9.030ms 6: r-rm2-rx1-rm2.rm2.garr.net 5.639ms asymm 7 7: no reply alcuni server nascondono il loro nome 8: no reply 9: tiscali.mil01.atlas.cogentco.com 18.962ms asymm 10 10: xe-9-2-0.was10.ip4.tinet.net 113.285ms asymm 15 11: no reply 12: no reply 13: no reply 14: no reply 15: no reply 16: 208.80.152.201 152.453ms reached
Questo comando restituisce il percorso che hanno fatto i nostri pacchetti per raggiungere la destinazione, nel caso non riusciste a vedere un ""reached"" in fondo all'output del comando segnalatecelo includendo anche l'ultimo ip che vedete.
Per servizi interni alla rete, per come essa è strutturata, questo comando non funziona
Controllo dei DNS
Se tutto è andato bene ma non riuscite comunque a navigare potrebbe essere un problema di DNS per vedere quali avete impostati controllate il file /etc/resolv.conf
cat /etc/resolv.conf
Il risultato dovrebbe essere simile a questo:
user@computer $ cat /etc/resolv.conf nameserver 10.174.0.101 nameserver 10.174.0.100
queste due righe indicano gli IP dei server DNS, se il file è vuoto lancia questo comando da shell
echo -e "nameserver 10.174.0.100\nnameserver 10.174.0.101">/etc/resolv.conf
Che sovrascrive in /etc/resolv.conf con le due righe corrette.
Un sintomo del fatto che i DNS non funzionino può essere che facendo
ping google.it
il terminale non reagisce (come succedeva all'inizio della pagina ) ma
ping 8.8.8.8
Invece funziona.
Per fare manualmente la richiesta dell'IP associato ad un nome
dig nomesi.to
o se volete chiedere ad un server particolare (ad esempio a 8.8.8.8, un dns di google)
dig @8.8.8.8 nomesi.to
Dig solitamente è installato di default, se non lo fosse cercate su internet il nome della vostra distribuzione più dig (solitamente sta in qualche programma chiamato dnsutils, bindtools...)
Ma la mia antenna funziona/è accesa?
Per controllare che l'antenna sia accesa si possono sfruttare un paio di cose:
- Prima di tutto collegarsi via cavo all'antenna usando il cavo ethernet che arriva in casa o attaccandosi al POE (Power Over Ethernet ovvero lo scatolino nero che alimenta l'antenna usando la porta con scritto LAN, NON POE (perchè altrimenti forse si frigge la scheda di rete)
- controllare che sull'interfaccia cablata non compaia NO-CARRIER col comando
ip link show dev <interfaccia>
- provare a fare dei ping IPv6 link local ovvero provare a pingare un indirizzo che viene tradotto dal protocollo ipv6 in “ ogni scheda attaccata direttamente all'interfaccia “ questo si può fare digitando il comando
ping6 ff02::1%<nome dell'interfaccia di rete cablata ad esempio eth0>
Se si riceve risposta bisogna prendere nota dell'IPv6 locale della propria scheda di rete ethernet in modo da poter vedere se l'antenna risponde ai ping. Questo si fa facilemnte con
ip -6 address show dev eth0
e guardando l'ip che comincia con fe80:: , se ai ping risponde anche un'altro IP l'antenna è accesa e risponde
Entrare nelle antenne
Abbiamo trovato nella sezione precedente l'IP dell'antenna. Per entrarci dobbiamo usare il programma SSH che permette di interagire con l'antenna facendo apparire sul nostro computer il suo terminale, i comandi disponibili quindi saranno quelli installati sull'antenna. Il comando da lanciare è:
ssh -i <chiaveprivata> root@<ip antenna> [invio]
A questo punto il sistema chiederà di inserire la password della chiave (nel caso fosse protetta), altrimenti l'antenna ci darà subito il benvenuto con la ricetta di un drink seguito dal prompt.
BusyBox v1.19.4 (2012-10-02 10:56:10 CEST) built-in shell (ash) Enter 'help' for a list of built-in commands. _______ ________ __ | |.-----.-----.-----.| | | |.----.| |_ | - || _ | -__| || | | || _|| _| |_______|| __|_____|__|__||________||__| |____| |__| W I R E L E S S F R E E D O M ----------------------------------------------------- ATTITUDE ADJUSTMENT (Bleeding Edge, r33603) ----------------------------------------------------- * 1/4 oz Vodka Pour all ingredients into mixing * 1/4 oz Gin tin with ice, strain into glass. * 1/4 oz Amaretto * 1/4 oz Triple sec * 1/4 oz Peach schnapps * 1/4 oz Sour mix * 1 splash Cranberry juice ----------------------------------------------------- root@OpenWrt:~#
Riavviare
Una cosa buona se l'antenna per qualche motivo non si comporta bene è riavviarla, per farlo basta staccare il cavo attaccato allo scatolino nero alla porta con scritto POE oppure togliere la corrente se per caso il montaggio è stato fatto portando la corrente sul tetto, aspettare 12 secondi contando
- Prealpi Trivenete 1
- Alpi Giulie 2
- Alpi Carniche 3
- ...
- Alpi Liguri e Alpi Marittime 12
Se comunque non sei riuscito a risolvere contattaci.
Su eigenNet ci sono diversi servizi, li puoi scoprire qui: