O que torna um endereço IP privado não roteável?

19

Compreendo que endereços privados, como 10.0.0.0/8 , 172.16.0.0/12 e 192.168.0.0/16 , não são roteáveis. No entanto, o que exatamente está impedindo esses endereços de serem roteáveis? Os ISPs implementam ACLs que impedem o encaminhamento dessas redes ou é algo mais alto?

Além disso, é a IANA que criou esse design?

    
por QuantumRads 09.02.2018 / 07:11

4 respostas

39

Os endereços IP privados são roteáveis, embora não sejam publicamente encaminhados. Basicamente, um roteador roteará um endereço privado para uma LAN privada / interna, e não para a internet.

Para expandir minha resposta: um roteador pode rotear um endereço particular para o lado público, por meio de seu gateway padrão. No entanto, o pacote será "perdido" em trânsito devido a outros roteadores descartando-o ou devido ao TTL do pacote atingir 0.

Por exemplo, dê uma olhada nisso (parcialmente ofuscado) traceroute -I -n 192.168.200.1 :

[root@myhost ~]# traceroute -I -n 192.168.200.1
traceroute to 192.168.200.1 (192.168.200.1), 30 hops max, 60 byte packets
 1  x.x.x.x  0.851 ms  0.841 ms  0.818 ms
 2  6x.xx.xx.xx  0.791 ms  0.791 ms  0.849 ms
 3  15x.xx.xx.xx  1.350 ms  1.347 ms  1.373 ms
 4  15x.x.xx.xx  1.446 ms  1.435 ms  1.428 ms
 5  151.6.68.20  2.272 ms  2.266 ms  2.251 ms
 6  151.6.0.91  8.818 ms  8.256 ms  8.326 ms
 7  * * *
 8  * * *
 9  * * *
10  * * *
...
...
29  * * *
30  * * *

Como você pode ver, o pacote é roteado para a Internet pública através do gateway padrão da máquina. No entanto, ele é descartado durante o trânsito e nunca alcança nenhum destino adequado.

Afinal, os IPs / classes privados são (por definição) sobrepostos entre o cliente, então em qual das redes de 192.168.200.x / 24 deve ser roteado este pacote?

Uma observação interessante: os provedores de internet geralmente usam endereços privados para seu roteamento interno. Se, por exemplo, uma classe privada 192.168.200.x / 24 for usada para roteamento interno, o primeiro roteador / máquina com IP 192.168.200.1 irá receber, mas descartar o pacote, porque não foi solicitado. O ICMP é uma exceção interessante, pois os roteadores / máquinas geralmente respondem aos PINGs não solicitados. Isso significa que você pode, em algum momento, usar varreduras de endereço privadas para mapear sua rede privada de ISP.

    
por 09.02.2018 / 07:19
8

Normalmente, os endereços IP privados são filtrados pelo ISP. Seu roteador de acesso também deve ser configurado para não causar vazamentos.

Os endereços IP privados não podem ser usados na Internet porque qualquer pessoa poderia usá-los . Há provavelmente muitos milhões de dispositivos usando 192.168.1.1 em particular - qual deles é um roteador de Internet que deve enviar o pacote?

Os endereços

Zeroconf (169.254.0.0/16) não são, na verdade, roteáveis. Estes podem ser usados em qualquer lugar de forma ad-hoc, mas eles não podem acessar a Internet ou qualquer sub-rede, mas a sua local. Eles não podem ser roteados porque só podem ser válidos dentro do domínio de transmissão, onde cada dispositivo pode selecionar um endereço não utilizado por si só. Por definição, o zeroconf não possui uma instância de gerenciamento como um servidor DHCP.

    
por 09.02.2018 / 08:25
6

No entanto, o que exatamente impede que esses endereços sejam roteados?

Padrões aceitos que são impostos por entidades que se comunicam. Estes são aplicados em software, hardware e configurações.

Os ISPs implementam ACLs que impedem o encaminhamento dessas redes ou é algo mais alto?

Eles podem, mas o que realmente está sendo parado é meramente uma tradução inválida que não segue os padrões.

Se você for como a maioria dos usuários domésticos, você tem um endereço IP atribuído a você como um endereço IP público. Para que o tráfego de todos os seus dispositivos conectados se comunique, o roteador realiza a tradução desses endereços IP internos usando NAT (conversão de endereço de rede) ou PAT (tradução de endereço de porta).

