Passa ai contenuti principali

Linux: connettersi ad Internet da riga di comando

Una delle ragioni per cui Linux viene maggiormente apprezzato è sicuramente l'efficienza nel gestire le reti. Questo è anche il motivo per cui ormai qualunque distribuzione - anche in versione live - offre all'utente gli strumenti più idonei e user-friendly per connettersi ad Internet.

Ma come fare se, ad esempio durante la fase di installazione, si dispone solo di una connessione 3G? O se, riscontrando problemi alla scheda grafica, si renda necessario connettersi in emergenza alla rete dalla shell dei comandi? O se, utilizzando distribuzioni minimaliste e/o un po' datate, non si disponga del caro vecchio Network Manager?

In questo articolo viene, appunto, spiegato come connettersi ad Internet da linea di comando in Linux, e quindi cavarsela in tutte quelle situazioni nelle quali non sia disponibile una delle usuali interfacce grafiche.

I metodi qui descritti sono stati verificati in ambiente Arch Linux. Le singole istruzioni, in particolare, potrebbero eccezionalmente richiedere minimi adattamenti se utilizzate in altre distribuzioni. Ciò nondimeno, la trattazione ha carattere del tutto generale. 

Nel seguito dell'articolo si adotterà la convenzione classica di far precedere i singoli comandi dai simboli # o $ per indicare, rispettivamente, che l'istruzione dovrà essere eseguita con i diritti di amministratore o come semplice user.   


1. Verificare la connessione

In ambiente Linux, per verificare la presenza di connessione la soluzione più semplice è offerta dall'istruzione

$ ping -c <n> <ip-address>  

Il comando ping viene, difatti, impiegato per verificare la connettività tra due host su una rete. In particolare, il parametro n (= 1, 2, 3, ...) indica il numero di pacchetti (o Internet Control Message Protocol echo request packets) da inviare dal primo al secondo host, di indirizzo ip_address, per verificarne la raggiungibilità. 

Eseguendo, ad esempio, dalla propria macchina,

$ ping -c 3 www.google.com

si potrebbero ottenere messaggi del tipo: 

64 bytes from mil01s17-in-f17.1e100.net (173.194.35.49): icmp_seq=1 ttl=55 time=20.3 ms

ad indicare che è possibile raggiungere il sito Google via Internet, o, viceversa, un messaggio del tipo:  

ping: unknown host www.google.com

