Tutoriel Linux

Ip neigh su Linux: trovare un vicino di rete senza usare arp

Débutant5 min de lecture
À retenirLinux n'est pas réservé aux experts. Le bon point de départ : une distribution accessible, une sauvegarde propre et quelques commandes comprises.

Una macchina sulla rete risponde in modo intermittente, un gateway rimane associato all’indirizzo MAC errato oppure viene visualizzata una voce FALLITOPrima di riavviare l’interfaccia, verificare la tabella di vicinato gestita dal kernel.

L’ordine ip neve arp -a arp -nCopre i vicini IPv4 appresi tramite ARP e i vicini IPv6 scoperti tramite NDP. Cosa ancora più importante, consente di leggerne lo stato, eliminare una singola voce e verificarne la ricostruzione senza svuotare l’intera cache.

Tux analizza i nodi vicini di una rete locale con collegamenti attivi, obsoleti e inaccessibili.
Il comando `ip neigh` visualizza i vicini IPv4 e IPv6 noti al kernel e il relativo stato di risoluzione.

Trova l’interfaccia utilizzata per contattare il vicino

Non scegliere eth0 Per abitudine. Visualizzo le interfacce, quindi chiedo al kernel quale percorso utilizzerebbe per raggiungere l’indirizzo richiesto:

collegamento ip-brief
indirizzo IP -brief
ip route get 192.168.1.50

ottenere il percorso ip indica in particolare l’interfaccia dopo dev e l’indirizzo locale dopo srcSe la destinazione include un gateway, il vicino di livello 2 sarà quel gateway, non necessariamente l’indirizzo finale. La guida su Routing IP sotto Linux spiega questa differenza.

Prima di dare la colpa alla cache, verifica anche lo stato del collegamento:

ip link show dev enp1s0
indirizzo IP mostra dispositivo enp1s0

GIÙ o senza un vettore, non troverà alcun vicino. L’articolo su Indirizzo IP e stato della rete aiuta a distinguere SU, BASSO_SU e un indirizzo effettivamente utilizzabile.

Elenca i vicini IPv4 e IPv6 con ip neigh

Innanzitutto, visualizza l’intera tabella, quindi limita la visualizzazione all’interfaccia pertinente:

Spettacolo IP Neigh
ip neigh show dev enp1s0

Per separare i due tipi di indirizzi:

IP -4 Neigh show dev enp1s0
IP -6 Neigh show dev enp1s0

Una riga IPv4 potrebbe apparire così:

192.168.1.50 dev enp1s0 lladdr 52:54:00:12:34:56 STALE

lladdr è l’indirizzo MAC noto a questo vicino. Lo stato finale descrive se la risoluzione è andata a buon fine o meno. Per indirizzare un singolo indirizzo senza scansionare l’intera tabella:


ip neigh get 192.168.1.50 dev enp1s0

La tabella non rappresenta un inventario completo della rete. Contiene principalmente i dispositivi con cui il kernel ha comunicato di recente o che sta tentando di raggiungere. Una macchina silenziosa può quindi risultare assente senza essere spenta.

Comprendere RAGGIUNGIBILE, STABILITO, INCOMPLETO e FALLITO

  • RAGGIUNGIBILE : il vicino è stato confermato di recente;
  • stantio L’ingresso è noto, ma la sua accessibilità non è stata confermata di recente. Non si tratta di un errore;
  • RITARDO O SONDA : il kernel verifica attivamente se il vicino sta ancora rispondendo;
  • INCOMPLETO La risoluzione è in corso e non è stato ancora ricevuto alcun indirizzo MAC utilizzabile;
  • FALLITO : i tentativi di risolverlo sono falliti;
  • PERMANENTE : la voce è stata aggiunta staticamente e non dovrebbe scadere come una voce dinamica.

È possibile filtrare per stato specifico:

ip neigh show dev enp1s0 nud reachable
ip neigh show dev enp1s0 nud stale
ip neigh show dev enp1s0 nud failed

Una voce può diventare di nuovo RAGGIUNGIBILE non appena il traffico conferma il vicino. Al contrario, una linea FALLITO La ripetizione del codice di errore indica più probabilmente un’interfaccia difettosa, un host mancante, una VLAN errata, un problema Wi-Fi, un indirizzo duplicato o un collegamento fisico guasto.

Avviare una discussione e osservare la risoluzione

Genera del traffico semplice verso l’indirizzo, quindi rileggi immediatamente la voce:

ping -c 3 192.168.1.50
ip neigh show to 192.168.1.50 dev enp1s0

Per monitorare le modifiche durante il test:

watch -n 1 'ip neigh show dev enp1s0'

Se l’ingresso rimane INCOMPLETO o vai a FALLITO

sudo tcpdump -ni enp1s0 'arp o icmp6'

Una richiesta ARP che non riceve risposta indica che il problema risiede prima dell’indirizzo IP: il dispositivo è offline, la porta dello switch è errata, la VLAN è errata, il cavo, il Wi-Fi o l’indirizzo non esiste. Se non viene inviata alcuna richiesta, reindirizzare e riconnettere l’interfaccia. Consultare la guida su… tcpdump su Linux Mostra come limitare l’acquisizione senza registrare tutto il traffico.

Su Ethernet è possibile controllare anche velocità, duplex e portante con ethtoolEliminare una voce adiacente non risolverà un collegamento che negozia male o che si interrompe.

Elimina una singola voce e poi verifica la sua ricostruzione.

Se l’indirizzo MAC è chiaramente obsoleto o errato, elimina solo la voce interessata. Su un server remoto, mantieni una seconda sessione SSH e una console di backup, soprattutto se interagisci con un server adiacente che funge da gateway.

sudo ip neigh del 192.168.1.50 dev enp1s0
ping -c 3 192.168.1.50
ip neigh show to 192.168.1.50 dev enp1s0

Per un indirizzo IPv6 link-local, l’interfaccia è essenziale:

sudo ip -6 neigh del fe80::5054:ff:fe12:3456 dev enp1s0
ping -6 -c 3 fe80::5054:ff:fe12:3456%enp1s0
IP -6 Neigh show dev enp1s0

Il kernel deve ricreare la voce al successivo scambio. Confronta l’indirizzo MAC e lo stato. Se viene restituito l’indirizzo errato, cerca un indirizzo IP duplicato, una configurazione statica, una macchina virtuale clonata o un dispositivo che risponde al posto del vicino previsto. Ripeti. ip neigh del non risolverà questa causa.

Svuota la cache solo quando il perimetro è sotto controllo.

Inizia visualizzando ciò che intendi rimuovere. Per eliminare solo le voci che hanno già generato errori su un’interfaccia:

ip neigh show dev enp1s0 nud failed
sudo ip neigh flush dev enp1s0 nud failed

Il comando seguente è molto più generico:

sudo ip neigh flush dev enp1s0

Questa operazione forza la riscoperta di diversi nodi vicini e può causare un’interruzione temporanea delle connessioni attive. Non eseguirla automaticamente sull’interfaccia che ospita la sessione SSH. La rimozione mirata è più facile da controllare e fornisce una diagnostica migliore.

pagina man ip-neighbour(8) operazioni sui documenti spettacolo, Ottenere, del E a filo nonché tutti gli stati NUD. Mantenere quest’ordine: percorso, interfaccia, tabella, stato, traffico di test, eliminazione mirata. Il dump completo viene eseguito per ultimo.

sudo apt update && sudo apt upgrade