Windows Vista, Windows Server 2008, IPv6 et les applications - Bernard Ourghanlian Chief Technology & Security Officer Microsoft France
←
→
Transcription du contenu de la page
Si votre navigateur ne rend pas la page correctement, lisez s'il vous plaît le contenu de la page ci-dessous
Windows Vista, Windows Server 2008, IPv6 et les applications Bernard Ourghanlian Chief Technology & Security Officer Microsoft France
La vision d’un réseau « sans couture » Zone de confiance Internet EST votre réseau Les applications Indigne de fonctionnent normalement confiance Toutes les communications sont authentifiées Isolation IPsec Les frontières de confiance sont définies par des • Labo politiques et pas par la • Invité topologie du réseau
IPv6 : une composante de base clé La vision du réseau « sans couture » nécessite un nouveau paradigme Connectivité aisée et de bout en bout Sécurité Mobilité IPv6 est nécessaire pour supporter un tel réseau
Comment j’utilise IPv6 Internet aujourd’hui ? Client Client conforme conforme Serveurs NAP / NPS PC domestique dument provisionné Serveur IPsec périmétrique, permettant la Présuppose que le réseau sous-jacent est Utilisateur CORPNET prévention des DOS toujours non sécurisé Redéfinit le frontière du réseau CORPNET pour Data Center et ressources « cocooner » le datacenter et les ressources critiques critiques Utilisateur Réseau CORPNET compatible Les utilisateurs sont « distants » tout le temps CORPNET
IPv6 est en fonction avec Vista et Windows Server 2008 Tous les composants de Vista et de Windows Server 2008 sont capables d’utiliser IPv6 Certains composants ne sont utilisables qu’en IPv6 IPv6 est en service par défaut et préféré Contrôlable via des politiques de groupe Tous les produits de Microsoft de la « vague 2008 » sont capables d’utiliser IPv6 Configuration graphique Support complet d’IPsec
De nombreuses nouvelles fonctionnalités réseau avec Vista et Windows Server 2008 Nouvelle pile TCP/IP Domain Name System Quality of Service Server Message Block 2.0 Améliorations Http.sys Améliorations WinINet Améliorations Windows Sockets Network Device Interface Specification (NDIS) 6.0 et 6.1 Conscience du réseau Améliorations Windows Peer-to-Peer Améliorations Windows Firewall Améliorations Internet Protocol security (IPsec)
L’architecture réseau de Windows Vista Winsock Mode User Mode Kernel Clients TDI Clients WSK AFD TDI WSK TDX Nouvelle pile TCP/IP (tcpip.sys) Inspection TCP UDP RAW API IPv4 IPv6 802.3 Loop- IPv4 IPv6 WLAN 1394 back Tunnel Tunnel NDIS
Architecture Dual Stack Application Layer TCP/UDP TCP/UDP IPv6 IPv4 0x86dd 0x0800 Network Interface Layer Pile 4 et 6, choix selon la réponse DNS et préférence de l’application Exemple : Windows 2003, Windows 2000, Linux
Architecture Dual IP Layer Application Layer Transport Layer (TCP/UDP) IPv6 IPv4 Network Interface Layer Exemple : Windows Vista ou Windows Server 2008
Performances ! Améliorations majeures Auto ajustement de la fenêtre de réception Compound TCP (CTCP) pour LANs très rapides ECN (Explicit Congestion Notification) Les routeurs trop chargés peuvent marquer les paquets pour que les nœuds ralentissent leur émission et que l’on puisse réduire la perte de paquets Meilleur support des réseaux avec perte (ex : réseau sans fil dans zones encombrées) RFC 2582, 2883, 3517, 4138 Des fonctionnalités intéressantes d’IPv6 maintenant disponibles avec IPv4 Par exemple : Neighbour Unreachability Detection
Les principaux bénéfices de cette nouvelle pile Autre qu’IPv6 bien sûr Un modèle de programmation et des API plus simples (spécialement en mode kernel) Nouveau modèle de sécurité – empêche de nombreuses attaques Nouvelles API de filtrage et contrôle Windows Filtering Platform Support pour un « déchargement » de la pile vers le hardware réseau Utile pour les serveurs et les périphériques réseau, donc principalement pour Windows Server 2008 Meilleur passage à l’échelle en multiprocesseur Les paquets sont distribués sur les différents processeurs Ce n’était pas possible avant en raison des limitations de NDIS 5.1
Sécurité Jusqu’à aujourd’hui, résistance à toutes les attaques TCP/IP en déni de service On croise les doigts IPv6 et Vista ou Windows Server 2008 pour d’avantage de sécurité Pas de support d’IPsec avec la pile IPv6 dans les versions antérieures (supporté seulement avec IPv4…)
Les problèmes de migration IPv4 vers IPv6 Il y a deux problèmes clés pour migrer vers IPv6 La migration des applications La migration des infrastructures Ce sont deux problèmes séparés qui n’ont pas besoin d’être résolus simultanément Les applications peuvent migrer sans mise à jour de l’infrastructure Les technologies de transition permettent une migration graduelle des infrastructures
Les moteurs de la migrations d’infrastructure Problème Solution IPv6 Détails Prolifération des Large espace Résout les problèmes d’adressage périphériques d’adressage des périphériques et les besoins du adressables DoD (par exemple…) Consolidation réseau Large espace Résout les problèmes de conflits d’adressage d’adressages créés par les acquisitions et fusions Agilité du déploiement Instant network Motivation partielle pour certains clients Éviter les attaques de Amélioration de Intéresse notamment les institutions type man-in-the- la sécurité financières middle (secure neighbor discovery) Services données Large espace La plupart des fournisseurs de fiables pour les d’adressage solutions mobiles considèrent IPv6 mobiles Mobilité comme une source potentielle de nouveau revenu
Les problèmes de la transition La transition vers IPv6 va prendre des années Des machines continueront indéfiniment avec IPv4 ! Une migration est un projet de long terme ; la coexistence est obligatoire Les défis Les machines IPv4 doivent pouvoir être mises à jour indépendamment de la mise à jour de routeurs ou d’autres machines De nouvelles machines IPv6 natives doivent pouvoir être ajoutées sans modification sur les routeurs et autres machines Les machines IPv4 existantes implémentant IPv6 doivent pouvoir continuer de fonctionner sans adresse supplémentaire Il faut consentir à des efforts minimes pour passer une machine de IPv4 à IPv6 ou pour déployer de nouvelles machines
Gérer la transition Il n’est PAS nécessaire de migrer massivement l’infrastructure pour faire fonctionner IPv6 D’abord, utilisation de technologies de migration Tunnelling 6to4 et ISATAP permettent de faire circuler des paquets IPv6 sur un réseau IPv4 Teredo permet d’encapsuler de l’IPv6 dans des paquets UDP Puis, déploiements natifs Dual stack ou dual IP layer Supporter nativement les 2 protocoles Eteindre IPv4 le jour venu…
Support de 6to4 dans Windows Si la machine a une adresse IPv4 publique Windows s’autoconfigure une adresse 6to4 Requête 6to4.ipv6.microsoft.com pour bénéficier d’un relais public 6to4 (d’autres sont possibles…) 2002:WWXX:YYZZ::WWXX:YYZZ Avec ICS, configuration automatique de la machine comme routeur 6to4 Active le forwarding Envoie les messages de router advertisement avec préfixes 6to4 Requête 6to4.ipv6.microsoft.com pour bénéficier d’un relais public 6to4
Utilisation des technologies de transition Si la machine reçoit un message de Router Advertisement Utilisation de la connectivité IPv6 native Si la machine reçoit un Router Advertisement ISATAP Utilisation d’ISATAP Stoppe l’utilisation d’autres technologies Si la machine a une adresse IPv4 publique Utilisation de 6to4 Stoppe l’utilisation d’autres technologies Si la machine a une connectivité IPv4 privée Utilisation de Teredo
Transition en douceur 6to4, ISATAP et Teredo font partie de Windows et sont installés automatiquement Les constructeurs de routeurs supportent ces protocoles Par exemple, Cisco supporte : 6to4, ISATAP Chacune de ces technologies fournit des outils nouveaux pour les réseaux d’entreprise Support réseau plus délicat durant cette période Gestion de la sécurité à prendre en compte
Comment commencer ? Pas besoin d’un préfixe IPv6 en provenance d’un RIR pour débuter… Sur le réseau local ISATAP Dual Stack ou Dual IP Layer Pour l’Internet Connectivité IPv4 publique : utilisation de 6to4 Utilisateur derrière un NAT : utilisation de Teredo
Teredo pour la connectivité Internet Automatiquement paramétré avec Vista et Windows Server 2008 XP/2003 si la pile IPv6 est installée Derrière un NAT/Firewall qui autorise UDP en sortie
Les moteurs de la migration d’applications Problème Solution IPv6 Détails Traversée des Large espace La solution permet aux applications NAT d’adressage et de fonctionner sans changement Teredo avec ou sans NAT Réseau Instant network Les applications peuvent passer opérationnel sans heurt d’un mode ad hoc à un instantanément mode connecté Solution ad hoc plus robuste qu’avec IPv4 Vie privée Large espace Les applications peuvent utiliser d’adressage une adresse IP unique par (adresses application ou par connexion temporaires) Mobilité temps Support de la La mobilité est transparente pour les réel mobilité applications Possibilité d’implémentation sans mise à jour de l’infrastructure
La migration des applications vers IPv6 Toutes les applications ne devront pas faire face à des problèmes majeurs de migration Les applications utilisant des abstractions de haut niveau verront peu ou pas de problèmes .NET Frameworks, RPC, WinInet, Direct Play, plus les autres abstractions IPv6 Les applications faisant face à des problèmes de migration présentent généralement les caractéristiques suivantes Dépendance de la taille des adresses Dépendance de la taille ou la syntaxe des noms Interface homme - machine qui affiche des adresses IP Configuration fondées sur des adresses IP Protocoles qui embarquent des adresses IP dans le message
La migration des applications vers IPv6 Nous fournissons des outils et des APIs pour simplifier la migration Plug-In pour PreFast afin d’identifier les zones de problèmes Intégré en standard avec Visual Studio A permis la correction de 5000 problèmes dans 17 composants pour Windows Server 2008 Configuration avec une pile IPv6-only disponible pour Windows Server 2008 Extensions des API Winsock offrant une compatibilité arrière Le test des applications est souvent le plus gros effort de la migration Données pour des migrations passées : IIS 6.0 : ~3 semaines de développement, ~3 mois de test WMS : ~1 mois de développement, ~4 mois de test
IPv6 et le .NET Framework Qu’est-ce qui fonctionne au-dessus d’IPv6 avec Windows Server ? Sockets DNS HTTP Services Web XML IPv6 dans System.NET Support fourni pour IPAddress : support d’IPv4 et IPv6 DNS : retourne les adresses IPv4 et IPv6 HttpWebRequest / HttpWebResponse TcpClient / TcpListener / UdpClient IPv6 dans les Services Web XML Support fourni pour Publier un service dans un .ASMX Consommer le service en utilisant WebClientProtocol
IPv6 et les applications WIn32 Puisque Winsock est une évolution des sockets BSD les choses sont assez simples Les API « cœur » sockets sont inchangées, il faut juste utiliser une famille différente de protocole : sockaddr_in6 au lieu de sockaddr_in Utiliser getaddrinfo(), pas gethostbyname() Utiliser getnameinfo(), pas gethostbyaddr() Portage des applications Utiliser l’outil CheckV4 Être agnostique par rapport au protocole Utiliser les API de haut niveau qui le sont
Portage des applications La plupart des applications peuvent être écrites de manière indépendante du protocole Exemple : le client Telnet a pris moins de 2 heures à être porté de manière indépendante du protocole Utiliser des API indépendantes du protocole partout où c’est possible Winsock, RPC, Direct Play, sockets .NET, etc.
Utilitaire Checkv4 Parcours le code afin de contrôler les utilisations spécifiques à IPv4 Trouve les zones de problème et suggère des changements test.c(35) : gethostbyname : use getaddrinfo instead test.c(48) : SOCKADDR_IN : use SOCKADDR_STORAGE instead, or use SOCKADDR_IN6 in addition for IPv6 support Situé dans le Platform SDK Essayer de compiler avec –DIPV6STRICT Les structures et les API spécifiques à IPv4 génèrent des erreurs Utiliser le newsgroup microsoft.public.platformsdk.networking.ipv6
Différences d’adressage Les adresses sont plus grandes (128 bits) Toutes les interfaces ont typiquement plusieurs adresses Ne pas identifier une interface par une adresse Les adresses non globales ne sont pas uniques Les adresses peuvent être configurées automatiquement D’après les préfixes annoncés par les routeurs D’après les adresses IPv4 (pour le tunneling) Les adresses non globales ont des scope identifiers Supprime les ambiguïtés en cas de multi-homing Les adresses « Anycast » sont bien définies
D’autres différences Les mécanismes de tunneling automatique ont pour conséquence que l’on a toujours plusieurs interfaces Tout le trafic IP (y compris ARP) peut être sécurisé IP n’a plus de checksum ; tous les protocoles de plus haut niveau doivent donc en avoir un En-tête de longueur fixe, nombre variable d’en-têtes d’extension
Fonctions Sockets Les API de base ne changent pas Utiliser la famille et les structures d’adresse IPv6 socket() utilise PF_INET6 Fonctions qui passent des adresses : bind() connect() sendto() Fonctions qui retournent des adresses : accept() recvfrom() getpeername() getsockname()
Stockage et gestion de sockaddrs Ne PAS stocker les adresses dans DWORD ou ULONG ! sockaddrs préserve également le scope identifier struct sockaddr_in6 { sa_family_t sin6_family; in_port_t sin6_port; uint32_t sin6_flowinfo; struct in6_addr sin6_addr; uint32_t sin6_scope_id; }; Ne pas oublier de stocker également la longueur de sockaddr de manière indépendante du protocole
Ne pas déclarer les variables sockaddr ou sockaddr_in Trop petit pour détenir les adresses IPv6 sockaddr_storage est suffisamment grand pour détenir des adresses IPv4 ou IPv6 Ou bien allouer dynamiquement la bonne longueur retournée depuis les différentes API
Applications Client Résoudre les noms avant d’ouvrir le socket getaddrinfo(...) s = socket(ai->ai_family, ai->ai_socktype, ai->ai_protocol); connect(...) Et PAS s = socket(AF_INET, SOCK_xxx, 0); gethostbyname(...) connect(...)
Applications Serveur Avec Windows Server, utiliser deux listening sockets, une pour IPv4, une pour IPv6 Dans le futur, ceci devrait être possible avec juste une (une seule pile !) Le service doit démarrer dès que l’une ou l’autre des sockets peut être ouverte On peut utiliser getaddrinfo() ou WSAEnumProtocols() pour énumérer
Autres conseils Ne pas réordonner les adresses soi- même getaddrinfo() fait le travail pour vous Ne pas essayer juste la première adresse en oubliant le reste… Utiliser et stocker les noms, pas les adresses
Maintien du même binaire Ce n’est pas un problème ! Utiliser simplement un code indépendant du protocole, y compris en utilisant les nouvelles API Si l’on compile en utilisant le dernier SDK, l’API getaddrinfo sera disponible quelle que soit la plate-forme sur laquelle vous travaillez Le binaire résultant détecte automatiquement si les fonctions sont disponibles de manière native, et sinon, les fait correspondre avec les API IPv4 Pour mettre cette fonction hors service, définir _WIN32_WINNT à >= 0x0500
Migration de v4 à v6 Description de la méthode de Besoins pour le Coût Disponibilité déploiement déploiement relatif aujourd’hui Les Applications applications Déploiement des applications compatibles compatibles Option A ~0 au fur et à mesure IPv6, services IPv6 sont déjà Teredo disponibles en nombre Déploiement de technologies Support HW & Option B de transition dans une ISATAP, 6to4 €€ SW disponible infrastructure v4 existante Mise à jour de Support HW Option C Dual-stack €€€ l’Infrastructure disponible Connectivité Connectivité disponible en Option D IPv6 Natif €€€€ IPv6 Asie & Europe, U.S.
Un message clé : n’attendez pas ! Un environnement natif IPv6 n’est PAS un pré-requis pour réaliser les bénéfices de v6 Les développeurs d’application peuvent utiliser IPv6 MAINTENANT IPv4 existera encore pendant longtemps Les technologies de tunneling permettent une coexistence harmonieuse entre IPv4 et IPv6 http://www.microsoft.com/ipv6
Questions ?
Vous pouvez aussi lire