Por que os endereços IP são fornecidos para cada interface e não para o dispositivo? Quais seriam as implicações disso?

12

Por que precisamos fornecer endereços IP para cada interface? Não basta dar um para cada dispositivo?

Tiago Oliveira
fonte
3
Alguns dispositivos obtêm apenas um IP para gerenciamento que não está vinculado a nenhuma interface específica. Outros funcionam da maneira que você descreveu. Varia de acordo com o dispositivo, modelo e software / firmware. Além disso, pode ser necessário atribuir um endereço IP diferente por interface, dependendo dos requisitos de uma tarefa.
Jesse P.
3
Resposta curta - para possibilitar roteadores. Um roteador é apenas um computador (hoje em dia provavelmente Linux) que precisa se conectar a redes diferentes - portanto, deve ter a capacidade de ter vários endereços IP. O IP múltiplo por dispositivo surgiu aproximadamente ao mesmo tempo que a invenção do roteador.
slebetman
Nenhuma resposta com informações históricas? Decepcionado :-)
Daniel W.
Esta pergunta não faz sentido, ou não é uma afirmação lógica concreta ou completa. É apenas uma combinação de palavras. Um endereço IP é um número inteiro usado no protocolo da Internet definido em vários pedidos de comentários. Eu não acredito que uma noção de "dispositivo" ou "interface já esteja definida."
marshal craft
Por exemplo, dois aplicativos do Windows em execução na mesma máquina física podem utilizar uma rede que usa o protocolo IP para se comunicar. Existem prós e contras nisso. Dito isto, novamente o protocolo ip é uma coisa lógica abstrata que é executada sobre as camadas subjacentes, que elas mesmas podem ser abstratas da mesma forma que o IP.
Marshal craft

Respostas:

25

Conectar uma interface a uma rede faz dela parte dessa rede. Portanto, o endereço IP é uma propriedade da conexão, não o host.

Da mesma forma, um host pode ter muitas conexões de rede e, consequentemente, endereços IP. As interfaces diferentes geralmente têm funções diferentes, por isso é importante distinguir entre elas (por exemplo, console interno, serviços públicos, iSCSI).

Os roteadores requerem vários endereços IP para suas interfaces.

Zac67
fonte
14

Não.

Dito isto, vamos ver um exemplo simplificado:

Eu tenho um computador com três interfaces: eth0(Ethernet com fio), wlan0(wifi) e vboxnet0(caixa virtual). Uma das interfaces está conectada a uma rede interna, uma está conectada à Internet e a última está conectada a uma rede de computadores virtuais. Digamos que eu tenho apenas um endereço, 10.1.2.3, e desejo enviar muitos pacotes para 192.168.1.2, alcançáveis ​​em uma dessas redes - para onde os envio? Não é possível simplesmente enviá-los para todos os lugares, esse comportamento inundaria todas as redes em pouco tempo.

Mas se a interface eth0 tiver 192.168.1.3, wlan0 tiver 10.1.2.3 e vboxnet0 tiver 172.0.0.1, a tabela de roteamento padrão provavelmente dirá "envie eth0". (Isso obviamente pode ficar muito mais complicado com regras de roteamento mais complexas).

Por outro lado, talvez eu queira executar um serviço apenas na interface aberta à rede privada - portanto, quando uma solicitação chega em uma interface diferente, ela não é tratada de maneira alguma.

Piskvor saiu do prédio
fonte
1
Por que você não sabia o que é acessível em cada interface sem aqueles com endereços IP diferentes?
Paŭlo Ebermann
Você poderia (e é realmente possível ter essas regras de roteamento), mas então você está indo para um nível mais baixo de abstração, em vez de dizer "envie qualquer coisa que não seja compatível com 10.1.2.1" e termine com isso (camada OSI 3), agora você precisa manipular "qual das interfaces eu quero (camada 2)". Também é possível , mas a abstração simplifica as coisas.
Piskvor saiu do prédio 17/01/19
2
E outra coisa: os endereços IP também são atribuídos para que outras pessoas entrem em contato com você. Digamos que você esteja conectado via Wi-Fi e Ethernet; cada uma das interfaces entra em uma rede diferente, mas as duas redes podem acessar a Internet. Agora você envia um pacote para o 1.2.3.4 do seu 10.1.2.3 - qual é a rota de retorno? Wifi ou com fio? Você pode adivinhar, mas se você adivinhar errado, o pacote volta pela interface errada e pode ser descartado. (Sim, há casos em que você deseja várias interfaces com o mesmo endereço IP, ou um iface com mais endereços IP, ou um iface com nenhum endereço - incomum)
Piskvor saiu do prédio
5

