Je comprends que les adresses privées telles que 10.0.0.0/8
, 172.16.0.0/12
et 192.168.0.0/16
ne sont pas routables. Cependant, qu'est-ce qui empêche exactement ces adresses d'être routables? Les FAI mettent-ils en œuvre des listes de contrôle d'accès qui empêchent ces réseaux de router ou est-ce quelque chose de plus haut?
Est-ce aussi l'IANA qui a créé ce design?
Les adresses IP privées sont routables, bien qu'elles ne soient pas publiquement routées. Fondamentalement, un routeur acheminera une adresse privée vers un réseau local privé/interne, plutôt que vers Internet.
Pour développer ma réponse: un routeur peut acheminer une adresse privée vers le côté public, via sa passerelle par défaut. Cependant, le paquet sera "perdu" en transit en raison de la chute d'autres routeurs, ou en raison de TTL atteignant 0.
Par exemple, jetez un œil à ceci (partiellement obscurci) 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 * * *
Comme vous pouvez le voir, le paquet est routé vers Internet public via la passerelle par défaut de la machine. Cependant, il est abandonné pendant le transit et n'atteint jamais une destination appropriée.
Après tout, les IP/classes privées se chevauchent (par définition) entre les clients, alors sur lequel des milliers de réseaux 192.168.200.x/24 doit être acheminé ce paquet?
Remarque intéressante: les fournisseurs d'accès Internet utilisent souvent des adresses privées pour leur routage interne. Si, par exemple, une classe 192.168.200.x/24 privée est utilisée pour le routage interne, le premier routeur/machine avec IP 192.168.200.1 sera recevoir mais laisser tomber le paquet, car il n'était pas sollicité. Les ICMP sont une exception intéressante, car les routeurs/machines répondent généralement aux PING non sollicités. Cela signifie que vous pouvez parfois utiliser des analyses d'adresses privées pour mapper votre réseau privé FAI.
Habituellement, les adresses IP privées sont filtrées par le FAI. Votre routeur d'accès doit également être configuré pour ne pas les faire fuir.
Les adresses IP privées ne peuvent pas être utilisées sur Internet car n'importe qui peut les utiliser. Il y a probablement plusieurs millions d'appareils utilisant 192.168.1.1 en privé - lequel est un routeur Internet censé envoyer le paquet?
Zeroconf les adresses (169.254.0.0/16) ne sont en fait pas routables. Ceux-ci peuvent être utilisés n'importe où de manière ad hoc, mais ils ne peuvent pas accéder à Internet ou à un sous-réseau autre que local. Ils ne peuvent pas être routés car ils ne peuvent être valides qu'à l'intérieur du domaine de diffusion où chaque appareil peut sélectionner une adresse inutilisée par lui-même. Par définition, zeroconf n'a pas d'instance de gestion comme un serveur DHCP.
Cependant, qu'est-ce qui empêche exactement ces adresses d'être routables?
Normes acceptées appliquées par les entités qui communiquent. Ils sont appliqués dans les logiciels, le matériel et les configurations.
Les FAI mettent-ils en œuvre des listes de contrôle d'accès qui empêchent ces réseaux de router ou est-ce quelque chose de plus haut?
Ils peuvent mais ce qui est vraiment arrêté n'est qu'une traduction invalide qui ne respecte pas les normes.
Si vous êtes comme la plupart des utilisateurs à domicile, une seule adresse IP vous est attribuée en tant qu'adresse IP publique. Pour que le trafic de tous vos appareils connectés communique, le routeur effectue la traduction de ces adresses IP internes à l'aide de NAT (traduction d'adresse réseau) ou PAT (traduction d'adresse de port).
Fondamentalement, votre routeur se souvient des adresses IP internes de votre réseau local (réseau local) qui ont démarré une session atteignant l'extérieur de votre réseau local, via le routeur, et via l'interface WAN (réseau étendu)). Lorsque les données sortent du routeur, elles contiennent cette adresse IP unique qui vous est attribuée en tant qu'IP source. Lorsqu'elles entrent, le paquet contient la même adresse que l'adresse IP de destination. Le routeur décide alors où il est dirigé à partir de là.
À l'extérieur, vous n'avez qu'une seule adresse IP qui est en fait l'IP du routeur. Le routeur est capable de suivre ces sessions et de déterminer quel trafic appartient à chaque adresse IP interne sur son LAN et dirige ce trafic en conséquence. C'est un processus de gestion complexe, mais l'idée est en fait assez simple une fois que vous comprenez que tout est en cours de traduction sur chaque routeur.
De plus, la plupart des routeurs domestiques ont des ports de commutation, grâce auxquels le trafic est acheminé via l'adresse MAC et non l'adresse IP. L'adresse MAC source dans le paquet reste la même jusqu'à ce qu'elle atteigne un routeur. Le routeur supprime cette adresse MAC source et insère l'adresse MAC de sa propre interface WAN.
Aussi, est-ce l'IANA qui a créé ce design?
Ces normes n'ont pas été conçues à l'origine par l'IANA. Aujourd'hui, bien qu'ils prennent l'initiative de fixer des normes, ils ne les appliquent certainement pas par quelque moyen que ce soit. Ce sont des normes qui sont appliquées par consensus. Rechercher RFC 791.
Ils ont une "autorité" dans la mesure où chacun est disposé à y adhérer. Il est tout à fait possible de défier ces normes, mais vous finirez par rencontrer un fournisseur de services Internet quelque part le long du chemin qui exigera que vous adhériez ou ils réduiront votre trafic.
J'espère que ça aide ..
Pour clarifier les autres réponses, les plages d'adresses IP privées que vous utilisez localement ne sont pas acheminées vers Internet car elles ont leurs propres entrées explicites dans la table de routage. Voici ma table de routage depuis mon bureau à la maison, par exemple:
$ 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
Noter la 172.17.0.0/16
et 172.18.0.0/16
. Les paquets vers ces réseaux iront directement à mes ponts Docker, sans jamais quitter mon ordinateur, car ils ont une entrée spécifique dans ma table de routage. Le 192.168.1.0/24
l'entrée indique explicitement que le trafic vers ce réseau sortira par enp5s0
interface. La table de routage de mon routeur aura une entrée similaire qui enverra tout le trafic pour ce réseau privé via l'interface à laquelle mon bureau est connecté.
Ce ne sont que les paquets pour les réseaux qui ne sont pas explicitement dans le tableau qui iront à la route par défaut. Vous pouvez explicitement marquer un réseau comme inaccessible en:
$ ip route add unreachable 10.0.0.0/8
Cela change ma table de routage en:
$ 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
Maintenant, mon bureau n'essaiera même pas de demander à la passerelle par défaut des adresses dans cette plage. Les recherches pour cette adresse renvoient immédiatement "Aucun itinéraire vers l'hôte".
$ 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
Les paquets pour les réseaux inaccessibles qui ne sont pas explicitement marqués comme inaccessibles dans la table de routage continueront d'être transmis via les routes par défaut, jusqu'à ce que le paquet atteigne un routeur qui sait explicitement que le réseau est inaccessible, ou TTL expire.