Nei sistemi operativi Linux/Unix il comando ifconfig è usato per configurare o vedere la configurazione delle interfacce di rete.
In alcune versioni recenti di alcuni sistemi operativi il comando ifconfig è stato sostituito dal comando if.
Descrizione
Il comando ifconfig (in inglese “interface configuration”) serve a visualizzare e gestire la configurazione delle interfacce di rete di un sistema linux/unix.
Lanciando il comando ifconfig senza nessun argomento
ifconfig
si ottengono delle informazioni sulle interfacce di rete attualmente attive nel sistema.
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384 options=1203<RXCSUM,TXCSUM,TXSTATUS,SW_TIMESTAMP> inet 127.0.0.1 netmask 0xff000000 inet6 ::1 prefixlen 128 inet6 fe80::1%lo0 prefixlen 64 scopeid 0x1 nd6 options=201<PERFORMNUD,DAD> en4: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500 options=10b<RXCSUM,TXCSUM,VLAN_HWTAGGING,AV> ether 78:##:##:##:9d:9a inet6 fe80::###:####:b3c3:8ece%en4 prefixlen 64 secured scopeid 0x5 inet 192.168.1.10 netmask 0xffffff00 broadcast 192.168.1.255 nd6 options=201<PERFORMNUD,DAD> media: autoselect (1000baseT <full-duplex>) status: active
In questo caso, lo0 e en4 sono i nomi delle interfacce presenti e attive nel sistema.
- lo0: Questa è un’interfaccia definita di loopback, cioè che “torna indietro”, il suo ip è standard, 127.0.0.1, e serve al sistema per identificare e parlare con se stesso. Ogni volta che il sistema ha necessità di attivare una connessione di rete verso se stesso può utilizzare 127.0.0.1 e raggiungere se stesso. Questo è differente dall’hostname di cui abbiamo parlato nell’articolo su come cambiare l’hostname.
- en4: Questa invece è un’interfaccia di rete ethernet, ovvero via cavo, identifica quindi una scheda di rete fisica installata all’interno del computer o collegata ad esempio tramite interfaccia USB.
Questi sono nomi che in alcuni casi possono essere leggermente diversi in base al sistema operativo utilizzato, ma sono generalmente formati da un prefisso che identifica il tipo di interfaccia (lo per loopback, en per ethernet, wl per wireless in questo caso) e un numero che identifica la singola interfaccia nel caso ce ne siano più di una dello stesso tipo.
Vedere la lista di tutte le interfacce
Se avete necessità di vedere la lista completa delle interfacce di un sistema, includendo quindi anche quelle non attive è possibile eseguire il comando con l’opzione -a
ifconfig -a
Questo produrrà un output simile a quello di ifconfig senza opzioni ma nel caso in cui si abbiano nel proprio sistema delle interfacce non attive, verranno visualizzate anche queste ultime
Vedere la configurazione di una singola interfaccia di rete.
Se volete estrarre la configurazione di una singola interfaccia di rete per analizzarla singolarmente potete specificare il suo nome come parametro del comando ifconfig
ifconfig en4
Abilitare e disabilitare un’interfaccia di rete.
Ogni interfaccia può essere attivata e disattivata, come immaginabile se è attiva può inviare e ricevere dati, se è disattiva non può farlo. Il comando ifconfig permette di attivare e disattivare manualmente le singole interfacce di rete in modo semplice.
Per attivare un’interfaccia di rete occorre eseguire il comando ifconfig seguito dal nome dell’interfaccia che vogliamo attivare e il comando up.
Per abilitare o disabilitare un’interfaccia di rete occorrono i permessi di superutente, occorre quindi aver fatto accesso come utente root oppure anteporre il comando sudo per ottenere i privilegi necessari.
Se ad esempio l’interfaccia en4 fosse inattiva e volessimo attivarla manualmente dovremmo eseguire il comando:
sudo ifconfig en4 up
In maniera analoga è possibile disattivare l’interfaccia tramite la parola chiave down, nel nostro esempio per disattivare l’interfaccia en4 eseguiremo
sudo ifconfig en4 down
Configurare un’interfaccia di rete
Come abbiamo detto all’inizio dell’articolo, il comando ifconfig può essere utilizzato non solo controllare lo stato ma anche per configurare le interfacce di rete. Generalmente la configurazione delle interfacce viene effettuata all’avvio del sistema in maniera automatica da script appositamente predisposti. Se però si volessero fare delle modifiche o fosse necessario riconfigurare l’interfaccia è possibile utilizzare il comando ifconfig a tale scopo. Per eseguire la configurazione sono necessari i permessi di superutente quindi anche in questo caso dovremmo accedere come utente root o usare il comando sudo.
Per configurare un indirizzo ip statico assegnato a un’interfaccia di rete è necessario eseguire il comando ifconfig seguito dal nome dell’interfaccia e dall’indirizzo ip che vogliamo assegnare. Ad esempio:
sudo ifconfig en4 192.168.1.150
Per configurare una netmask statica è necessario utilizzare il comando netmask insieme al nome dell’interfaccia e alla netmask che vogliamo assegnare. Ad esempio:
sudo ifconfig en4 netmask 255.255.255.0
Per configurare un indirizzo di broadcast assegnato a un’interfaccia è necessario utilizzare il comando broadcast. Ad esempio:
sudo ifconfig en4 broadcast 192.168.1.255
Se si vuole è possibile combinare insieme i precedenti 3 comandi e configurare l’interfaccia con una singola riga di comando, occorrerà accodare insieme le 3 opzioni, nel nostro esempio avremo:
sudo ifconfig en4 192.168.1.150 netmask 255.255.255.0 broadcast 192.168.1.255
Queste sono le opzioni di configurazione più comuni per il comando ifconfig in linux.
Configurazione DHCP
La configurazione del dhcp, ovvero dell’assegnazione automatica di un indirizzo ip e una configurazione di rete recuperati da un sistema esterno, non è effettuata tramite il comando ifconfig ma tramite il comando dhclient.