Il comando 'ip addr' mostra 'SU' anche se non esiste alcun indirizzo associato a quell'interfaccia


16

Vorrei capire cosa si intende per interfaccia di rete? Perché ip addro il ifconfigcomando mostra un'interfaccia attiva anche quando non è associato alcun IP.

ad esempio su RHEL7:

[root@IDCDVAM887 ~]# ifconfig ens256
ens256: flags=6211<UP,BROADCAST,RUNNING,SLAVE,MULTICAST>  mtu 1500
        ether 00:50:56:9e:19:5b  txqueuelen 1000  (Ethernet)
        RX packets 229406  bytes 59265584 (56.5 MiB)
        RX errors 0  dropped 229454  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

(o)

[root@IDCDVAM887 ~]# ip addr show ens256
5: ens256: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond0 state UP qlen 1000
link/ether 00:50:56:9e:19:5b brd ff:ff:ff:ff:ff:ff

A cosa serve mostrare come UP quando l'interfaccia non ha affatto l'IP? Credo che quando non c'è IP, non ci potrebbe essere comunicazione su questo? Allora a che serve?


1
I frame Ethernet possono fare molto di più che contenere solo pacchetti IP.
Casey,

Risposte:


17

La LOWER_UPè lo stato della Ethernet di collegamento (o un altro protocollo link layer). È definito come Driver signals L1 up, il che significa sostanzialmente che il cavo è installato e può vedere un altro dispositivo sull'altra estremità del cavo.

I UPmezzi che è stata abilitata. Questo può essere controllato da te (o da uno script) usando il comando ip link set <device> upof ifconfig <device> up.

Esistono altri protocolli, come IPX che utilizzano Ethernet, ma non avranno un indirizzo IP in quanto non fanno parte dello stack del protocollo Internet. Quindi è perfettamente accettabile che il collegamento sia UPma non abbia un indirizzo IP.


Il DHCP è in realtà basato sulla trasmissione UDP, che richiede un livello IP (in effetti, può essere instradato). Un altro esempio di alternativa storicamente usata a IP era NetBIOS (prima di essere portato su NetBIOS su IPX / SPX e poi come NetBIOS su TCP / IP)
pqnet

[root @ IDCDVAM887 ~] # ip addr show eno33557248 3: eno33557248: <BROADCAST, MULTICAST, UP, LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link / ether 00: 50: 56: 9e: 68: 86 brd ff: ff : ff: ff: ff: ff inet 10.54.2.7/32 scope globale eno33557248: 1 valid_lft forever favorite_lft forever Nel formato sopra c'è un'interfaccia virtuale 'eno33557248: 1' con un po 'di IP. Perché non è stato visualizzato SU separatamente? È sufficiente mostrare solo l'interfaccia originale come UP?
Srikanth Ganesan,

@pqnet - Stavo cercando di escludere che la parte "no IP, no communication" della domanda del PO non fosse vera. Forse non è stato il miglior esempio allora! Lo rimuoverò perché causerà solo confusione.
garethTheRed,

Quella parte ora ho capito grazie ad entrambi .. !!!
Srikanth Ganesan,

ip addr ordina in RHEL7 un'interfaccia che ha configurato più interfacce virtuali o alias causando molta confusione su come scoprire se è
attiva

7

Lo UPstato è lo stato amministrativo dell'interfaccia, ovvero se l'interfaccia è stata abilitata. È possibile abilitare qualsiasi interfaccia utilizzando ad es

ip l s eth0 up

Se il cavo è collegato e viene stabilito un collegamento, l'interfaccia otterrà anche lo stato operativo di RUNNING.

Molte carte inibiranno la generazione del vettore in uscita se lo stato amministrativo non lo è UP, e un'interfaccia che non lo è non UPpuò essere RUNNINGneanche, quindi se imposto

ip l s eth0 down

Mi aspetto che la mia interfaccia locale perda entrambi UPe RUNNING, e l'interfaccia corrispondente sul lato remoto non lo sarebbe più RUNNING(ma comunque UP, quindi se abilito di nuovo il mio lato, otterrei un link).

Questo è solo il collegamento Ethernet però. Oltre al collegamento, è possibile associare vari protocolli, uno dei quali è IPv4. Per impostazione predefinita, IPv4 è associato a tutte le interfacce che supportano la famiglia di protocolli.

Quando il protocollo è associato, posso inviare e ricevere pacchetti con qualsiasi indirizzo assegnato all'interfaccia. Se non viene assegnato alcun indirizzo, ciò significa semplicemente che non esiste un indirizzo valido che può essere utilizzato per i pacchetti in uscita (quindi l'invio di un pacchetto fallisce), né qualsiasi indirizzo unicast a cui un pacchetto in arrivo può essere indirizzato che il sistema riconoscerebbe come locale (quindi possono essere ricevuti solo pacchetti broadcast / multicast).

