web-dev-qa-db-fra.com

Quelle est la gravité de l'épuisement des adresses IPv4?

Depuis des années, la presse écrit sur le problème du fait qu'il y a maintenant très peu d'adresses IPv4 disponibles. Mais d'un autre côté, j'utilise une société d'hébergement de serveurs qui distribue volontiers des adresses IPv4 publiques pour une petite somme d'argent. Et ma connexion Internet privée est fournie avec une adresse IPv4 publique.

Comment est-ce possible? Le problème est-il aussi grave que la presse veut nous le faire croire?

162
oz1cz

C'est tres mal. Voici une liste d'exemples de ce que j'ai de première main avec les FAI des consommateurs pour lutter contre la pénurie d'adresses IPv4:

  • Mélange répété autour des blocs IPv4 entre les villes, provoquant de brèves pannes et des réinitialisations de connexion pour les clients.
  • Raccourcissement DHCP durées de location de quelques jours à quelques minutes.
  • Permettez aux utilisateurs de choisir s'ils souhaitent traduction d'adresse réseau (NAT) sur l'équipement client (CPE) ou non, puis allumez-le rétroactivement pour tout le monde.
  • Activation de NAT sur CPE pour les clients qui ont déjà profité de l'opportunité de désactiver NAT.
  • Réduction du plafond sur le nombre d’activités simultanées adresses de contrôle d’accès aux médias (MAC) appliquées par CPE.
  • Déploiement grade opérateur NAT (CGN) pour les clients qui avaient une véritable adresse IP lors de leur inscription au service.

Tous ces éléments réduisent la qualité du produit que le FAI vend à ses clients. La seule explication raisonnable pour laquelle ils feraient cela à leurs clients est le manque d'adresses IPv4.

La pénurie d'adresses IPv4 a conduit à une fragmentation de l'espace d'adressage qui présente de multiples lacunes:

  • Les frais généraux administratifs qui non seulement coûtent du temps et de l'argent, mais sont également sujets aux erreurs et ont entraîné des pannes.
  • Grande utilisation de mémoire adressable par contenu (CAM) capacité sur les routeurs de dorsale qui, il y a quelques années, conduit à panne importante sur plusieurs FAI lorsqu'elle a dépassé la limite d'un modèle populaire particulier de routeurs.

Sans NAT il n'y a aucun moyen de se débrouiller aujourd'hui avec les 3700 millions d'adresses IPv4 routables. Mais NAT est une solution fragile qui vous donne une connectivité moins fiable et les problèmes qui sont difficiles à déboguer. Plus il y a de couches de NAT pire ce sera. Deux décennies de dur labeur ont fait une seule couche de NAT principalement travail, mais nous avons déjà franchi le point où une seule couche de NAT était suffisante pour contourner la pénurie d'adresses IPv4.

175
kasperd

Avant de commencer à manquer d'adresses IPv4, nous n'utilisions pas (largement) le NAT. Chaque ordinateur connecté à Internet aurait sa propre adresse unique au monde. Lorsque NAT a été introduit pour la première fois, il fallait passer de donner aux clients du FAI 1 adresse réelle par appareil utilisé par le client/propriétaire à donner à 1 client 1 adresse réelle. Cela a résolu le problème pendant un certain temps (des années) alors que nous devions passer à IPv6. Au lieu de passer à IPv6, (principalement) tout le monde a attendu que tout le monde passe et donc (surtout) personne n'a déployé IPv6. Maintenant, nous rencontrons à nouveau le même problème, mais cette fois, une deuxième couche de NAT est en cours de déploiement (CGN) afin que les FAI puissent partager 1 adresse réelle entre plusieurs clients.

L'épuisement des adresses IP n'est pas un problème si NAT n'est pas terrible, y compris dans le cas où l'utilisateur final n'a aucun contrôle sur lui (Carrier Grade NAT ou CGN).

Mais je dirais que NAT est terrible, surtout dans le cas où l'utilisateur final n'en a pas le contrôle. Et (en tant que personne dont le travail est l'ingénierie/administration de réseau mais qui a un diplôme d'ingénieur logiciel), je dirais qu'en déployant NAT au lieu d'IPv6, les administrateurs réseau ont déplacé le poids de la résolution de l'épuisement des adresses de leur sur le terrain et aux utilisateurs finaux et aux développeurs d'applications.

