Cosa fa#
Gestisce e mostra interfacce di rete, indirizzi IP, tabella di routing e tunnel. Sostituisce i comandi deprecati ifconfig e route. Su Linux moderno e' il punto di riferimento per qualsiasi configurazione o diagnostica di rete.
Sintassi#
ip [opzioni] oggetto [comando]
Gli oggetti principali: address (o addr o a), route (o r), link (o l), neighbor (o n)
Comandi essenziali#
| Comando | Flag | Significato flag | Cosa fa |
|---|---|---|---|
ip address show | — | — | Mostra tutte le interfacce con IP assegnati |
ip a | — | — | Abbreviazione di ip address show |
ip a show eth0 | — | — | Solo l'interfaccia eth0 |
ip route show | — | — | Mostra la tabella di routing |
ip r | — | — | Abbreviazione di ip route show |
ip link show | — | — | Stato delle interfacce (UP/DOWN) senza IP |
ip neighbor show | — | — | Tabella ARP — MAC degli host vicini |
ip n | — | — | Abbreviazione di ip neighbor show |
Leggere ip address show#
ip a
# 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536
# inet 127.0.0.1/8 scope host lo
#
# 2: enp0s1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500
# inet 192.168.64.3/24 brd 192.168.64.255 scope global enp0s1
# ^ ^ ^
# | IP address broadcast address
# inet = IPv4 (inet6 = IPv6)Cosa cercare:
state UP— interfaccia attivainet— indirizzo IPv4 assegnato- Assenza di
inet— DHCP non funziona o interfaccia non configurata
Nomi delle interfacce:
lo → loopback — interfaccia virtuale, parla con se stesso (127.0.0.1)
enp0s1 → Ethernet (en = ethernet, p0s1 = bus PCI)
eth0 → Ethernet (naming vecchio stile)
wlp2s0 → Wireless (wl = wireless)
vda → Disco virtuale (non e' un'interfaccia di rete — e' lsblk)Leggere ip route show#
ip r
# default via 192.168.64.1 dev enp0s1 proto dhcp src 192.168.64.3 metric 100
# 169.254.0.0/16 dev enp0s1 scope link metric 1000
# 192.168.64.0/24 dev enp0s1 proto kernel scope link src 192.168.64.3 metric 100default via 192.168.64.1 ← gateway di default — tutto il traffico non locale va qui
192.168.64.0/24 ← la tua LAN — raggiungibile direttamente senza gateway
169.254.0.0/16 ← APIPA — range fallback quando DHCP non funziona169.254.0.0/16 — APIPA (Automatic Private IP Addressing). Assegnato automaticamente quando il DHCP non risponde. Se un host ha solo questo IP, il DHCP non funziona.
ifconfig vs ip — perche' ip e' meglio#
ifconfig (deprecato) ip (moderno)
───────────────────── ──────────────────────────────
singolo comando un comando per tutto
output meno strutturato output piu' ricco e preciso
non mostra routing ip route per il routing
non mostra ARP ip neighbor per ARP
non installato di default sempre disponibile su kernel modernoCombinazioni utili#
# Diagnostica rapida — tutto in una volta
ip a && ip r
# Verifica se una specifica interfaccia e' UP
ip link show enp0s1 | grep "state UP"
# Mostra solo IPv4 (esclude IPv6)
ip -4 a
# Mostra solo IPv6
ip -6 a
# Tabella ARP — trova i MAC dei dispositivi sulla LAN
ip neighbor show
# Verifica la route verso un IP specifico
ip route get 8.8.8.8
# 8.8.8.8 via 192.168.64.1 dev enp0s1 src 192.168.64.3
# mostra quale gateway userebbe per raggiungere quell'IPip route flush — attenzione alla differenza#
# Svuota solo la route cache temporanea (ICMP Redirect, route dinamiche)
ip route flush cache
# Sicuro — le route statiche rimangono intatte
# Svuota TUTTA la routing table — incluse le route statiche
ip route flush all
# DISTRUTTIVO — la macchina perde la connessione di rete
# Non usare mai su sistemi in produzione o in remotoip route flush all su una macchina remota a cui accedi via SSH equivale a spegnerla — perdi immediatamente la connessione e non puoi recuperarla senza accesso fisico o console. La routing table viene svuotata e il sistema non sa piu' come instradare i pacchetti, nemmeno sulla LAN locale.Output JSON con -j#
# Qualsiasi sottocomando di ip accetta -j per output JSON
ip -j route
ip -j neighbor show
ip -j address show
# Utile per parsing con jq o in script Python
ip -j neighbor show | python3 -c "import sys,json; [print(e) for e in json.load(sys.stdin)]"Nota: -j va PRIMA del sottocomando, non dopo. ip route -j → syntax error ip -j route → corretto
Diagnostica: default gateway mancante#
Sintomo#
ping -c 4 8.8.8.8
# connect: Network is unreachable
# oppure: nessuna rispostaDiagnosi#
ip route
# 192.168.64.0/24 dev enp0s1 proto kernel scope link src 192.168.64.3
# ← manca la riga "default via X"Se ip route non mostra una riga default via — il gateway manca. Il sistema sa parlare con la sua subnet locale ma non sa dove mandare il traffico verso internet.
Confronta con una macchina che funziona:
# Su Kali (funziona):
ip route
# default via 192.168.64.1 dev eth0 ← c'è il gateway
# 192.168.64.0/24 dev eth0
# Su Ubuntu (non funziona):
ip route
# 192.168.64.0/24 dev enp0s1 ← manca il gatewayCome identificare il gateway corretto#
Il gateway è quasi sempre il primo IP della subnet — convenzione universale:
Subnet 192.168.64.0/24 → gateway tipico: 192.168.64.1
Subnet 192.168.1.0/24 → gateway tipico: 192.168.1.1
Subnet 10.0.0.0/24 → gateway tipico: 10.0.0.1Puoi verificarlo guardando la tabella ARP — il gateway è l'unico dispositivo REACHABLE fuori dalla tua subnet:
ip neighbor show
# 192.168.64.1 dev enp0s1 lladdr 72:8c:f2:1b:c8:64 REACHABLE
# ^
# questo è il gatewayOppure confronta con un host della stessa rete che funziona:
# Su Kali — vedi il gateway nella sua routing table
ip route | grep default
# default via 192.168.64.1 dev eth0Fix temporaneo (non sopravvive al riavvio)#
sudo ip route add default via 192.168.64.1Verifica:
ip route
# default via 192.168.64.1 dev enp0s1 ← aggiunto
# 192.168.64.0/24 dev enp0s1
ping -c 4 8.8.8.8 # deve funzionare oraFix permanente (netplan — Ubuntu Server)#
Modifica il file netplan:
sudo nano /etc/netplan/50-cloud-init.yamlAggiungi la sezione routes:
network:
version: 2
ethernets:
enp0s1:
dhcp4: false
addresses:
- 192.168.64.3/24
nameservers:
addresses: [8.8.8.8, 1.1.1.1]
routes:
- to: default
via: 192.168.64.1sudo netplan apply
ip route # verificaPerché succede#
Su Ubuntu Server con IP statico configurato manualmente, il gateway non viene aggiunto automaticamente — va specificato esplicitamente nel file netplan.
Kali usa NetworkManager che lo aggiunge in automatico quando assegna un IP via DHCP.
Ubuntu vs Kali — configurazione rete a confronto#
Due distribuzioni diverse, due approcci diversi alla configurazione di rete.
Ubuntu Server — Netplan#
Ubuntu Server usa file YAML in /etc/netplan/. La configurazione e' statica e manuale — devi specificare tutto esplicitamente, incluso il gateway.
# Vedi il file di configurazione
cat /etc/netplan/50-cloud-init.yaml
# Applica le modifiche
sudo netplan apply
# Verifica
ip routeConfigurazione completa con gateway:
network:
version: 2
ethernets:
enp0s1:
dhcp4: false
addresses:
- 192.168.64.3/24
nameservers:
addresses: [8.8.8.8, 1.1.1.1]
routes:
- to: default
via: 192.168.64.1 # ← gateway — va specificato esplicitamenteSe dimentichi la sezione routes, il gateway non viene aggiunto e il sistema non esce su internet.
Kali Linux — NetworkManager#
Kali usa NetworkManager — gestisce tutto in automatico, incluso il gateway, quando ottiene un IP via DHCP.
# Vedi le connessioni attive
nmcli connection show
# Vedi i dettagli di una connessione specifica
nmcli connection show "Wired connection 1"
# File di configurazione (raramente modificato a mano)
cat /etc/network/interfacesNon c'e' un file YAML da modificare — NetworkManager aggiunge il gateway automaticamente.
Confronto#
Ubuntu Server Kali Linux
Gestore Netplan NetworkManager
Config file /etc/netplan/*.yaml gestito da nmcli/GUI
Gateway va aggiunto a mano aggiunto automaticamente da DHCP
IP statico definito nel YAML nmcli o GUI
Dopo riavvio configurazione persiste persiste (gestita da NM)
Usato su server, headless desktop, penetration testingSintomo del gateway mancante#
# Ubuntu — ip route mostra solo la subnet locale
ip route
# 192.168.64.0/24 dev enp0s1 ← solo LAN, nessun default
# Kali — ip route mostra anche il gateway
ip route
# default via 192.168.64.1 dev eth0 ← gateway presente
# 192.168.64.0/24 dev eth0Se Ubuntu non esce su internet, la prima cosa da controllare e' sempre ip route — quasi certamente manca la riga default via.
Scenario Reale#
# Incident response — mappa rapida della rete su un sistema sospetto
ip a # quali IP ha questo sistema?
ip r # dove manda il traffico?
ip n # chi ha visto di recente sulla LAN? (tabella ARP)
# Un IP insolito nella tabella ARP puo' indicare
# un dispositivo non autorizzato sulla rete
ip neighbor show | grep -v REACHABLEDove l'ho usato#
- VM Ubuntu —
ip aper verificare l'IP fisso dopo netplan - Lab UTM — diagnostica interfacce Host-Only
Note personali#
ip r get 8.8.8.8 e' il modo piu' rapido per vedere quale interfaccia e' quale gateway userebbe il sistema per raggiungere un IP specifico — utile quando ci sono piu' interfacce attive.
Le abbreviazioni funzionano tutte: ip a = ip addr = ip address. In produzione si usano quasi sempre le abbreviazioni — imparale.
Collegato a#
- system — categoria
- netplan — configura le interfacce che ip mostra
- traceroute — usa la routing table mostrata da ip route
- ping — testa la connettivita' verso gli IP visti con ip a
- ss — mostra le connessioni sulle interfacce viste con ip