Caso 1: roteadores

Teoricamente, isso seria possível.

No entanto, normalmente um pacote IP é enviado "diretamente" para o destino quando o endereço IP "corresponde" a uma determinada máscara de rede (por exemplo, 10.0.0.0/28); caso contrário, o pacote será enviado por um roteador.

Isso significa:

  • Um roteador conecta duas redes; cada uma das duas redes possui uma máscara de rede
  • Pacotes enviados de um computador para outro em uma das duas redes não passam por um roteador.

    Isso significa que os endereços IP de cada computador correspondem à máscara de rede da rede à qual estão conectados.

  • Os pacotes enviados ao roteador (isso inclui os pacotes roteados pelo roteador!) Não são enviados de um computador para o roteador por meio de um segundo roteador.

    Isso significa que o endereço IP do roteador deve corresponder às máscaras de rede de ambas as redes.

  • Os pacotes IP enviados de um computador em uma rede para um computador na outra rede são enviados pelo roteador.

    Isso significa que os endereços IP dos computadores em uma rede não devem corresponder à máscara de rede da outra rede.

É quase impossível escolher um endereço IP e duas máscaras de rede, de forma que um endereço IP corresponda às duas máscaras de rede, mas muitos endereços IP correspondem apenas a uma máscara de rede.

Caso 2: Diferentes redes privadas

Poderíamos ter o caso de um computador estar conectado a duas redes privadas que não podem trocar dados entre si.

Nesse caso, um computador pode ter o mesmo endereço IP nas duas redes.

No caso do IPv4, a maioria dos sistemas operacionais não suporta isso porque os sistemas operacionais usam as máscaras de rede das duas redes para distinguir entre elas. As redes precisam ter máscaras de rede diferentes ...

No caso do IPv6 (usando endereços "link-local"), um computador pode ter o mesmo endereço IP (link-local) em duas redes diferentes - e, portanto, duas placas de rede podem ter o mesmo endereço IP!

Martin Rosenau
fonte
Em um caso específico, as especificações TSN para ethernet permitem várias interfaces com o mesmo IP, máscara e endereço MAC para oferecer suporte a caminhos redundantes sem costura para ethernet determinístico (802.1cb). A redundância é tratada no nível MAC (detecção de informações duplicadas compactadas e ignorando informações redundantes), portanto, da perspectiva dos hosts, é uma interface.
crasic
3

Fiquei me perguntando, por que precisamos fornecer endereços IP para cada interface? Não daria para cada dispositivo o suficiente?

Deixe-me começar desafiando sua suposição. Por que você diz que não é assim que as máquinas se comportam? Digamos que eu atribua 192.168.1.1/24 a eth1 e 192.168.2.1/24 a eth2. Além de instalar uma rota para 192.168.1.0/24 de saída eth1 e 192.168.2.0/24 de saída eth2 e determinar o endereço IP de origem preferido para pacotes enviados ao longo dessa rota, quanto importa realmente a qual interface atribuo o endereço IP? O que realmente muda? Em que sentido a máquina não se comporta como se todos os endereços IP atribuídos às interfaces na máquina pertencessem à máquina?

Ambas as abordagens são usadas. A abordagem mais comum é na verdade um híbrido dessas duas abordagens.

No extremo "fornecer um endereço IP a um dispositivo", você pode imaginar um dispositivo que se comportasse como se todas as suas interfaces estivessem conectadas a uma ponte de filtragem com um endereço IP atribuído à ponte.

No extremo "dê a cada interface um endereço IP", você pode imaginar um dispositivo que se comportasse como se cada interface tivesse uma máquina separada. (Veja aqui se você acha que é assim que os dispositivos funcionam atualmente ou pensa em alguém que se conecta a um endereço IP atribuído a uma interface, mas os pacotes chegam e são enviados por outro.)

Na prática, a maioria das máquinas opera em algum lugar intermediário. Eles agem como se todos os endereços IP pertencessem à máquina. A atribuição de um IP a um dispositivo específico não faz muito mais do que dizer ao sistema operacional para instalar uma rota padrão nessa interface e definir o endereço IP de origem padrão para pacotes enviados nessa interface em que o endereço IP de origem não é ' forçado.

Caso contrário, eles se comportam como se todos os endereços IP pertencessem à máquina. A maneira como um pacote é processado não depende muito da interface em que é recebido - os pacotes com um endereço IP de origem atribuído a uma interface recebida em outra são rotineiros. A qual interface um endereço está atribuído não tem efeito direto em qual interface um pacote é enviado, a tabela de roteamento determina isso.

David Schwartz
fonte
3