Basicamente, o seu roteador lembra quais endereços IP internos em sua LAN (rede local) iniciaram uma sessão chegando fora da sua LAN, através do roteador, e saindo pela interface WAN (rede de longa distância). Quando os dados saem do roteador, ele contém aquele único endereço IP atribuído a você como o IP de origem. Quando entra, o pacote contém o mesmo endereço do IP de destino. O roteador decide então onde é direcionado a partir daí.

Para o exterior, você tem apenas um único endereço IP, que é realmente o IP do roteador. O roteador é capaz de rastrear essas sessões e determinar qual tráfego pertence a cada endereço IP interno em sua LAN e direciona o tráfego de acordo. É um processo de gerenciamento complexo, mas a ideia é bem simples quando você entende que tudo está sendo traduzido em cada roteador.

Além disso, a maioria dos roteadores domésticos tem portas de comutação, em que o tráfego é fornecido via endereço MAC, e não endereço IP. O endereço MAC de origem no pacote permanece o mesmo até atingir um roteador. O roteador retira esse endereço MAC de origem e insere o endereço MAC de sua própria interface WAN.

Além disso, é a IANA que criou esse design?

Esses padrões não foram originalmente desenvolvidos pela IANA. Hoje, embora assumam a liderança no estabelecimento de padrões, eles certamente não os aplicam por qualquer meio de direito. São padrões que são aplicados por consenso. Pesquisar RFC 791.

Eles têm "autoridade" na medida em que todos estão dispostos a aderir a eles. É completamente possível desafiar esses padrões, mas você acabará se deparando com um ISP em algum lugar ao longo do caminho que exigirá que você adira ou eles deixarão seu tráfego.

Espero que ajude ..

    
por 09.02.2018 / 21:51
1

Como um ponto de esclarecimento de outras respostas, os intervalos de endereços IP privados que você está usando localmente não são roteados para a Internet porque eles têm suas próprias entradas explícitas na tabela de roteamento. Aqui está minha tabela de rotas da minha área de trabalho em casa, por exemplo:

$ ip route
default via 192.168.1.1 dev enp5s0 proto dhcp src 192.168.1.104 metric 1024 
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 linkdown 
172.18.0.0/16 dev br-90a372f4b373 proto kernel scope link src 172.18.0.1 linkdown 
192.168.1.0/24 dev enp5s0 proto kernel scope link src 192.168.1.104 
192.168.1.1 dev enp5s0 proto dhcp scope link src 192.168.1.104 metric 1024

Observe o 172.17.0.0/16 e 172.18.0.0/16 . Os pacotes para essas redes irão direto para minhas pontes de encaixe, sem sair do meu computador, porque eles têm uma entrada específica na minha tabela de rotas. A entrada 192.168.1.0/24 explicitamente diz que o tráfego para essa rede sairá da interface enp5s0 . A tabela de rotas do meu roteador terá uma entrada semelhante que enviará todo o tráfego para essa rede privada pela interface à qual a minha área de trabalho está conectada.

São apenas pacotes para redes que não estão explicitamente na tabela que irão para a rota padrão. Você pode marcar explicitamente uma rede como inacessível por:

$ ip route add unreachable 10.0.0.0/8

Isso muda minha tabela de rotas para:

$ ip route
default via 192.168.1.1 dev enp5s0 proto dhcp src 192.168.1.104 metric 1024 
unreachable 10.0.0.0/8 
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 linkdown 
172.18.0.0/16 dev br-90a372f4b373 proto kernel scope link src 172.18.0.1 linkdown 
192.168.1.0/24 dev enp5s0 proto kernel scope link src 192.168.1.104 
192.168.1.1 dev enp5s0 proto dhcp scope link src 192.168.1.104 metric 1024

Agora, minha área de trabalho nem tentará perguntar ao gateway padrão sobre endereços nesse intervalo. Pesquisas para esse endereço retornam imediatamente "Nenhuma rota para hospedar".

$ traceroute 10.0.0.1
traceroute to 10.0.0.1 (10.0.0.1), 30 hops max, 60 byte packets
connect: No route to host

Pacotes para redes inacessíveis que não são explicitamente marcados como inacessíveis na tabela de roteamento continuarão sendo encaminhados através das rotas padrão, até que o pacote chegue a um roteador que saiba explicitamente que a rede está inacessível ou o TTL expira.

    
por 09.02.2018 / 13:57