Ciò non riguarda minimamente il livello del collegamento, poiché stabilirà solo un collegamento.

Alcuni programmi, come il client DHCP, dispongono dell'autorizzazione speciale per inviare pacchetti formattati in modo arbitrario, compilare un indirizzo di origine fantasy o 0.0.0.0ricevere pacchetti in arrivo indipendentemente dal fatto che siano destinati al computer locale. Viene utilizzato durante la configurazione automatica dell'indirizzo IP, in cui la richiesta DHCP viene inviata utilizzando un indirizzo di origine 0.0.0.0e la risposta dal server viene indirizzata all'indirizzo di trasmissione 255.255.255.255.

Pertanto, esiste un caso d'uso valido in cui i pacchetti IP vengono scambiati anche senza un indirizzo associato all'interfaccia.

Oltre a IPv4, esistono anche IPv6, IPX, AppleTalk, ecc., Che possono condividere tutti lo stesso livello fisico. Non appena viene stabilito il collegamento, uno di questi protocolli di livello superiore può utilizzare la propria sequenza di attivazione per entrare in uno stato operativo.


>> neanche un'interfaccia che non è SU può essere IN ESECUZIONE <<. Penso che questo potrebbe non essere applicabile per le macchine Solaris x86 in cui l'interfaccia mostra in esecuzione anche quando lo stato non è 'UP'. Ad esempio 1. Inserire una nuova interfaccia virtuale. root @ IDCDVAM890: ~ # ifconfig net0: 2 plumb 2. Controllare lo stato dell'interfaccia. IN ESECUZIONE ma non è stato assegnato alcun indirizzo IP. root @ IDCDVAM890: ~ # ifconfig net0: 2 net0: 2: flags = 1000842 <BROADCAST, RUNNING , MULTICAST, IPv4> mtu 1500 index 2 inet 0.0.0.0 netmask 0
Srikanth Ganesan

@SrikanthGanesan, non è necessario un indirizzo IP per avere l'interfaccia nello stato UP o RUNNING, infatti l'interfaccia deve essere UP e RUNNING affinché DHCP funzioni. Sembra che Solaris erediti lo stato RUNNING delle interfacce virtuali dal genitore, ma mantenga uno stato UP separato. Ciò è alquanto irregolare, potrebbe essere interessante vedere se l'agente SNMP che spediscono lo corregge nella vista esterna.
Simon Richter,

3

un'interfaccia può essere "attiva" anche senza alcun indirizzo. Lo stato "su" si riferisce al livello di collegamento dati (noto anche come livello 2), ovvero "su" significa che è possibile inviare e ricevere pacchetti Ethernet. L'IP è qualcosa costruito sopra di esso.

Un esempio di configurazione in cui un'interfaccia è attiva ma non ha un IP (e non dovrebbe essere assegnato a uno) è quando l'interfaccia è uno slave bridge.


0

magicamente, se specifichi l' -4opzione o -oneline, allora mostrerà davvero l'interfaccia "in esecuzione" come hai immaginato.

Per facilitare la lettura, ho usato l' -briefopzione ma non importa la conclusione.

vedere il risultato updell'opzione, mostra ancora un DOWNdispositivo.

ubuntu@ubuntu:~$ ip --brief address show up
lo               UNKNOWN        127.0.0.1/8 ::1/128
eno1             DOWN
enp130s0f0       UP             100.79.223.150/26 fe80::a9e:1ff:fed9:2864/64

vedere il risultato -4dell'opzione, tutti con indirizzi, nessun DOWNdispositivo.

ubuntu@ubuntu:~$ ip -4 -brief address show
lo               UNKNOWN        127.0.0.1/8
enp130s0f0       UP             100.79.223.150/26

vedere il risultato -onlinedell'opzione, tutti con indirizzi, nessun DOWNdispositivo, ma dividere gli indirizzi in IPv4 e IPv6.

ubuntu@ubuntu:~$ ip -oneline address show
1: lo    inet 127.0.0.1/8 scope host lo\       valid_lft forever preferred_lft forever
1: lo    inet6 ::1/128 scope host \       valid_lft forever preferred_lft forever
4: enp130s0f0    inet 100.79.223.150/26 brd 100.79.223.191 scope global enp130s0f0\       valid_lft forever preferred_lft forever
4: enp130s0f0    inet6 fe80::a9e:1ff:fed9:2864/64 scope link \       valid_lft forever preferred_lft forever
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.