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?


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.


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.


>> 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.


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.