GNU/Linux >> Linux Esercitazione >  >> Linux

La differenza tra collegamento ip inattivo e assenza di collegamento fisico

Ci sono differenze tra un'interfaccia amministrativamente up ma disconnesso o amministrativamente inattivo .

Disconnesso

L'interfaccia blocca un portante stato. La sua corretta gestione potrebbe dipendere dal driver per l'interfaccia e dalla versione del kernel. Normalmente è disponibile con ip link show . Ad esempio con un veth ethernet virtuale interfaccia:

# ip link add name vetha up type veth peer name vethb
# ip link show type veth
2: [email protected]: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
link/ether 02:a0:3b:9a:ad:4d brd ff:ff:ff:ff:ff:ff
3: [email protected]: <NO-CARRIER,BROADCAST,MULTICAST,UP,M-DOWN> mtu 1500 qdisc noqueue state LOWERLAYERDOWN mode DEFAULT group default qlen 1000
    link/ether 36:e3:62:1b:a8:1f brd ff:ff:ff:ff:ff:ff

veta che è esso stesso amministrativamente UP, visualizza NO-CARRIER e l'equivalente operstate LOWERLAYERDOWN flag:è disconnesso.

Equivalente /sys/ esistono anche voci:

# cat /sys/class/net/vetha/carrier /sys/class/net/vetha/operstate
0
lowerlayerdown

Nelle solite impostazioni, per un'interfaccia amministrativamente up il vettore e operastato corrispondenza (NO-CARRIER <=> LOWERLAYERDOWN o LOWER_UP <=> UP). Un'eccezione sarebbe, ad esempio, quando si utilizza l'autenticazione IEEE 802.1X (dettagli avanzati di operstate sono descritti in questa documentazione del kernel:Stati operativi, ma non è necessario per questa spiegazione).

ethtool interroga un'API di livello inferiore per recuperare lo stesso stato del corriere.

L'assenza di un vettore non impedisce alle impostazioni di livello 3 di rimanere attive. Il kernel non cambia indirizzi o percorsi quando ciò accade. È solo che alla fine un pacchetto che dovrebbe essere emesso non verrà emesso dall'interfaccia e ovviamente non arriverà nemmeno una risposta. Quindi, ad esempio, il tentativo di connettersi a un altro indirizzo IPv4 prima o poi attiverà nuovamente una richiesta ARP che fallirà e l'applicazione riceverà un "Nessun percorso verso l'host". Le connessioni TCP stabilite faranno solo un'offerta e rimarranno stabili.

Inattivo dal punto di vista amministrativo

Sopra vethb ha operastato DOWN e non mostra alcuno stato del vettore (poiché deve essere attivo per rilevarlo. Un'interfaccia Ethernet fisica ovviamente si comporta allo stesso modo).

Quando l'interfaccia viene disattivata (ip link set ... down ), il vettore non può più essere rilevato poiché il dispositivo hardware sottostante è stato molto probabilmente spento e l'operstato diventa "inattivo". ethtool dirà semplicemente che non c'è alcun collegamento, quindi non può essere utilizzato in modo affidabile per questo (verrà sicuramente visualizzato qualche sconosciuto voci ma esiste uno schema affidabile per questo?).

Questa volta ciò avrà effetto sulle impostazioni di rete di livello 3. Il kernel si rifiuterà di aggiungere rotte utilizzando questa interfaccia e rimuoverà tutte le rotte precedenti ad essa correlate:

  • il file automatico (proto kernel ) Percorsi LAN aggiunti durante l'aggiunta di un indirizzo
  • qualsiasi altra route aggiunta (es:la route predefinita) in qualsiasi tabella di routing (non solo la main tabella di routing) che dipendono direttamente dall'interfaccia (scope link ) o su altri percorsi cancellati in precedenza (probabilmente allora scope global ). Poiché questi non riappariranno quando l'interfaccia viene ripristinata (ip link set ... up ) vengono persi fino a quando uno strumento in spazio utente non li aggiunge di nuovo.

Interazioni nello spazio utente

Quando si utilizzano strumenti recenti come NetworkManager, ci si può confondere e pensare che una disconnessione sia simile a un'interfaccia inattiva. Questo perché NM monitora i collegamenti e intraprenderà azioni quando si verificano tali eventi. Per avere un'idea il ip monitor lo strumento può essere utilizzato per monitorare dagli script, ma al momento non ha un output stabile/parsabile (nessun output JSON disponibile), quindi il suo utilizzo è limitato.

Quindi, quando un filo viene disconnesso, molto probabilmente NM considererà di non utilizzare più la configurazione corrente a meno che un'impostazione specifica non lo impedisca:quindi cancellerà gli indirizzi e le rotte stesse. Quando il filo viene ricollegato, NM applicherà nuovamente la sua configurazione:aggiungerà indietro indirizzi e percorsi (usando DHCP se pertinente). Questo sembra lo stesso ma non lo è. Per tutto questo tempo l'interfaccia è rimasta attiva , o non sarebbe stato nemmeno possibile per NM essere avvisato quando la connessione era tornata.

Riepilogo

  • È facile distinguere i due casi:ip link show visualizzerà NO-CARRIER +LOWERLAYERDOWN per un'interfaccia disconnessa e DOWN per un'interfaccia disattivata amministrativamente.

  • l'impostazione amministrativa di un'interfaccia inattiva (e attiva) può causare la perdita di percorsi

  • perdere l'operatore e ripristinarlo non interrompe le impostazioni di rete. Se il ritardo è abbastanza breve, non dovrebbe nemmeno interrompere le connessioni di rete in corso

  • ma le applicazioni che gestiscono la rete potrebbero reagire e modificare le impostazioni di rete, a volte con un risultato simile a un caso di inattività amministrativa

  • puoi usare comandi come ip monitor link per ricevere eventi relativi a interfacce impostate amministrativamente inattive/attivate o modifiche al gestore telefonico, o ip monitor per ricevere tutti i molteplici eventi correlati (compresi i cambi di indirizzo o percorso) che si verificherebbero in questo momento o poco dopo.

  • La maggior parte ip comandi (ma non ip monitor ) hanno un output JSON disponibile con ip -json ... per aiutare gli script (insieme a jq ).

    Esempio (continuando dal primo veth esempio):

    vethb è ancora inattivo:

    # ip -j link show dev vethb | jq '.[].operstate'
    "DOWN"
    
    # ip -j link show dev vetha | jq '.[].operstate'
    "LOWERLAYERDOWN"
    

    Imposta vethb up, che ora ottiene una portante su entrambi:

    # ip link set vethb up
    # ip -j link show dev vetha | jq '.[].operstate'
    "UP"
    

    Questo indica i 3 soliti stati:amministrativamente inattivo , lowerlayerdown (es:attivo ma disconnesso) o alto (ovvero:operativo).


Linux
  1. Qual è la differenza tra InnoDB e MyISAM?

  2. La differenza tra ~/.profile e ~/.bash_profile?

  3. Differenza tra l'heap Java e l'heap C nativo

  4. Qual è la differenza tra strtok_r e strtok_s in C?

  5. Qual è la differenza tra fsck ed e2fsck?

Qual è la differenza tra Linux e Unix?

La differenza tra "env" e "printenv"?

La differenza tra Nss e Pam?

Che cos'è un hypervisor? Qual è la differenza tra il tipo 1 e 2?

Qual è la differenza tra curl e Wget?

Qual è la differenza tra adduser e useradd?