che ne indica la indisponibilità (ovviamente, in quest'ultimo caso, le cause della non raggiungibilità dell'host remoto potrebbero essere anche diverse dall'assenza di connessione alla rete). 

Di seguito, si supporrà, ovviamente, l'assenza di connessione alla rete. Volendo simulare sulla propria macchina questa condizione per sperimentare direttamente quanto di seguito descritto , si consiglia di arrestare tutti i servizi di rete:  

# systemctl stop NetworkManager.service
# systemctl stop dhcpcd.service
# systemctl stop wpa_supplicant.service



2. Identificare le interfacce di rete

La prima cosa da fare è identificare le interfacce di rete sul proprio computer, ovvero sapere come Linux referenzia i dispositivi di connessione a disposizione. 
L'istruzione che elenca le interfacce di rete disponibili è:

$ ifconfig -a

Ifconfig (o interface configurator), appartenente al pacchetto net-tools, è difatti il principale comando dei sistemi Unix-like per configurare e controllare un'interfaccia di rete TCP/IP. Se invocato senza argomenti, ifconfig mostra i dettagli delle interfacce di rete attive; se utilizzato col parametro a (sta per all) mostra i dettagli di tutte le interfacce di rete, attive e non, come risulta anche dall'esempio seguente: 

eth0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        ether c8:0a:a9:3f:0d:fc  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        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 0  (Local Loopback)
        RX packets 266  bytes 20148 (19.6 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 266  bytes 20148 (19.6 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.2  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 fe80::f27b:cbff:fe35:3977  prefixlen 64  scopeid 0x20<link>
        ether f0:7b:cb:35:39:77  txqueuelen 1000  (Ethernet)
        RX packets 4136  bytes 1095874 (1.0 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 5200  bytes 2945003 (2.8 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

É qui abbastanza intuitivo riconoscere in eth0 un'interfaccia di rete ethernet e in wlan0 un'interfaccia wireless. Con lo viene, invece, usualmente indicata l'interfaccia di loopback utilizzata nelle reti TCP/IP per identificare la macchina locale.  

Altri usi di ifconfig verranno illustrati più avanti nel documento.



3. Connettersi ad Internet dalla shell dei comandi 

Connettersi ad internet da riga di comando è abbastanza agevole in Linux e, come detto, può costituire "la soluzione" in tutte quelle situazioni nelle quali non risulti disponibile un'interfaccia grafica.

Di seguito vengono esaminate le tre situazioni più comuni:    


3.1 Connessione ad una rete via cavo

Dovendosi connettere ad una rete via cavo, una volta identificata l'interfaccia di rete wired (es. wlan0), stabilire una connessione è immediato:

# ifconfig <nome_interfaccia> up
# dhcpcd <nome_interfaccia>

In dettaglio,

  • ifconfig <nome_interfaccia> up: abilita l'interfaccia di rete specificata
  • dhcpcd <nome_interfaccia> (DHCP = Dynamic Host Configuration Protocol) configura l'interfaccia e le assegna un indirizzo IP dinamico.

Se, inoltre, si intende configurare manualmente l'interfaccia in esame, il comando

# ifconfig [<nome-interfaccia> <ip-address>] [netmask <ip-address>] [broadcast <ip-address>]

è in grado di impostare un indirizzo IP statico e/o netmask e/o broadcast.


3.2 Connessione ad una rete wireless 

Nel caso di rete wireless, per identificare l'interfaccia di rete, oltre ad ifconfig, è possibile utilizzare il comando:

$ iwconfig

Iwconfig (o wireless interface configurator) appartiene difatti al pacchetto wireless_tools ed è preposto alla gestione delle interfacce di rete wireless.

Per attivare l'interfaccia di rete wireless di interesse, anche in questo caso, è possibile usare il comando

# ifconfig <nome-interfaccia> up

Infine, il comando

$ iwlist <nome-interfaccia> scann

(iwlist è anch'esso contenuto nel pacchetto wireless_tools) è in grado di eseguire lo scanning delle rete wireless circostanti e di fornire in particolare informazioni su:

  • ESSID (o Extended Service Set Identification) ovvero il nome della rete wireless, e
  • Encryption Key il cui valore pari ad on indica la presenza di linee protette con cifratura WEP o WPA

É ora necessario distinguere fra:


3.2.1 Connessione ad una rete aperta

Per connettersi ad una rete wireless non protetta, è sufficiente eseguire:


# iwconfig <nome-interfaccia> essid '<nome-rete>' key open
# dhcpcd <nome-interfaccia>


3.2.2 Connessione ad una rete protetta con chiave a cifratura WEP

Nel caso in cui la rete risulti protetta da chiave WEP, 64 o 128 bit, sarà necessario eseguire:

# iwconfig <nome-interfaccia> essid '<nome-rete>' key '<chiave>'
# dhcpcd <nome-interfaccia>


3.2.3 Connessione ad una rete protetta con chiave a cifratura WPA/WPA2

La situazione è leggermente più complessa nel caso in cui ci si trovi in presenza di rete wireless protetta con chiave a cifratura WPA/WPA2. In questo caso è, difatti, necessario generare preventivamente un file di configurazione a partire dalla password di rete come mostrato di seguito:

# wpa_passphrase '<nome-rete>' '<password>' > <path-file-di-configurazione>

É quindi possibile stabilire la connessione alla rete mediante:  

# wpa_supplicant -D nl80211 -i <nome-interfaccia> -c <path-file-di-configurazione>
# dhcpcd <nome-interfaccia>

É in ogni caso necessaria la presenza del pacchetto wpa_supplicant che contiene gli applicativi wpa_supplicant e wpa_passphrase


3.3 Connettersi ad una rete mobile

Qualora, infine, ci si trovi nella necessità di connettersi ad Internet tramite operatore mobile (utilizzando ad esempio una chiavetta o un cellulare come modem remoto), questa la procedura da seguire:    

A. Inserire la SIM all'interno di un qualunque dispositivo mobile e disabilitare la richiesta del PIN;

B. Verificare che sul computer risulti attivo il modulo kernel usbserial. A tal fine eseguire

$ lsmod

per visualizzare la lista di moduli del kernel caricati e verificare la presenza del modulo usbserial, o usbcore (che include usbserial). Qualora il modulo usbserial non dovesse risultare attivo, è possibile caricarlo manualmente tramite il comando

# modprobe usbserial  

C. Per identificare ora il dispositivo di connessione, collegarlo via USB al computer e, dopo qualche secondo, eseguire

$ lsusb
L'istruzione mostra difatti l'elenco dei device connessi alla macchina via USB; si prenda, in particolare, nota della stringa relativa al proprio modem, che sarà del tipo

Bus <numero-bus> Device <numero-device>: ID <id-produttore>:<id-prodotto> <descrizione-dispositivo>

Si presti particolare attenzione al fatto che alcuni dispositivi sono progettati per funzionare sia come modem, sia come memory card: alle due funzioni corrispondono codici differenti.

D. Utilizzando infine il pacchetto wvdial, eseguire il comando:

# wvdialconf

il cui effetto è quello di generare automaticamente un file di configurazione /etc/wvdial.conf del tipo:

[Dialer Defaults]
Init1 = ATZ
Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
Modem Type = Analog Modem
ISDN = 0
Modem = /dev/ttyUSB2
Baud = 9600


[Dialer thenet]
Phone = <numero-connessione>
Username = <utente-connessione>
Password = <password-connessione>
Stupid Mode = 1
Baud = 460800
Init3 = AT+CGDCONT=1,"IP","<apn>"

Per quanto completo, il file di configurazione così generato potrebbe necessitare di qualche ulteriore configurazione manuale. In ogni caso sarà necessario impostare manualmente i parametri:

<numero-connessione>    (normalmente *99#)
<utente_connessione>  (tipicamente non necessario)
<utente_connessione>  (tipicamente non necessario)
<apn>  (a seconda dell'operatore telefonico: ibox.tim.it, web.omnitel.it, internet.wind, tre.it)
   
E. Per connettersi ad Internet è ora sufficiente eseguire

# wvdial

Per terminare la connessione, utilizzare la combinazione di tasti CTRL+C

F. In caso di mancata connessione è comunque possibile:

  • modificare opportunamente il file di configurazione /etc/wvdial.conf
  • installare l'utility usb_modeswitch per il riconoscimento dei dispositivi non supportati direttamente dal kernel (modulo usbserial). In particolare, usb_modeswitch gestisce l'insieme di regole in /lib/udev/rules.d/40-usb_modeswitch.rules: se necessario, dopo aver identificato il proprio dispositivo (vd, p.to 3), aggiungere manualmente una nuova regola.
  • in alternativa, sempre dopo aver identificato il proprio USB Modem, è possibile forzarne il riconoscimento eseguendo:

modprobe usbserial vendor=0x<id-produttore> product=0x<id-prodotto>

  • eventualmente eseguire uno script del tipo

usb_modeswitch
sleep 2
modprobe usbserial vendor=0xVVVV product=0xMMMM maxSize=4096
sleep 2
wvdial thenet

Commenti

Post popolari in questo blog

Introduzione alle reti 3 - Switch tecnologies

In questa sezione verranno esaminate le Virtual LAN, prima espressione della tecnologia LAN Switching.    Virtual Local Area Network (VLAN) Come già detto, uno dei punti di forza di uno switch risiede nella possibilità di creare sotto-reti a basso costo. Le VLAN ( Virtual Local Area Network ) , in particolare,  rappresentano la risposta a quelle situazioni nelle quali, pur non disponendo di grandi risorse, si renda comunque necessario tener distinti due o più ambiti della stessa rete, o, come è usuale dire, suddividere in più parti un dominio di broadcast.  L'esempio tipico è quello di una (piccola) impresa che abbia necessità di tener separati sulla rete i propri device in base alle attività produttive. La rete potrebbe allora pensarsi composta di tante VLAN quante sono le attività aziendali, ciascuna VLAN potendo contenere al proprio interno l'hw destinato ad ogni specifica attività. Dal punto di vista sistemistico, una  VLAN  è costituita da un sottoinsiem

Switch Commands - istruzioni Cisco HP Extreme "in a nutshell"

Indirizzamento IP

Obiettivo di questo articolo, senza pretesa di esaurire l'argomento, è quello di presentare in modo chiaro e comprensibile un argomento alle volte ostico: l'indirizzamento IP.  Questo, fra l'altro, consentirà di affrontare, anche agli utenti meno esperti, operazioni semplici quali   la configurazione di una scheda di rete con maggiore consapevolezza. Gli indirizzi IP Come noto, con IP  ci si riferisce ad uno dei protocolli di comunicazione di rete più affermati nel mondo delle telecomunicazioni:  Internet Protocol .   Un indirizzo IP è, in particolare, un codice binario che identifica univocamente un dispositivo di rete (una scheda ethernet, la porta di uno switch o di un router, etc.) all'interno di una rete di computer.  Di primaria importanza, nell'ambito dell'indirizzamento, è la lunghezza degli indirizzi, ovvero il numero di bit utilizzati per rappresentare un indirizzo di rete. Questo, evidentemente, perché con n bit sarà possibile ind