ifconfig, ip¶
Nota
Prerequisti: Linux, MacOS: terminale
Argomenti trattati: Indirizzamento IP
Nell’esperienza ipconfig abbiamo visto come è possibile reperire informazioni sulla configurazione di rete in un terminale Windows.
In questa esperienza faremo lo stesso nel caso dei terminali Linux e Mac. Ovviamente tutte le considerazioni qui fatte funzionano anche su Raspberry.
Nella mia disamina ho deciso di spiegare le cose 2 volte, prima con il comando ifconfig e poi con il comando ip. La scelta di raddoppiare il lavoro dipende da una serie di considerazioni che vado ad elencare:
- ifconfig è un utility più limitata rispetto alla più moderna ip
- Non sono sicuro che il comando ip sia disponibile su Mac (probabilmente sì…)
- In molte distribuzioni Linux potreste non trovare il (vecchio) comando ifconfig
- ifconfig è più vecchia e limitata ma più semplice
- ip è in grado di gestire praticamente tutte le configurazioni del livello di rete e inferiore, ma questo implica un diverso grado di complessità
Mettendo insieme tutti questi statements ho deciso di introdurre entrambi i tools. Vediamoli.
Nelle due trattazioni che seguono cercherò di dedurre la configurazione di rete di un generico dispositivo che ha una scheda di rete con cavo, chiamata eth0 e una scheda di rete wifi chiamata wlan0. Potrebbe essere un portatile, oppure un Raspberry, etc… Indico qua le informazioni in modo tale che sia più semplice capire il funzionamento dei tool di rete, conoscendo in anticipo l’output che cerchiamo.
Descrizione | Valore |
---|---|
Rete | 10.0.0.0 |
Subnet mask | 255.255.255.0 |
broadcast | 10.255.255.255 |
Gateway | 10.0.0.1 |
Server DNS | 10.0.0.2 |
Server DHCP | 10.0.0.3 |
IP scheda con cavo | 10.0.0.51 |
IP scheda wifi | 10.0.0.52 |
ifconfig¶
Visualizzare informazioni sulle interfacce di rete
$ ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.0.0.51 netmask 255.0.0.0 broadcast 10.255.255.255
ether 54:53:ed:XX:XX:XX txqueuelen 1000 (Ethernet)
RX packets 95414 bytes 130702336 (124.6 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 43485 bytes 4338669 (4.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 4 bytes 240 (240.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 4 bytes 240 (240.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.0.0.52 netmask 255.0.0.0 broadcast 10.255.255.255
ether b8:76:3f:YY:YY:YY txqueuelen 1000 (Ethernet)
RX packets 7035 bytes 1837515 (1.7 MiB)
RX errors 0 dropped 1496 overruns 0 frame 0
TX packets 377 bytes 33009 (32.2 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
Imopostare un indirizzo (o cancellarlo) per una interfaccia di rete
$ sudo ifconfig eth0 add 192.168.0.51
$ sudo ifconfig eth0 del 192.168.0.51
Abilitare o disabilitare una interfaccia di rete
$ sudo ifconfig wlan0 up
$ sudo ifconfig wlan0 down
Visualizzare la tabella di routing (verificando il gateway predefinito). Con ifconfig non si può fare. In questo caso bisogna ricorrere al comando route:
$ route -n4
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 10.0.0.1 0.0.0.0 UG 100 0 0 eth0
0.0.0.0 10.0.0.1 0.0.0.0 UG 600 0 0 wlan0
10.0.0.0 0.0.0.0 255.0.0.0 U 100 0 0 eth0
10.0.0.0 0.0.0.0 255.0.0.0 U 600 0 0 wlan0
Impostare il default gateway (oppure in caso di routing più complessi, aggiungere una route). Oppure rimuoverlo. Ancora tramite l’utility route:
$ sudo route add default gw 192.168.0.1 eth0
$ sudo route del default gw 192.168.0.1 eth0
Visualizzare i server DNS in uso. Ancora una volta non si usano opzioni del comando ifconfig ma si può controllare direttamente sul file ove sono scritti:
$ cat /etc/resolv.conf
nameserver 10.0.0.2
ip¶
Visualizzare informazioni sulle interfacce di rete
$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 54:53:ed:XX:XX:XX brd ff:ff:ff:ff:ff:ff
inet 10.0.0.51/8 brd 10.255.255.255 scope global dynamic noprefixroute eth0
valid_lft 80942sec preferred_lft 80942sec
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether b8:76:3f:YY:YY:YY brd ff:ff:ff:ff:ff:ff
inet 10.0.0.52/8 brd 10.255.255.255 scope global dynamic noprefixroute wlan0
valid_lft 80939sec preferred_lft 80939sec
Imopostare un indirizzo (o cancellarlo) per una interfaccia di rete
$ sudo ip a add 192.168.0.51 dev eth0
$ sudo ip a del 192.168.0.51 dev eth0
Abilitare o disabilitare una interfaccia di rete
$ sudo ip link set wlan0 up
$ sudo ip link set wlan0 down
Visualizzare la tabella di routing (verificando il gateway predefinito).
$ ip r
default via 10.0.0.1 dev eth0 proto dhcp metric 100
default via 10.0.0.1 dev wlan0 proto dhcp metric 600
10.0.0.0/8 dev eth0 proto kernel scope link src 10.0.0.51 metric 100
10.0.0.0/8 dev wlan0 proto kernel scope link src 10.0.0.52 metric 600
Impostare il default gateway (oppure in caso di routing più complessi, aggiungere una route). Oppure rimuoverlo.
$ sudo ip r add 192.168.0.0/24 via 192.168.0.1 dev eth0
$ sudo ip r del 192.168.0.0/24
Visualizzare i server DNS in uso. Qui anche l’utility ip non può arrivare perché il sistema di risoluzione degli indirizzi è diverso in ambito UNIX (Linux/MAC) rispetto al corrispettivo Windows. Il consiglio è ancora una volta di controllare il file di configurazione:
$ cat /etc/resolv.conf
nameserver 10.0.0.2