Installation du moteur et du client Docker

La mise en place du moteur Docker requiert l’installation du moteur Docker, du client Docker et l’hébergement et le provisioning du serveur hôte exécutant le moteur Docker.

Installation du moteur Docker

Historiquement, le moteur de Docker a été conçu pour utiliser des fonctionnalités spécifiques aux containers LXC : il ne s’exécutait donc que dans un environnement Linux. Lors de la Build 2015 sera démontré le support de Docker par Windows 10 Server (nous reviendrons ultérieurement sur ce point).

Installation du moteur Docker sur Linux

Pour installer l’environnement Docker sur une machine Linux, on peut faire usage de l’ « advanced packaging tool » pour déclencher le déploiement avec la commande suivante (cf « Create a Docker Host on Microsoft Azure ») :

sudo apt-get install docker.io

Mais pour être sûr de disposer de la dernière version, il est préférable de la télécharger directement depuis le référentiel Docker.

wget -qO- https://get.docker.com/ | sh

Installation du moteur Docker sur d’autres environnements

Une des façons de disposer du moteur Docker sous Mac ou sous Windows est d’utiliser l’application appelée Boot2Docker pour installer une machine virtuelle hébergeant une distribution Linux très légère et exécutant le daemon de Docker. Par défaut cette machine virtuelle est hébergée sous VirtualBox.

Installation de BootDocker sur Mac

Docker met également à disposition un programme d’installation de Boot2Docker qui installe le client Docker. Il suffit de double-clicker sur le package Boot2Docker-x.x.x.pkg. L’installation ajoute Boot2Docker au dossier « Applications ». Les binaires « docker » et « boot2docker » sont copiés dans le répertoire  /usr/local/bin directory.

Installation de Boot2Docker sur Windows

Docker met à disposition un programme d’installation pour Windows qui installe le client Docker pour Windows, VirtualBox, Git for Windows (MSYS-git), l’ISO Linux boot2docker Linux et l’outil d’administration Boot2Docker. Le script de démarrage Boot2Docker permet alors de lancer un shell Unix déjà configuré pour gérer Docker au sein d’une machine virtuelle.

Dans le cas de Windows, il est également possible de déployer une image Boot2Docker au format Hyper-V, notamment en utilisant DockerMachine, un outil Docker dont je vous reparlerai prochainement.

Installation du client Docker

Le client Docker est présent sur les machines Linux sur lesquelles l’environnement Docker est installé. Mais le client qui interagit avec le moteur de Docker n’est pas fondamentalement dépendant de Linux. Son rôle est uniquement de contrôler le moteur pour créer des images, les publier, puis les exécuter et gérer les containers correspondant à l’instanciation de ces images. Rien n’empêche donc de le mettre à disposition des utilisateurs d’autres environnements (comme Mac ou Windows) afin qu’ils puissent utiliser l’interface Docker standard pour manipuler containers et images sur leurs environnements de développement Linux.

Installation du client Docker sur Mac

La documentation officielle pour l’installation de Docker sur Mac propose d’installer Boot2Docker (et d’exécuter le client Docker au sein de la VM Boot2Docker. Ce n’est pas la seule option). Il est en effet possible de ne mettre à disposition que le client Docker. Pour se faire, on peut s’appuyer sur l’utilitaire Homebrew, un fort efficace package manager pour OS X. L’installation d’« Homebrew » peut se faire avec le script suivant :

