O comando 'ip addr' mostra 'UP' mesmo que não haja endereço associado a essa interface

16

Gostaria de entender o que se entende por uma interface de rede? Porque ip addrou ifconfigcomando mostra uma interface como ativa mesmo quando não há IP associado a ela.

por exemplo, no 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

(ou)

[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

Qual é a utilidade real de aparecer como UP quando a interface não possui IP? Eu acredito que quando não há IP, não pode haver comunicação sobre isso? Então, qual é a utilidade disso?

Srikanth Ganesan
fonte
11
Os quadros Ethernet podem fazer mais do que apenas conter pacotes IP.
Casey

Respostas:

17

O LOWER_UPé o estado do link Ethernet (ou outro protocolo da camada de link). É definido como Driver signals L1 up, o que basicamente significa que o cabo está instalado e ele pode ver outro dispositivo na outra extremidade do cabo.

O UPmeio que foi ativado. Isso pode ser controlado por você (ou um script) usando o comando ip link set <device> upof ifconfig <device> up.

Existem outros protocolos, como o IPX, que usam Ethernet, mas não terão um endereço IP, pois não fazem parte da pilha do Protocolo da Internet. Portanto, é perfeitamente aceitável que o link tenha UPmas não tenha um endereço IP.

garethTheRed
fonte
Na verdade, o DHCP é construído sobre a transmissão UDP, que requer uma camada IP (na verdade, pode ser roteada). Outro exemplo de alternativa usada historicamente para o IP foi NetBIOS (antes de ser transferido para NetBIOS sobre IPX / SPX e, em seguida, como NetBIOS sobre TCP / IP)
pqnet
[root @ IDCDVAM887 ~] # ip addr show eno33557248 3: eno33557248: <BROADCAST, MULTICAST, UP, LOWER_UP> mtu 1500 qdisc estado pfifo_fast UP qlen 1000 link / éter 00: 50: 56: 9e: 68: 86 brd ff: ff : ff: ff: ff: ff inet 10.54.2.7/32 escopo global eno33557248: 1 valid_lft para sempre preferência_lft para sempre No formato acima, há uma interface virtual 'eno33557248: 1' com algum IP. Por que não apareceu UP separadamente? É suficiente mostrar apenas a interface original como UP?
Srikanth Ganesan
@pqnet - Eu estava tentando afirmar que a parte "sem IP, sem comunicação" da pergunta do OP não é verdadeira. Talvez não tenha sido o melhor exemplo então! Vou removê-lo, pois isso só causará confusão.
GarethTheRed
Essa parte agora entendi obrigado a ambos .. !!!
Srikanth Ganesan
ip addr em RHEL7 para uma interface que configurou interface ou apelido causando muita confusão como virtual múltipla como encontrar se cabe ou não
Srikanth Ganesan
7

O UPstatus é o estado administrativo da interface, ou seja, se a interface foi ativada. Você pode ativar qualquer interface usando, por exemplo,

ip l s eth0 up

Se o cabo estiver conectado e um link for estabelecido, a interface também obterá o estado operacional de RUNNING.

Muitas placas inibirão a geração de operadora de saída se o estado administrativo não estiver UP, e uma interface que UPnão esteja RUNNINGtambém não , portanto, se eu definir

ip l s eth0 down

Eu esperaria que minha interface local perdesse ambos UPe RUNNING, e a interface correspondente no lado remoto também não seria mais RUNNING(mas ainda UPassim, se eu ativar meu lado novamente, obteria um link).

Esse é apenas o link Ethernet. No topo do link, vários protocolos podem ser vinculados, sendo um deles o IPv4. Por padrão, o IPv4 é vinculado a todas as interfaces que suportam a família de protocolos.

Quando o protocolo está vinculado, posso enviar e receber pacotes com qualquer endereço atribuído à interface. Se nenhum endereço for atribuído, isso significa simplesmente que não há um endereço válido que possa ser usado para pacotes de saída (portanto, o envio de um pacote falhará), nem qualquer endereço unicast que um pacote de entrada possa ser endereçado para o qual o sistema reconheceria como local (portanto, somente pacotes de difusão / multicast podem ser recebidos).

Isso não diz respeito à camada de link nem um pouco, pois apenas estabelecerá um link.

Certos programas, como o cliente DHCP, têm permissão especial para enviar pacotes formatados arbitrariamente, preenchendo um endereço de origem de fantasia ou 0.0.0.0, e para receber pacotes que chegam, independentemente de serem destinados à máquina local. Isso é usado durante a configuração automática do endereço IP, em que a solicitação DHCP é enviada usando um endereço de origem de 0.0.0.0e a resposta do servidor é endereçada ao endereço de broadcast 255.255.255.255.

Portanto, há um caso de uso válido em que pacotes IP são trocados mesmo sem um endereço vinculado à interface.

Além do IPv4, também existem IPv6, IPX, AppleTalk, etc., que podem compartilhar a mesma camada física. Assim que o link é estabelecido, qualquer um desses protocolos de nível superior pode usar sua própria sequência de ativação para entrar em um estado operacional.

Simon Richter
fonte
>> uma interface que não é UP não pode estar em execução <<. Eu acho que isso pode não ser aplicável a máquinas solaris x86 em que a interface mostra execução mesmo quando o status não é 'UP'. Por exemplo 1. Pesquise uma nova interface virtual. root @ IDCDVAM890: ~ # ifconfig net0: 2 plumb 2. Verifique o status da interface. EXECUTANDO, mas nenhum IP está atribuído. root @ IDCDVAM890: ~ # ifconfig net0: 2 net0: 2: flags = 1000842 <BROADCAST, FUNCIONAMENTO , multicast IPv4> mtu 1500 Índice 2 inet 0.0.0.0 máscara de rede 0
Srikanth Ganesan
@SrikanthGanesan, você não precisa de um endereço IP para ter a interface no estado UP ou RUNNING; na verdade, a interface precisa estar UP e RUNNING para que o DHCP funcione. Parece que o Solaris herda o estado RUNNING das interfaces virtuais do pai, mas mantém um estado UP separado. Isso é um tanto irregular, pode ser interessante ver se o agente SNMP que eles envia corrige isso na visualização externa.
Simon Richter
3

uma interface pode ser "ativada" mesmo sem qualquer endereço. O status "ativo" refere-se à camada de enlace de dados (também conhecida como camada 2), que é "ativo" significa que você pode enviar e receber pacotes Ethernet. IP é algo construído em cima disso.

Um exemplo de configuração em que uma interface está ativa, mas não possui um IP (e não deve ser atribuído um) é quando a interface é escrava da ponte.

pqnet
fonte
0

magicamente, se você especificar a -4opção ou -oneline, então ela realmente mostrará a interface "em execução" como você imaginou.

Para facilitar a leitura, usei a -briefopção, mas não importa a conclusão.

veja o resultado da upopção, ele ainda mostra um 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

veja o resultado da -4opção, todos com endereços, sem DOWNdispositivos.

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

veja o resultado da -onlineopção, todos com endereços, sem DOWNdispositivos, mas dividindo endereços em 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
osexp2003
fonte