Um dispositivo que possui um endereço IP existe dentro de uma rede.

Um roteador é um dispositivo cujo objetivo principal é transmitir tráfego entre redes .

Para que um roteador passe pacotes entre duas redes, ele deve existir nas duas redes.

O roteador terá um "braço" dentro de cada rede - ou como chamamos, uma interface . E a maneira como uma interface existe em uma rede é atribuindo a ela um endereço IP na rede.

Assim, ao configurar um roteador, cada interface de receber um endereço IP para identificar as redes que que Router pertence dentro .

Disclaimer: O link acima é para o meu blog. Meu blog não é monetizado. Não tenho lucro com você lendo. Estou fornecendo um link simplesmente para seu benefício (e de qualquer outro leitor).

Eddie
fonte
1
Resposta agradável e concisa, maneira muito clara de explicar o porquê .
Stilez 16/01/19
2

No caso geral, você precisa de um IP por rede local à qual se conectar, e é assim que o TCP / IP foi definido: cada host em uma determinada rede local possui um endereço IP, o que permite:

  • para rotear o tráfego para a rede local apropriada, com base no endereço IP de destino
  • para direcionar o tráfego para o dispositivo apropriado nessa rede local (após uma pesquisa ARP nas redes locais 802.x, por exemplo).

Desde que você tenha redes locais com vários dispositivos conectados a ele (a maioria das redes locais 802.x, incluindo Ethernet, Wi-Fi), é muito difícil contornar isso, a menos que você altere fundamentalmente a maneira como o TCP / IP funciona.

No entanto, é realmente possível evitar isso, embora seja bastante específico.

Considere uma rede que possua apenas links ponto a ponto (Ethernet ponto a ponto entre dois dispositivos sem um comutador ou hub, links DSL, links SONET / SDH, Frame Relay ou ATM VCs ...).

A convenção usual é usar um / 30 para cada link, para que o dispositivo em cada extremidade tenha um endereço IP nesse link.

Mas você pode usar "IP não numerado" e não associar nenhum endereço IP a esses links. Agora, você atribui um IP à interface de loopback do dispositivo (qualquer interface realmente, mas a loopback é a mais fácil para essa finalidade) e usa um protocolo de roteamento dinâmico (IS-IS, OSPF, EIGRP ...). Esse protocolo de roteamento anunciará como rotear o tráfego para esse endereço IP através dos vários links não numerados.

jcaron
fonte
0

Os endereços IP incluem informações de roteamento. Um endereço IP é dividido em dois componentes, o número da rede e o número do host , com base no tamanho do prefixo atribuído (que foi originalmente expresso como uma máscara de rede, e ainda é assim que é implementado internamente nas pilhas de rede).

Para que o roteamento funcione corretamente, todos os dispositivos conectados a uma rede específica devem ter endereços com o mesmo número de rede. Os remetentes determinam se o destinatário está na mesma rede ou em uma rede diferente comparando seu próprio número de rede com o endereço do destinatário. Se estiverem na mesma rede, eles enviarão diretamente; caso contrário, eles enviam para um roteador cujo trabalho é aproximar a mensagem do destino.

Portanto, se um dispositivo estiver conectado a várias redes, ele precisará de um endereço em cada uma dessas redes para que possa ser acessado pelos dispositivos dessa rede.

Dito isto, não é realmente necessário que os endereços sejam atribuídos especificamente a interfaces de rede específicas. O dispositivo pode ter apenas uma lista de todos os IPs que possui em uma única tabela. Mas as interfaces ainda precisam de informações sobre a qual rede elas estão conectadas. Ao atribuir um IP e uma máscara de rede a cada interface, colocamos essas informações em um único local, simplificando o design. Não há necessidade de código extra para manter a lista de IPs consistente com a lista de redes às quais as interfaces estão conectadas.

Barmar
fonte
0

Pode ser suficiente ter um IP no caso padrão, mas, como destacado por outras respostas, há muitos casos em que não é.

Outras respostas já mencionaram o caso de um roteador. Um deles menciona o virtualbox, que é o caso das máquinas virtuais: você pode estar executando em um único dispositivo físico vários dispositivos virtuais. Outro caso são as VLANs, na verdade você pode estar conectado a uma única placa de rede, várias LANs virtuais diferentes, com endereços IP diferentes. E, por alguns motivos, você pode ter uma interface com vários IPs, por exemplo, porque deseja executar vários servidores Web na porta TCP 80. Essa configuração não é incomum para servidores, o hardware que você aluga pode ter uma única placa de interface de rede , mas você terá vários endereços IP configurados.

user1532080
fonte