Como o tráfego é separado entre IPs internos e externos?

3

Se eu pingar 192.168.0.X da minha rede doméstica, ele tentará procurar na minha rede por esse endereço e não pelo IP da WAN externo. No entanto eu posso pingar 74.125.224.163 e vai pingar google.com.

Eu posso configurar minha rede interna como 74.125.224.X e, se eu tentar e pingar, ela parecerá novamente somente dentro da minha rede, mas imagino (não tentei alterá-la) que ainda posso me comunicar com Servidor do Google no mesmo endereço IP.

Em que nível isso é separado? Como os pacotes saberão que o destino do endereço IP é sair para a WAN em vez da LAN?

    
por Zombian 26.07.2012 / 21:46

3 respostas

11

Os pacotes não sabem nada - eles só carregam o endereço de destino; o caminho percorrido é decidido pelas tabelas de roteamento que são mantidas em seu computador, seu roteador e outros roteadores na Internet.

Quando um pacote é enviado do seu computador ...

  1. O SO primeiro verifica se o endereço de destino está atribuído a qualquer interface de rede no seu computador. Se sim, o sistema operacional consome-o em si - o pacote não vai para lugar algum fora do computador.

  2. Caso contrário, ele procura na tabela de roteamento todas as rotas que correspondem ao endereço de destino. Pode haver vários - o sistema operacional escolhe aquele com o maior "prefixo" correspondente.

  3. Se não houver uma rota que corresponda ao endereço de destino, o pacote será descartado.

Por exemplo, se o seu próprio endereço for 192.168.1.1 ...

  • A tabela de roteamento do seu computador pode se parecer com:

    • 10.11.12.0/24 pode ser alcançado diretamente sobre ppp0 interface
    • 192.168.1.0/24 pode ser alcançado diretamente sobre eth0 interface
    • 10.42.0.0/16 pode ser alcançado passando por 10.11.12.50
    • 0.0.0.0/0 pode ser alcançado passando por 192.168.1.254

    O número após / informa quantos bits comparar; veja notação do CIDR . Por exemplo. se for /16 , os primeiros 16 bits de ambos os endereços (começando pelo bit mais à esquerda) devem ser iguais. Se for /0 , nada é comparado, portanto, a rota corresponderá a qualquer endereço - essa é a "rota padrão".

    Tabelas de roteamento reais também têm métricas - por exemplo, se você conectou um laptop à LAN via Ethernet e Wi-Fi, ele teria duas rotas idênticas à mesma rede, mas a rota Ethernet teria métrica mais baixa, já que é mais rápido que o WiFi. Eu omiti as métricas aqui para simplificar.

  • se você pingar 192.168.1.5 , o sistema operacional:

    1. procure rotas para 192.168.1.5
    2. encontre rotas 192.168.1.0/24 e 0.0.0.0/0
    3. escolha a rota 192.168.1.0/24 , pois ela tem um prefixo maior (24 > 0)
    4. veja que a rota aponta para a interface eth0
    5. envia o pacote pelo eth0 cable

    O pacote passaria por Ethernet (ou WiFi, ou ...) diretamente para o computador de destino.

  • se você pingar 74.125.224.163 , o sistema operacional:

    1. procure rotas para 74.125.224.163
    2. encontre a rota 0.0.0.0/0
    3. veja que a rota tem o gateway 192.168.1.254
    4. procure as rotas para 192.168.1.254 que também são acessadas diretamente (sem passar por um segundo gateway)
    5. encontre a rota 192.168.1.0/24
    6. veja que a rota aponta para a interface eth0
    7. envia o pacote pelo eth0 cable

    O pacote passa por Ethernet (ou WiFi, ou ...) para 192.168.1.254 (seu roteador doméstico), que então repete o mesmo processo usando suas próprias tabelas de roteamento e envia o pacote para o próximo salto (seu Roteadores do ISP).

(Então, se você tivesse a mesma rede que o Google, não conseguiria mais acessar o Google, pois o caminho para sua própria rede sempre seria escolhido primeiro.)

    
por 26.07.2012 / 22:38
2

Não, o seu computador não tentará primeiro procurar na sua rede doméstica esse endereço. Ele irá olhar para a tabela de roteamento.

Essa tabela contém regras para as seguintes coisas

  1. O IP corresponde a um IP explicitamente (adicionado com route add -net). Em seguida, envie-o através desta interface
  2. O IP pertence a um intervalo de rede listado e, em seguida, o envia por uma interface específica.
  3. Se tudo falhar, envie-o para o gateway padrão por meio da interface especificada.

Não há uma rede específica 'interna' versus externa 'aqui na tabela.

Configurações típicas com um único switch e roteador NICm, no entanto, geralmente preenchem essas tabelas da seguinte forma:

  1. Se for para mim (localhost 127.x intervalo ou IP próprio), em seguida, enviá-lo 'out' através do dispositivo de loopback.
  2. Se for para a rede local (que ele sabe desde que você configurou uma NIC com endereço IP e máscara de rede), envie-a por meio da Ethernet local.
  3. Se não corresponder, envie-o para o gateway padrão (também conhecido como roteador na rede local).

O computador não se importa como o pacote chega ao seu destino. Tudo o que sabe e tudo o que precisa saber é o que fazer localmente e delegar o resto.

Isso pode se assemelhar muito à sua pergunta, mas não é o pacote que sabe como viajar. É o computador local, usando tabelas de roteamento locais, que decide o que deve ser feito com o pacote.

Agora, se você definir sua rede interna como 74.125.224.X e tentar executar ping (com tabelas de roteamento atualizadas), a pilha de rede reconhecerá que está tentando executar ping em seu próprio IP. Você teria uma resposta para o ping do seu próprio computador. Como você não é google, pode esquecer o googling procurando respostas através do mecanismo de busca. Nunca alcançaria os verdadeiros computadores do Google.

A comunicação com eles seria impossível, já que os pacotes para eles nunca sairiam do seu computador. Em vez disso, eles serão encaminhados de volta via loopback.

Se você desativar o loopback ou informar seu computador explicitamente para enviar esses pacotes para o roteador padrão e para a Internet, você não obterá uma resposta. Todos os outros computadores ainda encaminham seus pacotes para o computador real no Google e não para a sua rede.

    
por 26.07.2012 / 21:58
1

Seu computador tem uma máscara de sub-rede , além de um endereço IP. Seu software de rede usa a máscara de sub-rede para determinar se um endereço IP está em sua sub-rede local (e assim pode ser contatado diretamente) ou está em outra rede (e assim deve ser contatado através de seu gateway padrão).

Se você alterar seu endereço IP para que um servidor do Google esteja na mesma sub-rede que seu computador, conforme definido pela máscara de sub-rede, você não poderá se comunicar com esse servidor do Google .

    
por 26.07.2012 / 21:58