ruby -e « $(curl -fsSL-https://raw.githubusercontent.com/Homebrew/install/master/install) »

D’autres mécanismes d’installation d’« Homebrew » sont proposés sur Github.

L’installation du client Docker sur Mac peut alors être réalisée par l’appel des commandes suivantes :

brew update

brew search docker

brew Install docker

Installation du client Docker sur Windows

Le code source du client Windows pour Docker publié sur GitHub est fourni avec différents scripts de pré ou post-compilation qui supposent un environnement de type Linux et la présence du langage de programmation Open Source baptisé « Go ». Le langage Go propose un programme d’installation MSI disponible pour Windows 32 et 64 bits.

Restait donc à lever la difficulté liée aux scripts précédemment évoqués. Plutôt que de porter l’ensemble de ces scripts pour une exécution Windows, l’approche retenue par Ahmet Alp Balkan a consisté à réaliser une opération dite de « cross-compilation » sur la base d’une « pull request » GitHub, en exécutant ces scripts dans un sous-système Unix de Windows (SUA : Subsystem for Unix-based Application). En général, les opérations de « cross-compilation » sous Windows se fondent sur l’utilisation des projets Open Source comme Mingw64 ou Cygwin.

Dans notre contexte, « Git for Windows » propose un shell Unix suffisant pour réaliser cette compilation avec l’aide de l’environnement « Go ».

Pour obtenir une version à jour du client Docker pour Windows, on peut donc de lancer le script suivant depuis le shell « Git Bash » :

git clone –depth 1 https://github.com/docker/docker.git/c/users/stephgou/src/github.com/docker/docker

cd /c/users/stephgou/src/github.com/docker/docker

exportGOPATH=/c/users/stephgou:/c/users/stephgou/src/github.com/docker/docker/vendor

export DOCKER_CLIENTONLY=1

chmod +x hack/make/.go-autogen && hack/make/.go-autogen

cd docker

go build

Une approche similaire à celle de l’installation du client Docker sur Mac existe également sur Windows avec PowerShell OneGet. Il s’agit d’une technologie dont l’objectif est de simplifier considérablement la découverte et l’installation de logiciel sur les machines Windows.
Avec OneGet, il est possible de :
• Gérer une liste de dépôts de logiciels dans lequel les packages logiciels peuvent être recherchés, acquis et installés
• Installer et désinstaller silencieusement des packages d’un ou plusieurs référentiels avec une seule commande PowerShell
OneGet fonctionne avec le référentiel communautaire « Chocolatey » qui recense plus de 1 700 logiciels uniques. La prise en charge de dépôts supplémentaires sera proposée dans des versions ultérieures.
Pour l’utiliser, il suffit d’importer le module OneGet dans PowerShell.

Import-Module -Name OneGet

On peut alors faire usage des commandes OneGet suivantes pour installer le client Docker.

Dans le prochain article nous verrons les multiples solutions proposes pour le provisioning de serveurs Hôte Docker sur la plateforme Azure.

Avec Docker, le Cloud Computing est-il sur le point de franchir un nouveau cap ?

a virtualisation des machines est le fondement du Cloud Computing tel que nous le connaissons aujourd’hui. Pourtant, il semble que les grands acteurs du Cloud public s’intéressent de plus en plus aux mécanismes de virtualisation à base de containers, ainsi qu’aux solutions permettant de les gérer plus les efficacement. Parmi celles-ci, le projet Open Source Docker semble recueillir la plus grande attention.
J’ai récemment eu l’occasion de participer à un projet Azure qui m’a offert l’occasion de me pencher sur le sujet. Voici donc une série d’articles qui je l’espère vous permettra d’accélérer votre découverte de cet environnement.

Docker : les fondamentaux

Virtualisation par les containers LXC

LXC est une technologie de virtualisation que l’on peut mettre en œuvre sur de multiples distributions Linux. Le principe consiste à reconstruire la vue qu’un processus a de son environnement d’exécution (et de lui donner l’illusion qu’il est le seul à s’exécuter sur la machine, avec une arborescence de fichiers limitée par le périmètre du container). Les containers sont isolés mais partagent l’OS et le cas échéant certaines librairies. Il en résulte un déploiement et un redémarrage plus rapide, moins d’overhead, ainsi qu’une grande facilité de migration.

image

Les containers Docker : exécution des applications

A l’origine, Docker se fonde sur les mécanismes de container LXC. Si le container d’application offre de multiples analogies avec le container qui a révolutionné le transfert maritime (capacité à empaqueter tout type d’application et de ses dépendances, exécution sur tout type d’environnement, isolation des dépendances, facilité de déplacement), Docker s’inspire directement  de son homologue portuaire.
Le rôle de Docker est en effet de faciliter le chargement et le déchargement de ces containers et de contribuer à la construction d’un écosystème qui va pouvoir tirer le meilleur parti de ce nouveau mode d’échange. Docker étend le format LXC, afin de permettre d’empaqueter une application et ses dépendances au sein d’un container. La contribution la plus significative de Docker se matérialise donc dans les moyens qu’il met à disposition pour définir comment les containers et leur contenu est défini puis distribué. Grâce à l’automatisation de la manipulation des containers, Docker offre la possibilité de déployer des applications avec des caractéristiques d’isolement similaires à celles d’applications s’exécutant dans des machines virtuelles tout en évitant les contraintes liées au chargement en mémoire du système d’exploitation et de ses services complémentaires.

Un container Docker se présente comme un répertoire contenant les pré-requis pour l’exécution d’une application. Il est constitué d’un système d’exploitation, des fichiers ajoutés par l’utilisateur et des métadonnées. Un container peut être lancé, arrêté, interrogé pour connaitre son statut, supervisé, déplacé, supprimé. Chaque container est isolé des autres containers qui peuvent s’exécuter simultanément sur le même système.
Ces containers sont créés à partir d’images Docker.

Les images Docker : génération des modèles d’applications

Docker offre la possibilité pour les développeurs de créer, personnaliser et composer des images d’application accessibles en lecture seule qui pourront être ultérieurement déployée sur de multiples hôtes Docker. Docker offre les commandes permettant de construire de nouvelles images application préconfigurée (ce qui inclut l’ensemble de ces dépendances logicielles) ou de mettre à jour les images existantes.
Par exemple, Docker permet très simplement de mettre à disposition un modèle d’application Web Node.js offrant des fonctions de realtime grâce à Socket.io et interagissant avec une base MongoDB.


Chaque image commence par une image de base, par exemple, Ubuntu ou plus « avancée » comme nodejs installée sur Ubuntu. Chaque image est ensuite constituée d’une série de couches baptisées « layers ». Docker utilise des regroupement de systèmes de fichiers distincts baptisées « branches » pour combiner ces couches en une seule image donnant une vue cohérente de l’ensemble. Lorsque l’on modifie une image de Docker, par exemple, pour mettre à jour une application vers une nouvelle version, un nouveau « layer » est généré. Ce processus de mise à jour est extrêmement efficace et se traduit par une distribution simple et rapide. En effet, seul ce nouveau « layer » sera distribué lors d’une prochaine mise à jour de l’image, au lieu d’un remplacement intégral de l’image comme le nécessiterait une machine virtuelle.
L’image indique à Docker ce que le container contient, quel processus s’exécute lorsque le container est lancé et une variété d’autres données de configuration. Lors de l’exécution de Docker le container ajoute une couche de lecture / écriture sur le dessus de l’image.

L’image de base fournit l’environnement minimal pour l’OS (système de fichiers, bibliothèques et autres….). Puis les « layers » sont ajoutés pour les packages d’application ou les informations de configuration. Chaque « layer » est identifié de manière unique et stocké sous forme d’une archive « tar » avec le contenu et des métadonnées qui indiquent, entre autres, la liste des « layers » sous-jacents… Lorsqu’une « image » est stockée dans le référentiel, elle reçoit un nom et éventuellement une étiquette (« tag ») afin qu’elle puisse être récupérée sur demande.
Les images de docker sont donc construites à partir d’images de base à l’aide d’un jeu d’instructions (lancer l’installation d’un framework, ajouter un module, ajouter des fichiers à l’application, lancer un processus) permettant de décrire l’image cible, chaque instruction se traduisant par un nouveau « layer » sur cette image. Ces instructions peuvent être exécutées manuellement ou enregistrées dans un fichier Dockerfile, qui sera le point d’entrée de la commande « build » de Docker pour générer l’image finale. Docker impressionne par la facilité avec laquelle il permet de créer un environnement d’exécution pour une application.
Docker permet alors de télécharger ces images vers des référentiels.

Les référentiels Docker : la publication et distribution des images

Les référentiels d’images peuvent être privés ou publics. Ils permettent de stocker les images, de les nommer et de les mettre à disposition pour un téléchargement afin qu’elles puissent être réutilisées. Parce que l’application a été testée dans un container, le développeur est assuré de la présence des prérequis de configuration qui en garantissent l’exécution, indépendamment des autres services qui pourraient cohabiter sur le même hôte.
Le référentiel public, le Docker Hub offre un très large éventail de services et d’images existantes :
• La « registry », qui est un système de stockage pour les images de containers
• Le « public index », qui permet de référencer les images publiques avec un système d’attribution d’étoiles pour le « ranking »
• « Automated builds », qui permet de lier un dépôt de code GitHub ou Bitbucket, et créer automatiquement des images Docker à chaque commit, afin que ces images soient toujours à jour par rapport au code.
Le référentiel Docker Hub est également exposé via une API REST.

Topologie de l’environnement

L’environnement Docker est fondé sur une architecture client-serveur. Il n’y a pas d’interaction directe avec le serveur, toutes les requêtes sont à l’initiative du client. Le client Docker communique avec un service Docker, le « Docker Engine » qui assure la génération et la publication des images ainsi que leur exécution au sein de containers. Les composants correspondants (le client Docker et le démon à l’écoute de ses requêtes) communiquent via des sockets ou via une API REST. Toutes les fonctions de Docker sont donc exposées via cette API, ou via un outil en ligne de commande. Le « Docker Engine »,  peut être installé sur un serveur Linux et le transformer ainsi en hôte Docker.


image
Dans le prochain article nous étudierons les multiples façons de mettre en place cet environnement.

CINQ CONSEILS POUR REDUIRE LA LATENCE DU CLOUD HYBRIDE

Des changements adéquats en matière d’infrastructure et de conception des workloads permettent aux entreprises de minimiser la latence et de doper les performances du Cloud hybride.

Les Clouds hybrides constituent un moyen répandu d’étendre le datacenter local, offrant ainsi à l’entreprise davantage de flexibilité en termes d’administration et d’équilibrage des charges. Les Clouds hybrides permettent d’éclater les charges ou de les migrer vers le Cloud public lorsque des ressources informatiques supplémentaires sont nécessaires, et lorsqu’il s’agit de se prémunir contre les désastres via des architectures redondantes. Mais interconnecter Clouds privés et publics nécessite un réseau. Et les réseaux affichent immanquablement une latence susceptible d’entraver les performances du Cloud hybride.

Voici cinq conseils pour diminuer la latence d’un Cloud hybride et préserver des performances optimales.

1. Proximité

Plus la distance est longue, plus il faut de temps pour la parcourir ; même à la vitesse de la lumière. Aussi, pour diminuer la latence d’un Cloud hybride, l’entreprise doit se connecter à une installation de Cloud public située à proximité géographique du datacenter de son Cloud privé.

Les fournisseurs de Clouds publics de grande envergure autorisent généralement leurs clients à choisir parmi un panel de sites installés dans différentes régions et différents pays. Remarquons que certaines entreprises optent pourun Cloud public distant pour des motifs liés à la reprise après désastre (DR, Disaster Recovery) ou à la continuité métier (BC, Business Continuity). Il est toutefois important pour l’entreprise de trouver un équilibre entre performances et vulnérabilité des sites.

2. Connexions dédiées

Internet consiste en un seul et même réseau partagé par une myriade d’utilisateurs. Autrement dit, le trafic des connexions Internet publiques peut se trouver embouteillé, entraînant alors goulets d’étranglement et accroissements de latence entre Clouds privé et public. Pour éviter cette situation, l’entreprise peut établir des connexions dédiées – ou spécialisées– entre le Cloud public et le Cloud privé.

Un nombre croissant de fournisseurs de Clouds publics proposent des services de connexion directe ; c’est le cas d’Azure ExpressRoute, d’AWS Direct Connect et de Google Direct Peering. Les clients peuvent choisir la bande passante de connexion la mieux adaptée aux exigences du trafic de leur Cloud.

Toutefois, les connexions directes ne sont pas sans inconvénients. Les entreprises doivent payer la connectivité à un opérateur et s’acquitter parallèlement des coûts facturés par le fournisseur de Clouds.

3. Caches de Cloud

La latence d’un Cloud hybride intervient lors du déplacement de quantités massives de données, notamment d’ensembles Big Data, entre sites privés et publics. Par exemple, une charge de travail redondante peut puiser dans un datastore centralisé installé dans le Cloud privé pour sauvegarder des informations dans le Cloud public.

Pourtant, il n’est plus nécessaire de déplacer des données, ni d’y accéder à distance, dès lors qu’elles sont déjà à disposition en local. La mise en cache contribue à éviter la latence d’un Cloud hybride. Pour ce faire, elle permet à des charges de travail de réutiliser des contenus récemment utilisés.

Par exemple, si une charge de travail d’un Cloud public sollicite un fichier de 10 Mo, le premier déplacement de ce fichier est susceptible d’entraîner une certaine latence. Mais une fois ce fichier déplacé et installé dans le cache du Cloud, ces mêmes données sont à nouveau accessibles depuis le cache ; l’accès n’implique alors plus de les transférer à nouveau depuis le Cloud privé.

AWS ElastiCach constitue un exemple de cache de Cloud. Il peut s’utiliser en complément d’un développement qui exploite l’API AWS. Des appliances de mise en cache intelligente, telles que CacheFlow de Blue Coat, permettent de mettre en cache des données et des contenus Web, notamment de la vidéo.

4. Optimiser le trafic

Malgré la mise en place d’une gestion de cache, certains cas de déplacement de données au sein d’un Cloud hybride peuvent entraîner une hausse du trafic réseau. Si une latence intervient à chaque déplacement d’un paquet sur Internet, les entreprises peuvent néanmoins atténuer la latence cumulée de ces paquets en diminuant leur nombre. Les équipements d’optimisation du trafic ou des réseaux étendus (WAN, Wide Area Network) contribuent à ce résultat.

Selon le type de données, ces équipements font appel à des technologies d’accélération des protocoles, de compression des données et de gestion de la qualité de service. A titre d’exemple, la compression de données intègre davantage de données à chaque paquet, diminuant ainsi le total des paquets nécessaires au déplacement d’un fichier.

Il existe de nombreux équipements d’optimisation du trafic, notamment les applications Riverbed SteelHead et les appliances Mach 5 de Blue Coat par exemple.

5. Optimiser les charges de travail

Les développeurs ne doivent pas négliger l’importance de la conception des charges de travail, ainsi que son influence sur la latence du réseau. Les workloads conçues pour exploiter des jeux de données volumineuses, ou pour gérer des données stratégiques et sensibles peuvent se révéler particulièrement vulnérables en termes de latence réseau.

Refondre la conception ou l’architecture de ces charges en vue de mieux les adapter à des environnements de Cloud hybride permet d’atténuer certains problèmes de latence.

Par exemple, plutôt que de concevoir une charge de travail de sorte qu’elle sollicite un jeu de données volumineuses pour effectuer une opération, mieux vaut qu’elle appelle uniquement un sous-ensemble de ces données pour une tâche spécifique.

Lorsqu’il s’agit d’optimiser une application pour le Cloud hybride, aucune méthode n’est parfaite. En revanche, les développeurs doivent prendre le temps d’évaluer les changements conceptuels susceptibles d’y contribuer.

 

 

 

 

 

BIG DATA, VOUS NOUS EN AVEZ DEMANDÉ PLUS !

Datamart, data marketing, data warehouse, DMP, data intelligence, real time buidding… On vous en dit plus ! Le monde du Big Data est toujours en mutation, dans cet article nous appréhenderons de plus près les nouvelles notions qui ont vu le jour à travers ce phénomène, et ce pour mieux le comprendre.

Datawarehouse et Datamart

Tout d’abord, nous allons aborder avec vous les notions de Data warehouse et Datamart, qui sont deux notions de base dans le monde de la grosse donnée et qui vont plutôt de paires. Le terme data warehouse désigne littéralement en français « entrepôt de données » (warehouse = entrepôt en anglais) ou alors communément appelé « base de données décisionnelle » pour l’entreprise. Il représente une base de données qui sert à rassembler, stocker et classer les données numériques. Aussi, le data warehouse est mis à jour. Vous l’aurez compris, le data warehouse sert de base de données décisionnelle à l’entreprise, qui en y regroupant toutes les informations qu’elle possède de manière ordonnée, elle se constitue une sorte de référentiel qui lui permet de prendre de meilleures décisions. Logique. Ceci, comme nous l’avons vu dans l’article précèdent, rentre dans le cadre de l’optimisation des informations et des actions. En effet, à partir de ces données, l’outil fournira des statistiques et rapports utiles et pertinents.

Sans titre

Comme représenté sur le schéma ci-dessus, l’origine des données contenues dans le data warehouse est diverse étant donné que les applications de l’entreprise sont multiples, telles que le CRM ou l’ERP. Le but y est donc de consolider toutes ces informations ensemble de manière cohérente. Le créateur du concept de Data Warehouse est Bill Inmon, et le définit comme « une collection de données thématiques, intégrées, non volatiles et historiées pour la prise de décisions. »

On confond souvent data warehouse et datamart, car le termeDatamart, -littéralement magasin de données en français- désigne un sous-ensemble du data warehouse contenant les données ciblées du data warehouse pour un secteur particulier de l’entreprise. Un datamart peut par exemple contenir des données concernant un département, un service ou une gamme de produits par exemple. On parle de DataMart Marketing, DataMart Commercial … Et ces différents datamarts constituent le data warehouse.

Sans titre2

Ces deux notions servent donc à l’informatique décisionnelle et le pilotage de l’activité de l’entreprise.

Nouvelles activités liées au management de données

Pour commencer, le Data Management Plateforme est en quelque sorte un prise de conscience des données et du Big data par les entreprises. Il s’agit de collecter tout type de données autour d’une personne (client) afin de proposer une offre de produit ou service personnalisé. Cela se résume à capitaliser les informations collectées en ligne ou non, sur le client. Ces données sont la plupart du temps analysées afin de déterminer le profil de l’utilisateur. Ensuite, elles sont classées selon différents critères établis par l’entreprise, et peuvent être croisées avec d’autres bases de données afin d’obtenir des informations plus fines. De plus, une DMP, de par sa connaissance d’une personne –i.e. ses informations personnelles et ses goûts-peut atteindre une autre personne qui lui ressemble par l’analyse de cookie. Une autre personne fortement susceptible de devenir cliente donc. La DMP permettra également à une entreprise de suivre les performances de ses campagnes. Un outil crucial, le projet big data est mis en place dans près de 64% des entreprises interrogées en 2014 par le cabinet de conseil et de recherche américain Gartner. Comme nous l’avons étayé dans l’article précédent, la capitalisation des données est un enjeu important pour les entreprises qui optimisent ainsi leur travail de prospection, de personnalisation et de fidélisation.

Ceci nous mène à aborder les nouveaux secteurs métiers liés au Big data.

Le terme data marketing témoigne de la prise en compte par les entreprises de l’importance de la gestion des données collectées sur internet. Apparu dans les années 2000, ce terme est aujourd’hui courant et regroupe des techniques de marketing destinées à capitaliser les informations contenues dans la base de données et à alimenter la base de données. Les progrès ont, depuis, atteint un niveau tel que les entreprises sont aujourd’hui capables de prédire les comportements des consommateurs. Comme ce fut le cas lors de la campagne présidentielle américaine en 2012, l’analyse de données des électeurs et le ciblage effectué par l’équipe de campagne de Barack Obama est un exemple marquant.

Sans titre1

Pour ne citer que lui, le Real Time Bidding provient du data marketing. Le terme désigne « enchère en temps réel » en français. Le RTB est une technologie utilisée dans la publicité en ligne, qui vient bousculer les règles des espaces publicitaires sur internet. Le principe est d’allouer des espaces publicitaires en temps réel à la suite d’enchères organisées par les annonceurs. Ces espaces sont alloués dans le cadre d’ad-exchange en fonction de la taille de la bannière, du contexte de la page web, et en fonction des données relative à l’internaute en ligne. Concrètement, le RTB permet de simplifier le processus d’achat d’espaces de publicités et d’optimiser les investissements publicitaires. Preuve que cette tendance est efficace : les budgets des annonceurs européens dédiés aux campagnes publicitaires sont en hausse 92% en 2014 d’après le site Ad-Exchange.fr.

En espérant vous avoir éclairé sur certains points, nous serons ravis de lire vos retours dans les commentaires.

!

HTTPS ET SSL/TLS

Transport Layer Security (TLS), anciennement nommé Secure Sockets Layer (SSL), est un protocole de sécurisation des échanges sur Internet, développé à l’origine par Netscape (SSL version 2 et SSL version 3). Il a été renommé en Transport Layer Security (TLS) par l’IETF suite au rachat du brevet de Netscape par l’IETF en 2001.

  • FTPS est une extension de FTP (File Transfer Protocol) utilisant SSL.
  • HTTPS Finder est une extension (à l’état expérimental) pour Firefox qui permet de détecter automatiquement les connections HTTPS. Elle permet de travailler en collaboration avec l’extension HTTPS Everywhere.
  • Naviguer en HTTPS ne suffit pas. Si votre VPN n’est pas accepté par un site internet (car votre adresse IP est refusé, ce qui peut arriver si d’autres utilisateurs du VPN ont étés repérés comme étant spammeurs par exemple), même en HTTPS cela ne changera rien (car votre connection est crypté d’abord par le VPN ou SSH, puis est en clair entre le VPN ou SSH et le site web consulté, ou en crypté si vous avez HTTPS, mais c’est l’adresse du VPN ou SSH qui apparait et non votre adresse IP initiale bien sur).IPFuck/IPFlood peut vous permettre de changer d’adresse IP chaque seconde automatiquement (dans votre navigateur internet uniquement).
  • Nginx – Rediriger les requêtes en HTTP vers HTTPS: Si vous utilisez Nginx en reverse proxy et que vous cherchez la méthode pour rediriger de manière permanente (en 301) tout le trafic arrivant sur le HTTP vers du HTTPS pour apporter confort, sécurité et volupté à vos visiteurs, voici comment faire…

Divers

  • SPDY (prononcé « Speedy » pour rapide en anglais) est un protocole réseau expérimental — fonctionnant sur la couche application — créé pour transporter du contenu Web. SPDY est une proposition, conçue par Google, visant à augmenter les capacités du protocole HTTP sans toutefois remplacer ce dernier avec un chiffrement intégré.
  • HTTPCS est un scanner de vulnérabilité web offensive, capable de détecter tout types de vulnérabilité dans une application web, analyser les risques et proposer les contre-mesures. HTTPCS est une solution hébergée (SaaS) qui scanne de l’extérieur comme les personnes malveillantes (Hackers).
  • Voyez ce qu’est le GpgAuth qui est un système libre d’authentification forte (plus forte que SSL).

LA MÉTHODE AGILE – OPTIMISATION DE LA RELATION « CLIENT / FOURNISSEUR »

Placer le client au centre des démarches et des personnes. C’est l’objectif des méthodes de développement dites « Agiles ». De quoi s’agit-il ? Et surtout quels en sont les avantages et y a-t-il des inconvénients ou des risques d’échecs ?

La méthode Agile est aujourd’hui très répandue dans les sociétés de services ou les agences web. J’ai souvent entendu qu’un des avantages de cette méthode était qu’on pouvait prendre ce qu’on voulait dedans, mais contrairement aux idées reçues, cette méthode ne portera ses fruits que si elle est respectée à la lettre. En effet, chaque étape est importante. Nous verrons ainsi les nombreux avantages ainsi que les inconvénients ou risques éventuels à utiliser cette méthode.
Principes de fonctionnement des méthodes « Agile »
Le principe de base des méthodes « Agile » est qu’il est contre-productif qu’avant de développer un produit, il faille le planifier et en spécifier les moindres détails. En effet, prévoir tous les aspects de la production entraîne dans la plupart des cas frustrations et pertes de temps car les aléas surviennent fréquemment. C’est cette approche prédictive et séquentielle de type waterfall ou cycle en V que les tenants des méthodes « Agile » veulent casser. Ainsi, au lieu de fixer les objectifs lointains, le mieux serait de procéder par étapes c’est-à-dire fixer des objectifs à court terme et commencer le développement sans perdre de temps. Chaque fois que cet objectif est atteint, on passe au prochain et ainsi de suite jusqu’à atteindre le but ultime. Au niveau d’un développement de logiciel, c’est le client qui transmet à l’équipe de développeurs sa vision du produit avec la liste des fonctionnalités qu’aurait ce produit. Il communique ainsi directement avec l’équipe et ensemble ils estiment le coût de chaque fonctionnalité pour aboutir à une idée approximative du budget final. De ce fait, on raisonne plus « produit » que « projet », d’où l’utilisation du terme « gestion de produit » au lieu de « gestion de projet ».
L’Agile manifesto 
Ces méthodes « Agile » se sont beaucoup développées et on a pu en recenser une dizaine de variantes jusqu’au début des années 2000. Conscientes qu’une certaine uniformisation était devenue nécessaire, 17 grandes figures du développement logiciel s’étaient réunies aux Etats-Unis en 2001 pour déterminer les critères communs et les principes fondamentaux de ce qui allait devenir un « Manifeste Agile ». D’après ce manifesto, les méthodes « Agile » demandent une plus grande implication du client et permettent une meilleure réactivité des développeurs face à ses demandes. Ce manifeste prône 4 valeurs fondamentales inhérentes aux méthodes « Agile » : l’équipe, l’application, la collaboration et l’acceptation du changement. De ces valeurs découlent 12 principes généraux qui se basent essentiellement sur une relation privilégiée entre le client et les développeurs. La priorité est ainsi donnée à la satisfaction du client et pour y arriver, une implication totale de l’équipe est requise. Cette équipe doit être capable de réagir très vite face aux éventuels changements requis par le client ou aux modifications de la méthode de travail face à des obstacles imprévus. Elle doit également être capable de se remettre en cause et de rechercher perpétuellement à évoluer.
La conception d’un produit « Agile »
La première étape consiste à effectuer une première planification de l’itération ou Sprint dans le jargon des développeurs. Cette réunion fera ressortir les éléments prioritaires de la liste des exigences fonctionnelles du produit. Chaque exigence représente une user storie (US) ou « histoire utilisateur ». Une US doit être rédigée dans un bon français et décrit e fonctionnement ainsi que le parcours de l’utilisateur de la fonctionnalité. Elle doit également contenir les cas de tests ainsi que les critères de validation de la fonctionnalité développée.
En accord avec le client, aussi appelé Product Owner, les premières livraisons devraient être effectuées à la fin de cette itération (une itération à une durée d’environ 2 à 3 semaines suivant le nombre d’US présentent dans le backlog). Le backlog est l’ensemble des US à développer durant l’itération en cours.
Une autre réunion appelée Revue de Sprint est organisée à la fin de chaque Sprint durant laquelle les développeurs présentent au client les fonctionnalités développées. Ce dernier pourra ainsi tout de suite donner son feedback, ce qui présente l’avantage de gagner beaucoup de temps et d’ajuster les fonctionnalités ou les méthodes de travail le cas échéant.
Vient ensuite une rétrospective de Sprint qui permet à tous les acteurs d’améliorer des choses et de s’améliorer également. Une autre particularité de la méthode « Agile » est la réalisation de mêlées quotidiennes qui permettent à l’équipe de développeurs de synchroniser leur travail. Appelée aussi Stand Up meeting, cette réunion qui ne dure pas plus de 15 minutes permet à chacun de déterminer ce qu’ils ont réalisé depuis la dernière mêlée, de ce qu’ils auront à terminer avant la prochaine Stand Up meeting et d’identifier les obstacles qui pourraient les bloquer. En effet, les trois questions « phares » du scrum master sont :
  1. Qu’as tu fais hier ?
  2. Que vas tu faire aujourd’hui ?
  3. As tu des points bloquants ?
Quelques  outils d’aide à la gestion d’une équipe « Agile »
De nombreux outils d’aide à la gestion d’une équipe « Agile » ont fait leur apparition ces dernières années. On peut en citer pêle-mêle Agilefant, IceScrum, Agilo, eXPlainPMT ou encore XPlanner. D’autres sont apparus dernièrement comme le JIRA Agile qui a l’avantage d’être facilement utilisable même pour les débutants. Il permet d’élaborer des tableaux de tâches, de créer et d’estimer les user stories (US), d’identifier l’engagement et la vélocité de l’équipe ou encore de créer divers rapports sur l’état d’avancement des projets. En outre, un outil comme PMTool offre un large choix de rapports dans une interface simple mais très complète. Ainsi, les développeurs tout comme les chefs de projet (Scrum master) dispose d’une interface simple pour saisir leur feuille de temps et rendre compte de leurs activités. Un tableau de bord personnalisable est également disponible pour permettre à l’utilisateur d’avoir sous ses yeux les principaux indicateurs pour le suivi de son projet/développement tout en prenant en compte l’itération en cours. Les questions/incidents pourront enfin être gérés de manière très aisé car cette action est centralisée et se fait en un seul clic grâce à un menu très discret qui s’affiche partout (quel que soit la rubrique en cours de consultation).
Conclusion
 
Avantages
  • Méthode fun !
  • Excellente réactivité vis-à-vis du client (product owners => PO)
  • Qualité accrue du fait de la présence des PO
  • Favorise et facilite la communication avec les autres membres de l’équipe
  • Développements hors sujet très peu probable
Inconvénients
  • Changement radical de gestion de projet/produit : fort impact sur tous les intervenants
  • Dans les grosses sociétés : collaboration/synchronisation difficile avec les autres équipes qui n’utilisent pas cette méthode. (délais différents donc réactivité plus longues)
  • Contraignante, surtout au début le temps que tout le monde s’y habitue.
  • Bonne volonté et bonne entente de tous les participants impératif.
  • Gros travail de rédaction pour les PO => création des « users stories » + cas de tests + critères de validation de l’US
  • Les développeurs doivent accepter le changement (revenir sur du code pour le modifier voir le supprimer).
  • Les développeurs doivent être autonomes (une équipe « Agile » doit être auto gérée)
  • La sociabilité doit être une qualité de tous les intervenants (communication)

AVEC EVO SDDC, VMWARE POUSSE L’HYPERCONVERGENCE DANS LES DATACENTERS

La conférence VMworld 2015 de San Francisco a fermé ses portes il y a une semaine sur de multiples annonces couvrant tout à la fois la gestion unifiée du cloud hybride, l’adoption des applications cloud natives et la virtualisation du poste de travail avec, notamment le projet A2 basé sur AirWatch et le projet Enzo pour construire automatiquement les espace de travail virtuels.

Quelques jours après l’édition américaine de VMworld 2015, la filiale française de VMware est revenue hier sur les principales annonces. Dans un mois, l’édition européenne de la conférence prendra le relais avec d’autres évolutions. Près de 10 000 personnes sont attendues à Barcelone, du 12 au 15 octobre, a indiqué hier soir, lors d’un point presse à Paris, Sylvain Cazard, directeur général pour la France depuis janvier 2015, entouré de Magdeleine Bourgoin, directrice technique, et Stéphane Croix, responsable avant-vente. Il a rapidement résumé l’intervention de leur CEO, Pat Gelsinger, sur VMworld US, menée en 5 points-clés : l’asymétrie entre start-ups et entreprises installées qui doivent à tout prix se réinventer, l’évolution rapide du cloud hybride unifié, la nécessité de construire la sécurité au sein des infrastructures, l’accélération de l’automatisation et de la proactivité (avec l’analyse des données en temps réel) et, enfin, l’obligation pour les entreprises de prendre des risques. Allant au-delà de la prédiction de l’Université de Washington qui estime que 40% des 500 plus grandes entreprises du Nasdaq auront disparu dans 10 ans, Pat Gelsinger prédit que, au même horizon, la moitié des 100 premières firmes technologiques n’existeront plus. « Derrière tout cela, il y a forcément des enjeux majeurs en termes d’infrastructure », a pointé le DG France.

AdTech Ad

Suite EVO SDDC, une offre hyper-convergée

L’un des thèmes importants de VMworld 2015 San Francisco a porté sur la gestion unifiée des clouds et la virtualisation du datacenter. Magdeleine Bourgoin, directrice technique de la filiale, est revenue sur ces sujets. Selon une étude de Research & Market, le marché du SDDC (software defined datacenter) aura pesé 22 Md$ en 2015 et atteindra 77 Md$ dans 5 ans. « Pour les entreprises, la différentiation vient clairement des applications et pas des infrastructures, ce qui explique le succès des offres convergées. Là, nous allons plus loin avec des offres hyper-convergées en annonçantEVO SDDC (ex EVO:RACK), une offre tout en un». Cette suite, qui sera disponible via des offres intégrées de partenaires (VCE, Dell et QCT), accélérera le déploiement et la gestion d’une infrastructure virtuelle au sein du datacenter. « Cela va jusqu’à l’API pour gérer le firmware des fournisseurs avec lesquels nous faisons la solution », a précisé la directrice technique en ajoutant que le SDDC (software defined datacenter) n’était plus seulement un concept VMware mais un enjeu de l’industrie.

Au sein de l’offre de VMware, les services de cloud public vCloud Air existent depuis deux ans.

Magdeleine Bourgoin a également dit un mot sur vCloud Air, l’offre de cloud public de VMware, opérée par l’éditeur ou par ses partenaires avec, pour l’Europe, une présence en Angleterre et en Europe. « La demande porte sur trois cas d’utilisation : la protection de données ou de sites, l’usage à la demande et le développement d’applications, notamment mobiles ». Le service de disaster recovery de vCloud Air a été amélioré avec du paiement à l’usage. La directrice technique a rappelé que des partenaires avaient développé des offres de cloud managées sur les technologies VMware. Elle a ensuite évoqué la démonstration sur VMworld 2015 du déplacement d’une machine virtuelle entre deux clouds. « Ce que nous faisions intersite et entre sites, nous savons le faire maintenant entre deux clouds ». Outre une synchronisation en mode miroir entre cloud privé et public, M. Bourgoin a donné l’exemple d’une application développée dans le cloud public avec des données situées en cloud privé. « Cela peut aussi permettre d’éviter des phénomènes de shadow IT ».

Ouvrir à VMware le champ des tablettes Microsoft

Stéphane Croix, responsable avant-vente chez VMware France, a de son côté fait un point sur la mise à disposition des applications mobiles insistant sur une préversion de produit fortement remarquée sur VMworld US. Il s’agit du projet A2 (ou A carré), présenté sur scène par Sanjay Poonen, DG de l’activité End-user computing, en tandem avec un cadre de Microsoft, Jim Alkove, responsable de l’activité Windows Enterprise & Security. Cette solution basée sur AirWatch est partie prenante de la virtualisation du poste de travail. Elle vise à mettre rapidement à disposition les applications sur Windows 10. VMware et Microsoft y travaillent ensemble dans « une approche conjointe du marché où chacun des deux a à y gagner », a expliqué l’équipe française. « Microsoft a beaucoup travaillé sur la manière de délivrer les applications », a précisé Stéphane Croix. Cela facilitera également le support des tablettes Windows dans le MDM de VMware.

Autre nouveauté sur la virtualisation du poste de travail, VMware Identity Manager Advanced permet à l’utilisateur de s’authentifier une fois pour toutes sur les applications internes et externes à l’entreprise. Une annonce a également porté sur Horizon, notamment autour de la 3D, enjeu dans le monde du VDI, avec une intégration encore plus forte du VSAN. Enfin, toujours dans le VDI, VMworld a reparlé du projet Enzo sur lequel des vidéos circulent depuis le printemps. Le logiciel, pour l’instant en bêta « early access », permet d’automatiser la mise en place de l’ensemble des briques de l’environnement utilisateur, que ce soit en mode on premise ou SaaS. « La bêta en mode privée va arriver dans quelques semaines », a précisé Stéphane Croix.

Le responsable avant-vente a également repris les annonces faites autour de vSphere Integrated Containers et des applications cloud natives que permettra la plateforme Photon (cf « VMware gère les containers »), prévue en bêta privée d’ici la fin de l’année.

Aujourd’hui, sur les marchés matures comme la France, la part des solutions de pure virtualisation ne représente que 35 à 40% du chiffre d’affaires pour VMware, a par ailleurs confirmé Sylvain Cazard. Pour l’éditeur, l’enjeu est clairement au-delà de cela aujourd’hui, dans les services, la mobilité, le cloud et l’environnement du poste de travail.

VMWARE GÈRE LES CONTAINERS ET FAIT MIGRER LES VM ENTRE DATACENTERS

A San Francisco cette semaine, VMware a présenté deux préversions de logiciels centrées sur la gestion de conteneurs, vSphere Integrated Container et Photon Platform, dont le moteur a été versé dans l’open source en avril dernier. Le spécialiste de la virtualisation a aussi montré comment migrer une machine virtuelle en activité d’un datacenter à l’autre. Une technologie également en préversion.

Après une période de déni, VMware a fini par rallier l’engouement pour la mise en containers, déclenché par la popularité de la technologie Docker. Au cours des derniers mois, il a montré qu’il avançait lui aussi dans cette direction et il en a présenté les premières concrétisations sur sa conférence VMworld, qui rassemble cette semaine plus de 23 000 participants à San Francisco (du 30 août au 3 septembre). A cette occasion, les équipes dirigeantes ont également démontré des technologies de virtualisation destinées aux prochains datacenters. Carl Eschenbach, président et COO de VMware, a indiqué parmi les objectifs clés de l’éditeur de faire fonctionner une véritable plateforme de cloud hybride. En particulier, au cours d’une démo, ses équipes ont montré comment il était possible de déplacer une machine virtuelle en activité d’un datacenter installé en Californie vers un autre site situé en Virginie.

AdTech AdCette capacité est une évolution de la technologie vMotion disponible depuis plusieurs années et qui permet de déplacer une VM en marche d’un endroit à l’autre au sein d’un datacenter. On peut maintenant le faire d’un site à l’autre, ce qui n’était pas possible jusque-là. « C’est toujours le vMotion que l’on connaît, mais nous pouvons maintenant accélérer, compresser et migrer des VM en live d’un emplacement et d’un domaine à un autre emplacement et domaine », a pointé Raghu Raghuram, vice-président exécutif, responsable de l’infrastructure cloud.

Migrer des VM entre clouds privés et clouds publics

Habituellement, migrer une VM « live » du réseau d’un datacenter à un autre était impossible, compte-tenu du fait que chaque réseau opère sous un sous-réseau différent. Pour y parvenir, VMware s’est appuyé sur son logiciel de virtualisation de réseau NSX qui permet à une VM de retenir son adresse réseau même si elle est déplacée vers un autre réseau physique. Une telle capacité, présentée en préversion, permettra aux entreprises de relier plus facilement leurs réseaux clouds internes avec ceux des clouds publics, ce qui pourra être mis à profit dans différentes situations : la reprise après sinistre, le développement d’applications, la gestion de pics d’activité sur les applications.

Du côté de la gestion de conteneurs, VMware a présenté ses avancées sous la forme de deux préversions. Au-delà de sa pile complète de logiciels pour virtualiser le datacenter, l’éditeur s’est vu contraint de prendre en compte l’intérêt croissant pour cette technologie. « Les conteneurs reviennent sans cesse dans les discussions », confirme Ray O’Farrell, directeur technique et responsable du développement de VMware. Ils sont plus légers que les machines virtuelles générées par les solutions de virtualisation de VMware parce qu’au lieu d’inclure un système d’exploitation complet, ils utilisent des capacités de l’OS hôte. Ils peuvent ainsi démarrer plus vite et être déplacées plus facilement.

Les conteneurs, bientôt citoyens de 1èreclasse pour vSphere

Typiquement, la plateforme de virtualisation de serveurs vSphere ne les reconnaît pas, ce qui complique la tâche des administrateurs et introduit des risques au niveau de la sécurité. « On peut améliorer la gestion des conteneurs dans notre actuelle infrastructure », explique Ray O’Farrell. Pour y parvenir, VMware a développé vSphere Integrated Containers, disponible en préversion, et qui permet au logiciel de gestion de vSphere de travailler avec les conteneurs. « Ils seront des citoyens de 1ère classe sur vSphere. Vous pouvez gérer côte à côte des applications traditionnelles à l’intérieur de machines virtuelles et des applications de prochaine génération dans des conteneurs, avec fiabilité, sur la même plateforme », assurer Kit Colbert, CTO responsable des apps cloud natives.

Pour les supporter, VMware a remanié les machines virtuelles, transférant certaines de leurs fonctionnalités, comme le moteur de conteneurs, vers le logiciel vSphere lui-même, avec pour effet de faire fonctionner vSphere Integrated Container comme un conteneur, tout en conservant les caractéristiques de gestion d’une VM. « Le conteneur est la VM et la VM est le conteneur, et cela nous apporte toutes ces intéressantes capacités de gestion », conclut Kit Colbert.

Photo Platform en préversion

L’éditeur a également sorti une préversion du logiciel Photon Platform conçu pour gérer d’importantes colonies de containers. Le produit, annoncé en avril dernier, est destiné aux entreprises qui développent des applications cloud natives. Il fournit une API et peut fonctionner avec différents outils d’orchestration de conteneurs tels que Kubernetes et Mesophere. Le moteur principal de Photon a été versé il y a quelques mois dans l’Open Source.

DNS ANYCAST

Dans un article récemment publié, Paul Vixie, un des auteurs et architecte de BIND, l’un des serveurs de noms les plus répandus, explique pourquoi les serveurs DNS devraient utiliser anycast afin d’obtenir des réponses plus rapide tout en augmentant la fiabilité. L’argument principal développé contre l’unicast est l’existence de résolveurs qui ne sont pas assez malins pour choisir le meilleur serveur de noms à interroger, ce qui conduit certaines requêtes à faire le tour de la planète et donc une latence importante et incompressible.

Unicast & anycast

La plupart des adresses IP que l’on manipule sont des adressesunicast, c’est à dire des adresses qui désigne un unique destinataire. À chaque fois que vous envoyez un paquet vers une adresse de ce type, celui-ci sera routé vers un unique destinataire. Il existe aussi des adressesmulticast (qui comprennent les adresses broadcast) pour lesquelles plusieurs destinataires reçoivent une copie du paquet.

Les adresses anycast permettent d’envoyer le paquet à un destinataire parmi plusieurs. Il n’y a donc pas de copie, mais pas de destinataire unique. Idéalement, le paquet parvient au destinataire le plus proche.

Il n’existe pas de méthode universelle pour déterminer si une adresse IPest une adresse unicast ou anycast. Par exemple,78.47.78.132 est une adresse unicast tandis que 192.5.5.241 est une adresse anycast.

L’ISC, qui maintient BIND, est aussi l’opérateur du serveur racine « F », l’un des 13 serveurs racines du DNS. Celui-ci peut être interrogé en utilisant l’IP 192.5.5.241 ou 2001:500:2f::f qui sont des adresses anycast. L’ISC a publié un document expliquant le principe derrière les DNSanycast. Plusieurs nœuds à travers le monde annoncent le même réseau en utilisant BGP. Quand un routeur a besoin d’envoyer une requête sur l’IP anycast, il aura plusieurs choix possible dans sa table de routageBGP. Il sélectionne habituellement le chemin le plus court.

Certains nœuds peuvent choisir de limiter l’annonce du réseau anycast afin de ne servir qu’un nombre réduit de clients (les siens). On les appelle les nœuds locaux (par opposition aux nœuds globaux).

Lab

Essayons de mettre en place un serveur DNS anycast dans un petit lab. Nous allons utiliser uniquement un réseau IPv6. Notre serveurDNS sera constitué de deux nœuds globaux, G1 et G2, et d’un nœud local, L1. Nous allons construire pour l’occassion une sorte de mini-Internet:

Lab DNS anycast

Schéma du lab DNS anycast

Mise en place

Nous allons utiliser des machines virtuelles UML pour chaque nœud. Pour plus de détails, lisez mon article précédent sur les labs de test avec User Mode Linux. Pour récupérer et mettre en place ce lab, c’est très simple :

$ git clone https://vincentbernat@github.com/vincentbernat/network-lab.git
$ cd network-lab/lab-anycast-dns
$ ./setup

Pour que le lab fonctionne, il faut installer les dépendances réclamées par le script sur votre système. Ce script a été testé sur une Debian Sid. Si certaines dépendances n’existent pas pour votre distribution, si elles ne se comportent pas comme sous Debian ou encore si vous ne voulez pas les installer sur votre système, une autre solution est d’utiliserdebootstrap pour construire un système utilisable dans le cadre de ce lab :

$ sudo debootstrap sid ./sid-chroot http://ftp.debian.org/debian/
[...]
$ sudo chroot ./sid-chroot /bin/bash
# apt-get install iproute zsh aufs-tools
[...]
# apt-get install bird6
[...]
# exit
$ sudo mkdir -p ./sid-chroot/$HOME
$ sudo chown $(whoami) ./sid-chroot/$HOME
$ ROOT=./sid-chroot ./setup

Le lab comprend beaucoup de machines UML. Chacune d’entre elles dispose de 64 Mo. Elles n’utilisent normalement pas réellement cette mémoire mais en raison du mécanisme de cache, il faut s’attendre à une utilisation proche des 64 Mo. Il faut donc un peu moins de 2 GO de mémoire pour faire tourner le lab. Chaque machine crée de plus un fichier représentant sa mémoire sur le disque. Il faut donc également 2 Go de libre dans /tmp.

Les routeurs ont été nommés selon le numéro de leur AS. Le routeur de l’AS 64652 est donc 64652. Paris, NewYork et Tokyo sont des exceptions.

Nous n’utilisons qu’un seul switch mais nous allons exploiter desVLANpour créer un réseau L2 pour chaque lien représenté sur le schéma. Chacun de ces réseaux disposera également de son propre réseau L3. Ces réseaux d’interconnexion sont préfixés par2001:db8:ffff:. Les AS qui se trouvent en feuille disposent en plus de leur propre réseau L3 de la forme 2001:db8:X::/48X est le numéro de l’AS (en décimal) moins 60000. Jetez un œil à /etc/hostspour obtenir les adresses IP de tout le monde une fois le lab lancé.

Routage

L’AS 64600 est une sorte de fournisseur de transit Tier-1 (commeLevel 3 Communications). Il dispose de trois points de présence (PoP): Paris, New York et Tokyo. L’AS 64650 est un fournisseur de transit européen, l’AS 64640 est un fournisseur de transit asiatique et les AS 64610, 64620 et 64630 sont des fournisseurs de transit nord-américains qui s’échangent du peering. Les autres AS sont des fournisseurs d’accès à Internet.

Ce n’est pas vraiment une image fidèle de ce à quoi Internet ressemble réellement mais cette modélisation permet de nous abstraire de pas mal de complications avec BGP. En tout point du réseau, le meilleur chemin d’un nœud à un autre est toujours le chemin le plus court du point de vue de BGP. Chaque routeur BGPne disposera que d’une configuration basique. Paris, New York et Tokyo faisant partie du même AS, ils parleront iBGP entre eux. La topologie en maille n’est là que pour permettre l’utilisation de iBGP : cela n’apporte pas de redondance étant donné qu’une route iBGP ne peut pas être redistribuée dans iBGP. Il faudrait utilier un IGP à l’intérieur de l’AS 64600 si on voulait obtenir en plus de la redondance. Nous n’utilisons pas non plus d’IGP au niveau des ASterminaux : pour des raisons de simplicité, on se contente de redistributer dans BGP les routes directement connectées.

Dans le lab précédent, Quagga avait été utilisé comme démon de routage. Pour changer, ici, ce sera BIRD. Il s’agit d’un démon de routage plus moderne et mieux architecturé. Il est capable de manipuler en interne un nombre arbitraire de tables de routage. Il ne contient cependant pas toutes les fonctionnalités offertes par Quagga. La configuration de BIRDest générée automatiquement depuis le fichier /etc/hosts. Nous n’utilisons qu’une seule table de routage. Celle-ci sera exportée vers le noyau et vers toutes les instances BGP. Certaines routes directement connectées seront importées dans cette table (celles représentant les réseaux des clients) ainsi que toutes les routes en provenance des voisinsBGP. Voici un extrait de la configuration de 64610 :

protocol direct {
   description "Client networks";
   import filter {
     if net ~ [ 2001:db8:4600::/40{40,48} ] then accept;
     reject;
   };
   export none;
}

protocol kernel {
   persist;
   import none;
   export all;
}

protocol bgp {
   description "BGP with peer NewYork";
   local as 64610;
   neighbor 2001:db8:ffff:4600:4610::1 as 64600;
   gateway direct;
   hold time 30;
   export all;
   import all;
}

Nous n’exportons pas les réseaux d’interconnexion entre les routeurs pour garder des tables de routage faciles à lire. Cela signifie que les adresses de ces réseaux ne sont pas routables malgré l’utilisation d’IPpubliques. Voici la table de routage telle que vue par64610 (on utiliserbirdc6 pour se connecter à BIRD) :

bird> show route
2001:db8:4622::/48 via 2001:db8:ffff:4610:4620::2 on eth3 [bgp4 18:52] * (100) [AS64622i]
                   via 2001:db8:ffff:4600:4610::1 on eth0 [bgp1 18:52] (100) [AS64622i]
2001:db8:4621::/48 via 2001:db8:ffff:4610:4620::2 on eth3 [bgp4 18:52] * (100) [AS64621i]
                   via 2001:db8:ffff:4600:4610::1 on eth0 [bgp1 18:52] (100) [AS64621i]
2001:db8:4612::/48 via 2001:db8:ffff:4610:4612::2 on eth2 [bgp3 18:52] * (100) [AS64612i]
2001:db8:4611::/48 via 2001:db8:ffff:4610:4611::2 on eth1 [bgp2 18:52] * (100) [AS64611i]

Comme on peut le remarquer, le routeur connaît plusieurs chemins vers le même réseau mais il ne sélectionne que celui qu’il considère comme le meilleur (basé principalement sur la longueur du chemin en nombre d’AS traversés).

bird> show route 2001:db8:4622::/48 all
2001:db8:4622::/48 via 2001:db8:ffff:4610:4620::2 on eth3 [bgp4 18:52] * (100) [AS64622i]
        Type: BGP unicast univ
        BGP.origin: IGP
        BGP.as_path: 64620 64622
        BGP.next_hop: 2001:db8:ffff:4610:4620::2 fe80::e05f:a3ff:fef2:f4e0
        BGP.local_pref: 100
                   via 2001:db8:ffff:4600:4610::1 on eth0 [bgp1 18:52] (100) [AS64622i]
        Type: BGP unicast univ
        BGP.origin: IGP
        BGP.as_path: 64600 64620 64622
        BGP.next_hop: 2001:db8:ffff:4600:4610::1 fe80::3426:63ff:fe5e:afbd
        BGP.local_pref: 100

Vérifions que tout fonctionne en utilisant traceroute6 depuis C1 :

# traceroute6 G2.lab
traceroute to G2.lab (2001:db8:4612::2:53), 30 hops max, 80 byte packets
 1  64652-eth1.lab (2001:db8:4652::1)  -338.277 ms  -338.449 ms  -338.502 ms
 2  64650-eth2.lab (2001:db8:ffff:4650:4652::1)  -338.324 ms  -338.363 ms  -338.384 ms
 3  Paris-eth2.lab (2001:db8:ffff:4600:4650::1)  -338.191 ms  -338.329 ms  -338.282 ms
 4  NewYork-eth0.lab (2001:db8:ffff:4600:4600:1:0:2)  -338.144 ms  -338.182 ms  -338.235 ms
 5  64610-eth0.lab (2001:db8:ffff:4600:4610::2)  -338.078 ms  -337.958 ms  -337.944 ms
 6  64612-eth0.lab (2001:db8:ffff:4610:4612::2)  -337.778 ms  -338.103 ms  -338.041 ms
 7  G2.lab (2001:db8:4612::2:53)  -338.001 ms  -338.045 ms  -338.080 ms

Cassons le lien entre NewYork et 64610 pour voir ce qui se produit. Ce lien est porté dans le VLAN 10. vde_switch ne permettant pas de casser facilement un lien, on va simplement changer le VLAN de ce lien en prenant le VLAN 4093. Après au plus 30 secondes, la sessionBGP entreNewYork et 64610 est rompue et C1 va utiliser un nouveau chemin :

# traceroute6 G2.lab
traceroute to G2.lab (2001:db8:4612::2:53), 30 hops max, 80 byte packets
 1  64652-eth1.lab (2001:db8:4652::1)  -338.382 ms  -338.499 ms  -338.503 ms
 2  64650-eth2.lab (2001:db8:ffff:4650:4652::1)  -338.284 ms  -338.317 ms  -338.151 ms
 3  Paris-eth2.lab (2001:db8:ffff:4600:4650::1)  -337.954 ms  -338.031 ms  -337.924 ms
 4  NewYork-eth0.lab (2001:db8:ffff:4600:4600:1:0:2)  -337.655 ms  -337.751 ms  -337.844 ms
 5  64620-eth0.lab (2001:db8:ffff:4600:4620::2)  -337.762 ms  -337.507 ms  -337.611 ms
 6  64610-eth3.lab (2001:db8:ffff:4610:4620::1)  -337.531 ms  -338.024 ms  -337.998 ms
 7  64612-eth0.lab (2001:db8:ffff:4610:4612::2)  -337.860 ms  -337.931 ms  -337.992 ms
 8  G2.lab (2001:db8:4612::2:53)  -337.863 ms  -337.768 ms  -337.808 ms

Configuration du serveur DNS anycast

Notre service DNS a trois nœuds. Deux globaux, situés en Europe et en Amérique du Nord, et un local destiné aux clients de l’AS 64620 uniquement. L’adresse IP du service DNS est2001:db8:aaaa::53/48. Nous assignons cette adresse à G1, G2 et L1. L’adresse 2001:db8:aaaa::1/48 est attribuée à 64651, 64612 et64621. La configuration de BIRD est alors modifiée pour que ce réseau soit redistributée dans BGP au même titre que les réseaux classiques :

protocol direct {
   description "Client networks";
   import filter {
     if net ~ [ 2001:db8:4600::/40{40,48} ] then accept;
     if net ~ [ 2001:db8:aaaa::/48 ] then accept;
     reject;
   };
   export none;
}

NSD est utilisé comme serveur de noms. Il s’agit d’un serveur de noms non récursif. Sa configuration est très simple. On s’assure uniquement qu’il n’écoute que sur l’adresse anycast afin d’être certain qu’il réponde sur la bonne adresse. Il sert la zoneexample.com dont le champ TXT est personnalisé pour chaque serveur afin de déterminer quel serveur nous avons interrogé :

#(C1) host -t TXT example.com 2001:db8:aaaa::53
Using domain server:
Name: 2001:db8:aaaa::53
Address: 2001:db8:aaaa::53#53
Aliases:

example.com descriptive text "G1"
#(C5) host -t TXT example.com 2001:db8:aaaa::53
Using domain server:
Name: 2001:db8:aaaa::53
Address: 2001:db8:aaaa::53#53
Aliases:

example.com descriptive text "G2"

Si nous essayons depuis C3, L1 répond alors que nous ne sommes pas clients de l’AS 64620. La façon la plus courante pour régler ceci est de configurer 64621 pour qu’il ajoute une communauté spéciale à la route en question qui indiquera à 64620 qu’il ne faut pas redistribuer cette route :

protocol direct {
   description "Client networks";
   import filter {
     if net ~ [ 2001:db8:4600::/40{40,48} ] then accept;
     if net ~ [ 2001:db8:aaaa::/48 ] then {
          bgp_community.add((65535,65281));
          accept;
     }
     reject;
   };
   export none;
}

La communauté utilisée est connue sous le nom no-export. BIRDsait comment la gérer automatiquement. Nous rencontrons cependant quelques limitations liées à BIRD :

  1. Il faut que 64622 reçoive tout de même cette route (car il est client de l’AS 64620). Pour se faire, on doit normalement construire une confédération BGP pour l’AS 64620. Celle-ci contiendra les AS64621 et 64622. De l’extérieur, cette confédération sera vue comme l’AS 64620. Les routes marquées comme non exportables seront tout de même exportée dans la confédération. BIRD ne supporte pas les confédérations.
  2. BIRD sélectionne d’abord la meilleure route à l’export puis ensuite applique le filtre. Cela signifie que même si 64620 connaît une autre route vers 2001:db8:aaaa::/48, il sélectionnera d’abord la route vers L1, la filtrera car marquée en no-export et n’enverra aucune route vers 64622.

Une autre solution est de configurer BIRD sur 64620 pour ne pas exporter la route en question vers les AS 64600, 64610 et 64630. Il est possible d’utiliser une communauté personnalisée pour marquer la route et de baser le filtre sur cette communauté, mais pour des raisons de simplicité, nous construisons le filtre en testant directement la route.

filter keep_local_dns {
   if net ~ [ 2001:db8:aaaa::/48 ] then reject;
   accept;
}
protocol bgp {
   description "BGP with peer NewYork";
   local as 64620;
   neighbor 2001:db8:ffff:4600:4620::1 as 64600;
   gateway direct;
   hold time 30;
   export filter keep_local_dns;
   import all;
}

Désormais, seul C4 pourra interroger L1. Si l’AS 64621 disparaît du réseau, C4 se rabattra sur G2. C’est un point important à noter : la redondance assurée par anycast se fait au niveau des AS. SiL1fonctionne mal (serveur en panne par exemple), les requêtes seront toujours redirigées vers lui. Il faut ajouter de la redondance à l’intérieur de l’AS ou arrêter d’annoncer la route en cas de panne du serveur.

Au-delà du DNS

Il est possible d’utiliser anycast pour serveurs des requêtes HTTP. C’est quelque chose de beaucoup moins commun car rien ne garantit que tous les paquets d’une connexion TCP seront acheminés vers le même serveur. Cela ne pose pas de problème avce le DNS car on envoie un paquet, on reçoit une réponse et c’est fini. Il existe au moins deux CDNfaisant de l’anycast (MaxCDN etCacheFly).

Sur le papier, mettre en place un serveur HTTP sur une adresse anycast n’est pas différent de la mise en place d’un DNS. Il faut cependant s’assurer que le routage reste stable afin de ne pas changer de serveurHTTP au milieu de la connexion. Il est aussi possible de mélanger unicast et anycast :

  • un serveur DNS anycast renvoie l’adresse unicast d’un serveurHTTPproche, ou
  • un serveur DNS anycast renvoie l’adresse anycast d’un serveurHTTP qui répondra par un redirect vers un serveur unicast proche quand la requête concerne un fichier de taille importante.

DÉSINSTALLER L’APPLICATION “OBTENIR WINDOWS 10” DE WINDOWS 7/8.1

Afin d’inciter les utilisateurs à effectuer la mise à jour gratuite vers Windows 10, Microsoft a installé sur nos ordinateurs l’application “Obtenir Windows 10” qui prend la forme d’une icône dans la barre de notification de Windows 7/8.1. Cette application est très pratique pour les utilisateurs intéressés par la prochaine version de Windows : elle permet en effet de vérifier la compatibilité de son matériel et de ses logiciels avec Windows 10 et d’être alerté dès que celui-ci sera disponible.

Mais vous, vous êtes différent. Oui, vous, vous ne voulez pas de Windows 10 ! Vous résistez et resterez encore et toujours à cet envahisseur venu d’Amérique. Windows 7/8.1 est votre maison et pour rien au monde vous ne souhaitez en changer. Vous garderez Windows 7/8.1 coûte que coûte 😀

Je suis là pour ça mes amis ! Ce tutoriel vous permettra de supprimer définitivement l’application “Obtenir Windows 10” de votre système et pas seulement de la barre de notification.

Soyez prêt, car l’application est assez coriace à désinstaller ! :mrgreen:

Désinstallation de la mise à jour KB3035583

Commençons par supprimer la mise à jourKB3035583 – responsable de l’installation de l’application “Obtenir Windows 10” – qui s’est installée automatiquement via Windows Update. En désinstallant cette mise à jour, l’application “Obtenir Windows 10” sera désinstallée (en partie) de notre PC. Néanmoins, elle est toujours susceptible de revenir puisque Microsoft l’a définie en tant mise à jour importante et non facultative. C’est pourquoi nous irons ensuite empêcher cette mise à jour KB3035583 de se réinstaller automatiquement.

Rendez-vous dans Panneau de configuration >Système et sécurité > Windows Update puis cliquez sur le lien Mises à jour installées dans le volet en bas à gauche.

desinstaller-lapplication-obtenir-windows-10-supprimer-icone-windows-10-mises-a-jour-installees

Recherchez le terme “KB3035583” dans le champ de recherche en haut à droite. Cliquez droit sur Mise à jour pour Microsoft Windows (KB3035583) et sélectionnez Désinstaller.

desinstaller-lapplication-obtenir-windows-10-supprimer-icone-windows-10-supprimer-kb3035583

Voilà, la mise à jour KB3035583 est bien désinstallée. Maintenant, on va faire en sorte qu’elle ne se réinstalle plus automatiquement. C’est en effet une mise à jour automatique qualifiée d’importante par Microsoft. Pour ce faire, revenez sur la page d’accueil de Windows Update et cliquez sur le lien Rechercher les mises à jour.

desinstaller-lapplication-obtenir-windows-10-supprimer-icone-windows-10-rechercher-mises-a-jour

Une fois la recherche terminée, cliquez sur X mises à jour importantes sont disponibles. Cliquez droit surMise à jour pour Windows (KB3035583) et sélectionnez Masquer la mise à jour.

desinstaller-lapplication-obtenir-windows-10-supprimer-icone-windows-10-masquer-kb3035583

Ça y est, la mise à jour KB3035583 ne nous embêtera plus à l’avenir 😀 Si vous souhaitez la réinstaller plus tard, cliquez sur Restaurer les mises à jour masquées sur la page d’accueil de Windows Update et restaurez la mise à jour KB3035583.

Suppression des fichiers et des dossiers GWX

Malgré la suppression de la mise à jour KB3035583, les fichiers et les dossiers de l’application GWX (a.k.a “Get Windows X”,“Obtenir Windows 10” en français) sont toujours présents ! Quelle bande de petits filous chez Microsoft :mrgreen:

Nous allons donc devoir supprimer les dossiers contenant l’exécutable GWX.exe :

  • C:\Windows\System32\GWX
  • C:\Windows\SysWOW64\GWX (seulement pour les versions 64 bits de Windows)

Il n’est pas possible de les supprimer directement car même si vous possédez les droits administrateurs, vous n’êtes pas le propriétaire de ces dossiers. C’est pourquoi, avant de les supprimer, on va d’abord se définir comme propriétaire des dossiers GWX.

Commençons par nous occuper du dossierC:\Windows\System32\GWX.

Cliquez droit sur le dossier et faites Propriétés.

desinstaller-lapplication-obtenir-windows-10-supprimer-icone-windows-10-proprietes-gwx

Cliquez sur le bouton Avancé en bas à droite.

desinstaller-lapplication-obtenir-windows-10-supprimer-icone-windows-10-proprietes-gwx-avance

Vous voyez, c’est actuellement TrustedInstaller le propriétaire du dossier. Cliquez sur Modifier pour le changer.

desinstaller-lapplication-obtenir-windows-10-supprimer-icone-windows-10-modifier-proprietaire-gwx

Entrez votre nom d’utilisateur (attention à bien l’orthographier !) puis cliquez sur le bouton Vérifier les noms. Si Windows trouve l’utilisateur, celui-ci sera souligné et précédé du nom de l’ordinateur. Si vous n’arrivez pas à trouver votre nom d’utilisateur, cliquez sur Avancé, Rechercher puis sélectionnez votre nom d’utilisateur dans la liste qui s’est affichée.

desinstaller-lapplication-obtenir-windows-10-supprimer-icone-windows-10-definir-proprietaire-gwx

Cliquez sur OK, cochez la case Remplacer le propriétaire des sous-conteneurs et des objets puis cliquez une dernière fois sur OK.

desinstaller-lapplication-obtenir-windows-10-supprimer-icone-windows-10-remplacer-proprietaire-gwx

Nous voilà de nouveau sur la fenêtre Propriétés de GWX. Maintenant que nous sommes propriétaires du dossier GMX, on va s’attribuer les droits complets afin de pouvoir le supprimer ! Pour ce faire, cliquez sur Modifier, Ajouter, entrez votre nom utilisateur (comme tout à l’heure) puis cliquez surOK.

Sélectionnez votre nom d’utilisateur dans la zone du haut puis cochez la case Contrôle total sous la colonne Autoriser.

desinstaller-lapplication-obtenir-windows-10-supprimer-icone-windows-10-droits-dossier-gwx

Cliquez sur Appliquer et fermez les différentes boites de dialogue en faisant OK. Maintenant on va (enfin) pouvoir supprimer ce maudit dossier ! 😀Cliquez droit sur ce dernier et faites Supprimer. Normalement, la corbeille devrait être sa nouvelle demeure 😉

Effectuez les mêmes opérations pour le dossierC:\Windows\SysWOW64\GWX (si vous avez une version 64 bits de Windows) et vous aurez mis un terme au processus GWX.exe !

Suppression des tâches planifiées GWX

L’application “Obtenir Windows 10” s’est aussi glissée dans les tâches planifiées ! Je suppose que vous connaissez la sentence…

Oui, au bûcher !

Euh oui c’est à peu près ça 😀 Ouvrez le Planificateur de tâches qui se trouve dans le Panneau de configuration > Système et sécurité > Outils d’administration (ou en entrant taskschd.msc dans la boite de dialogue Exécuter – touches Windows + R).

desinstaller-lapplication-obtenir-windows-10-supprimer-icone-windows-10-ouvrir-planificateur-de-taches

Déroulez la Bibliothèque du Planificateur dans le volet de gauche > Microsoft > Windows > Setup et repérez les dossiers gwx et GWXTriggers. Pour supprimer un dossier, il faut d’abord supprimer les tâches qu’il contient. Malheureusement, en raison d’un problème de droits, on ne va pouvoir supprimer les tâches du dossier GMXTriggers tout de suite.

Commençons par le dossier gmx : supprimez les deux tâches qu’il contient (launchtrayprocess etrefreshgwxconfig) puis supprimez le dossier gmx lui-même (clic droit > Supprimer).

desinstaller-lapplication-obtenir-windows-10-supprimer-icone-windows-10-supprimer-taches-planifiees-gwx

Pour supprimer GWXTriggers, on va devoir s’octroyer propriétaire du dossier et nous attribuer les droits complets (comme nous l’avons fait tout à l’heure).

Ouvrez la boite de dialogue Exécuter (touches Windows + R) et saisissez tasks. Cette action ouvre le dossier C:\Windows\System32\Tasks dans lequel sont stockées toutes les tâches listées dans lePlanificateur de tâches.

Dirigez-vous vers le Microsoft\Windows\Setup et comme nous l’avons fait tout à l’heure pour le dossier C:\Windows\System32\GMX, définissez-vous propriétaire du dossier et octroyez-vous les droits complets. Terminez par supprimer le dossierGWXTriggers.

desinstaller-lapplication-obtenir-windows-10-supprimer-icone-windows-10-supprimer-gwx-triggers

Retournez dans le Planificateur de tâches, rafraichissez la fenêtre (Action > Actualiser) : le dossier GWXTriggers a bien été désintégré ! :mrgreen:

Félicitations ! Ça n’aura pas été de tout repos mais l’application “Obtenir Windows 10” a bien été supprimée définitivement de votre ordinateur :)Vous pouvez maintenant vous programmer une petite soirée en amoureux avec votre Windows 7/8.1 chéri, vous l’avez bien mérité