Alors (à mon avis), pourquoi NAT est-il une chose terrible et mauvaise à éviter?

Voyons si je peux lui rendre justice en expliquant ce qu'il casse (et quels sont les problèmes qu'il cause auxquels nous sommes tellement habitués que nous ne réalisons même pas que cela pourrait être mieux):

  • Indépendance de la couche réseau
  • Connexions poste à poste
  • Désignation et emplacement cohérents des ressources
  • Acheminement optimal du trafic, les hôtes connaissant leur véritable adresse
  • Suivi de la source du trafic malveillant
  • Protocoles réseau qui séparent les données et contrôlent dans des connexions distinctes

Voyons voir si je peux expliquer chacun de ces éléments.

Indépendance de la couche réseau

Les FAI sont censés simplement faire circuler les paquets de couche 3 et ne se soucient pas du contenu des couches supérieures. Que vous passiez TCP, UDP ou quelque chose de meilleur/de plus exotique (SCTP peut-être? Ou même un autre protocole meilleur que TCP/UDP, mais obscur en raison d'un manque de support de [NAT), votre FAI n'est pas censé s'en soucier; tout est censé leur ressembler à des données.

Mais ce n'est pas le cas - pas lorsqu'ils mettent en œuvre la "deuxième vague" du NAT, le NAT "Carrier Grade". Ensuite, ils doivent nécessairement examiner et prendre en charge les protocoles de couche 4 que vous souhaitez utiliser. Pour le moment, cela signifie pratiquement que vous ne pouvez utiliser que [TCP et UDP. D'autres protocoles seraient soit simplement bloqués/abandonnés (la grande majorité des cas dans mon expérience), soit simplement transmis au dernier hôte "à l'intérieur" du NAT qui a utilisé ce protocole (j'ai vu 1 implémentation qui le fait cette). Même la transmission au dernier hôte qui a utilisé ce protocole n'est pas un vrai correctif - dès que deux hôtes l'utilisent, il casse.

J'imagine qu'il existe des protocoles de remplacement pour TCP & UDP qui sont actuellement non testés et inutilisés uniquement à cause de ce problème. Ne vous méprenez pas, TCP & UDP étaient incroyablement bien conçus et c'est incroyable de voir comment les deux ont pu évoluer jusqu'à la façon dont nous utilisons Internet aujourd'hui. Mais qui sait ce que nous avons manqué? J'ai lu sur SCTP et ça sonne bien, mais je ne l'ai jamais utilisé car il n'était pas pratique à cause du NAT.

Connexions Peer to Peer

C'est un gros problème. En fait, le plus gros à mon avis. Si vous avez deux utilisateurs finaux, tous deux derrière leur propre NAT, peu importe lequel essaie de se connecter en premier, le NAT de l'autre utilisateur abandonnera son paquet et la connexion échouera.

Cela affecte les jeux, le chat vocal/vidéo (comme Skype), l'hébergement de vos propres serveurs, etc.

Il existe des solutions de contournement. Le problème est que ces solutions de contournement coûtent soit du temps au développeur, soit du temps à l'utilisateur final et des inconvénients, soit des coûts d'infrastructure de service. Et ils ne sont pas infaillibles et se cassent parfois. (Voir les commentaires des autres utilisateurs sur la panne subie par Skype.)

Une solution de contournement est la redirection de port, où vous programmez le périphérique NAT pour transférer un port entrant spécifique vers un ordinateur spécifique derrière le périphérique NAT. Il existe des sites Web entiers consacrés à la façon de procéder pour tous les différents appareils NAT qui existent. Voir https://portforward.com/ . Cela coûte généralement du temps à l'utilisateur final et de la frustration.

Une autre solution consiste à ajouter la prise en charge de choses telles que la perforation aux applications et à maintenir l'infrastructure de serveur qui n'est pas derrière un NAT pour introduire deux clients NAT. Cela coûte généralement du temps de développement et met les développeurs dans une position de maintenance potentielle de l'infrastructure de serveur là où elle n'aurait pas été nécessaire auparavant.

(Vous vous souvenez de ce que j'ai dit à propos du déploiement de NAT au lieu d'IPv6, déplaçant le poids du problème des administrateurs réseau aux utilisateurs finaux et aux développeurs d'applications?)

Désignation/emplacement cohérent des ressources réseau

Dans la mesure où un espace d'adressage différent est utilisé à l'intérieur d'un NAT puis à l'extérieur, tout service proposé par un périphérique à l'intérieur d'un NAT a plusieurs adresses pour y accéder, et la bonne celui à utiliser dépend d'où le client y accède. (C'est toujours un problème même après que la redirection de port fonctionne.)

Si vous avez un serveur Web à l'intérieur d'un NAT, par exemple sur le port 192.168.0.23 port 80, et votre périphérique [NAT (routeur/passerelle) a une adresse externe de 35.72.216.228, et vous configurez la redirection de port pour TCP port 80, vous pouvez désormais accéder à votre serveur Web en utilisant le port 80 192.168.0.23 OR 35.72.216.228 port 80. Celui que vous devez utiliser dépend de si vous êtes à l'intérieur ou à l'extérieur du NAT. Si vous êtes en dehors du NAT et utilisez l'adresse 192.168.0.23, vous n'irez pas là où vous vous attendez. Si vous êtes à l'intérieur du NAT et que vous utilisez l'adresse externe 35.72.216.228, vous pourrait arriver là où vous voulez, si votre implémentation NAT est une avancé qui prend en charge l'épingle à cheveux, mais le serveur Web qui répond à votre demande verra la demande comme provenant de votre appareil NAT. Cela signifie que tout le trafic doit passer par le périphérique NAT, même s'il existe un chemin plus court dans le réseau derrière le NAT, et cela signifie que les journaux sur le serveur Web deviennent beaucoup moins utiles car ils répertorient tous les NAT périphérique comme source de la connexion. Si votre implémentation NAT ne prend pas en charge l'épingle à cheveux, vous n'allez pas là où vous vous attendiez.

Et ce problème s'aggrave dès que vous utilisez DNS. Du coup, si vous voulez que tout fonctionne correctement pour quelque chose hébergé derrière NAT, vous voudrez donner des réponses différentes sur l'adresse du service hébergé dans un NAT, en fonction de qui demande (AKA split horizon DNS, IIRC). Beurk.

Et tout cela en supposant que quelqu'un possède des connaissances sur la redirection de port et l'épingle à cheveux NAT et le DNS à horizon partagé. Et les utilisateurs finaux? Quelles sont leurs chances de tout configurer correctement lorsqu'ils achètent un routeur grand public et une caméra de sécurité IP et veulent que cela "fonctionne tout simplement"?

Et cela m'amène à:

Acheminement optimal du trafic, les hôtes connaissant leur véritable adresse

Comme nous l'avons vu, même avec une épingle à cheveux avancée NAT le trafic ne circule pas toujours à travers le chemin optimal. C'est même dans le cas où un administrateur compétent configure un serveur et a un NAT en épingle à cheveux. (Accordé, le DNS à horizon divisé peut conduire à un routage optimal du trafic interne entre les mains d'un administrateur réseau.)

Que se passe-t-il lorsqu'un développeur d'application crée un programme comme Dropbox et le distribue aux utilisateurs finaux qui ne sont pas spécialisés dans la configuration de l'équipement réseau? Plus précisément, que se passe-t-il lorsque je place un fichier de 4 Go dans mon fichier de partage, puis que j'essaie d'accéder à l'ordinateur suivant? Est-il transféré directement entre les machines, ou dois-je attendre qu'il soit téléchargé sur un serveur cloud via une connexion lente WAN, puis attendre une deuxième fois pour qu'il télécharge via la même connexion lente WAN connexion?

Pour une implémentation naïve, elle serait téléchargée puis téléchargée, en utilisant l'infrastructure de serveur Dropbox qui n'est pas derrière un NAT comme médiateur. Mais si les deux machines pouvaient seulement se rendre compte qu'elles sont sur le même réseau, alors elles pourraient simplement transférer le fichier directement beaucoup plus rapidement. Donc, pour notre premier essai d'implémentation moins naïf, nous pourrions demander au système d'exploitation quelles adresses IP (v4) la machine possède, puis vérifier cela par rapport à d'autres machines enregistrées sur le même compte Dropbox. Si c'est dans la même plage que nous, transférez simplement le fichier directement. Cela pourrait fonctionner dans de nombreux cas. Mais même alors, il y a un problème: NAT ne fonctionne que parce que nous pouvons réutiliser les adresses. Et si l'adresse 192.168.0.23 et l'adresse 192.168.0.42 enregistrées sur le même compte Dropbox se trouvent en fait sur des réseaux différents (comme votre réseau domestique et votre réseau professionnel)? Vous devez maintenant revenir à l'utilisation de l'infrastructure du serveur Dropbox pour la médiation. (Au final, Dropbox a essayé de résoudre le problème en faisant diffuser chaque client Dropbox sur le réseau local dans l'espoir de trouver d'autres clients. Mais ces émissions ne croisent aucun des routeurs que vous pourriez avoir derrière le NAT, ce qui signifie que ce n'est pas une solution complète , surtout dans le cas de CGN.)

IP statiques

De plus, étant donné que la première pénurie (et vague de NAT) s'est produite alors que de nombreuses connexions client n'étaient pas toujours connectées (comme les connexions commutées), les FAI pouvaient mieux utiliser leurs adresses en allouant uniquement des adresses IP publiques/externes lorsque vous étiez réellement connecté. Cela signifiait que lorsque vous vous connectiez, vous obteniez n'importe quelle adresse disponible, au lieu de toujours obtenir la même. Cela rend l'exécution de votre propre serveur beaucoup plus difficile et le développement d'applications d'égal à égal plus difficile, car ils doivent gérer les homologues qui se déplacent au lieu d'être à des adresses fixes.

Obscurcissement de la source du trafic malveillant

Parce que NAT réécrit les connexions sortantes comme si elles provenaient du périphérique NAT lui-même, tout le comportement, bon ou mauvais, est intégré dans une adresse IP externe. Je n'ai vu aucun appareil NAT qui enregistre chaque connexion sortante par défaut. Cela signifie que par défaut, la source du trafic malveillant passé ne peut être retracée qu'au périphérique NAT qu'il a traversé. Bien que les équipements de classe entreprise ou opérateur puissent être configurés pour enregistrer chaque connexion sortante, je n'ai vu aucun routeur grand public qui le fasse. Je pense certainement qu'il sera intéressant de voir si (et pendant combien de temps) les FAI garderont un journal de toutes les connexions TCP et UDP établies via les CGN lors de leur déploiement. Ces registres seraient nécessaires pour traiter les plaintes pour abus et les plaintes DMCA.

Certaines personnes pensent que NAT augmente la sécurité. Si c'est le cas, il le fait par l'obscurité. La baisse par défaut du trafic entrant que NAT rend obligatoire est la même que d'avoir un pare-feu avec état. Je crois comprendre que tout matériel capable de faire le suivi de connexion nécessaire pour NAT devrait pouvoir exécuter un pare-feu dynamique, donc NAT ne mérite pas vraiment de points là-bas.

Protocoles utilisant une deuxième connexion

Les protocoles comme FTP et SIP (VoIP) ont tendance à utiliser des connexions distinctes pour le contrôle et le contenu réel des données. Chaque protocole qui fait cela doit avoir un logiciel d'aide appelé ALG (passerelle de couche d'application) sur chaque NAT périphérique qu'il traverse, ou contourner le problème avec une sorte de médiateur ou de perforation. D'après mon expérience, les ALG sont rarement, voire jamais, mis à jour et ont été la cause d'au moins quelques problèmes que j'ai traités avec SIP. Chaque fois que j'entends quelqu'un signaler que la VoIP ne fonctionnait pas pour eux parce que l'audio ne fonctionnait que dans un sens, je soupçonne instantanément que quelque part, il y a une passerelle [NAT qui laisse tomber les paquets UDP, il ne peut pas savoir quoi faire avec.

En résumé, NAT a tendance à se briser:

  • protocoles alternatifs à TCP ou UDP
  • systèmes poste à poste
  • accéder à quelque chose hébergé derrière le NAT
  • des choses comme SIP et FTP. Les ALG pour contourner ce problème posent toujours des problèmes aléatoires et étranges aujourd'hui, en particulier avec SIP.

Au cœur, l'approche en couches de la pile réseau est relativement simple et élégante. Essayez de l'expliquer à quelqu'un qui ne connaît pas le réseautage et il suppose inévitablement que son réseau domestique est probablement un bon réseau simple à essayer de comprendre. J'ai vu cela conduire dans quelques cas à des idées assez intéressantes (excessivement compliquées) sur le fonctionnement du routage en raison de la confusion entre les adresses externes et internes.

Je soupçonne que sans NAT, la VoIP serait omniprésente et intégrée au RTPC, et que passer des appels à partir d'un téléphone portable ou d'un ordinateur serait gratuit (sauf pour Internet que vous avez déjà payé). Après tout, pourquoi devrais-je payer pour le téléphone alors que vous et moi pouvons simplement ouvrir un flux VoIP 64K et cela fonctionne aussi bien que le PSTN? Il semble qu'aujourd'hui, le problème numéro 1 du déploiement de la VoIP passe par les appareils [NAT.

Je soupçonne que nous ne réalisons généralement pas à quel point beaucoup de choses pourraient être plus simples si nous avions la connectivité de bout en bout que NAT a rompu. Les gens continuent à envoyer des e-mails (ou Dropbox) eux-mêmes, car si le problème principal est d'avoir besoin d'un médiateur lorsque deux clients sont derrière NAT.

132
Azendale

Un gros symptôme d'épuisement d'IPv4 que je n'ai pas vu mentionné dans d'autres réponses est que certains fournisseurs de services mobiles ont commencé à passer à IPv6 il y a seulement quelques années. Il y a une chance que vous utilisiez IPv6 depuis des années et que vous ne le saviez même pas. Les fournisseurs de services mobiles sont plus récents dans le jeu sur Internet et n'ont pas nécessairement d'énormes allocations IPv4 préexistantes. Ils nécessitent également plus d'adresses que le câble/DSL/fibre, car votre téléphone ne peut pas partager une adresse IP publique avec d'autres membres de votre foyer.

Je suppose que les fournisseurs IaaS et PaaS seront les prochains, en raison de leur croissance qui n'est pas liée aux adresses physiques des clients. Je ne serais pas surpris de voir bientôt les fournisseurs IaaS proposer uniquement IPv6 avec une remise.

20
Karl Bielefeldt

Il y a quelque temps, les principaux RIR ont manqué d'espace pour les allocations normales. Pour la plupart des fournisseurs, les seules sources d'adresses IPv4 sont donc leurs propres stocks et les marchés.

Il existe des scénarios dans lesquels il est préférable d'avoir une IP IPv4 publique dédiée mais ce n'est pas absolument essentiel. Il existe également un tas d'adresses IPv4 publiques qui sont attribuées mais pas actuellement utilisées sur Internet public (elles peuvent être utilisées sur des réseaux privés ou ne pas être utilisées du tout). Enfin, il existe des réseaux plus anciens dont les adresses sont attribuées de manière beaucoup plus lâche qu’elles ne le devraient.

Les trois plus grands RIR permettent désormais de vendre des adresses entre leurs membres et entre eux. Nous avons donc un marché entre les organisations qui ont des adresses qu'elles n'utilisent pas ou qui ont des adresses qui pourraient être libérées pour un coût d'un côté et les organisations qui ont vraiment besoin de plus d'adresses IP de l'autre.

Ce qui est difficile à prévoir, c'est combien il y aura d'offre et de demande à chaque prix et donc ce que le prix du marché fera à l'avenir. Jusqu'à présent, le prix par IP semble être resté étonnamment bas.

14
Peter Green

Idéalement, chaque hôte sur Internet devrait pouvoir obtenir une adresse IP de portée mondiale, mais l'épuisement de l'adresse IPv4 est réel, en fait ARIN a déjà manqué d'adresse dans son pool gratuit .

La raison pour laquelle tout le monde peut toujours accéder aux services Internet très bien, c'est grâce aux techniques de traduction d'adresses réseau (NAT) qui permettent à plusieurs hôtes de partager des adresses IP publiques. Cependant, cela ne va pas sans problèmes.

7
Torin

Vous avez déjà obtenu d'excellentes réponses, mais je voudrais ajouter quelque chose qui n'a pas encore été mentionné.

Oui, l'épuisement des adresses IPv4 est mauvais, selon la façon dont vous le mesurez. Certaines entreprises disposent encore d'une énorme offre d'adresses IPv4, mais nous commençons à voir des solutions de contournement comme le NAT de classe opérateur.

Mais la plupart des réponses sont fausses lorsqu'elles passent à IPv6.

Voici une liste de technologies qui peuvent aider à faire face à la pénurie d'adresses IPv4. Chacun a ses propres avantages et inconvénients.

  • IPv6

    • Avantage: standardisé et disponible dans la plupart des systèmes d'exploitation.
    • Inconvénient: malgré de fréquentes déclarations contraires, de graves problèmes de sécurité. Dès 2005, US CERT averti des problèmes de sécurité causés par l'adressage global d'IPv6. IPv6 peut être correctement sécurisé, mais étant donné l'état des routeurs grand public, cela peut ne pas se produire.
    • Inconvénient: la migration prend du temps, de l'argent et de l'expertise.
    • Inconvénient: de nombreux appareils grand public sont gravement défectueux. Par exemple, un certain nombre de routeurs D-Link prennent en charge IPv6 en transférant simplement tout le trafic sans offrir de pare-feu.

Autre considération: même si IPv6 a pris tout son sens aujourd'hui, il faudrait encore environ 20 ans pour éliminer IPv4, en raison de l'équipement hérité que les gens utiliseront pendant très longtemps (je vois toujours des serveurs Windows 2003 et Windows XP postes de travail occasionnellement! Sans parler de toutes les imprimantes et caméras et gadgets IoT qui ne prennent pas en charge IPv6).

  • CGNat:
    • Avantage: fonctionne sans modifications chez le client.
    • Inconvénient: ne prend en charge que les connexions sortantes.
    • Inconvénient: peut ne pas prendre en charge quelques protocoles.

Finalement, CGNat ne suffira pas. Peut-être que IPv6 va se propager, mais il est également tout à fait possible que nous finissions par voir un NAT de niveau national, ou quelque chose du genre.

Actuellement, en tant que consultant, je dois souvent signaler à mes clients qu'ils sont exposés sur IPv6 (souvent grâce à Teredo). La question suivante sera invariablement: "combien cela coûte-t-il de régler cela?" puis "Combien cela coûte-t-il de le bloquer? Que perdons-nous si nous le désactivons?" Devinez quelle sera la décision à chaque fois.

Conclusion: pour répondre à votre question, oui, l'épuisement IPv4 est réel. Et nous verrons pas mal de mécanismes pour y faire face. IPv6 peut ou non devenir l'équation.

Pour être clair: je ne dis pas que j'aime comme cette situation. J'aimerais que IPv6 réussisse (et j'aimerais voir un certain nombre d'améliorations à IPv6). Je regarde simplement la situation telle qu'elle est actuellement sur le terrain.

5
Kevin Keane

Les FAI distribuaient des blocs de 256 adresses IP aux entreprises. Maintenant, les FAI sont avares et vous donnent (une entreprise) comme 5. À l'époque (2003), chaque PC et appareil connecté dans votre maison avait sa propre adresse IP Internet. Maintenant, le routeur câble/DSN/Fios a une adresse IP et donne des adresses IP 10.0.0.x à tous les PC de votre maison. Résumé: les FAI gaspillaient les adresses IP et maintenant ils ne les gaspillent plus.

5
Russell Hankins