Il y a quelques jours, les derniers blocs d'adresses IP v4 ont été attribués. Avant de paniquer sur la fin d'internet, essayons d'y voir plus clair.
Afin de communiquer sur un réseau, les ordinateurs et logiciels utilisent des protocoles et des normes, ceux-ci vont de la forme que doit avoir le connecteur de la carte réseau à la fréquence des ondes Wi-Fi en passant par la taille d'une requête et la façon d'envoyer des données.
Parmi ces protocoles de communication, l'un des plus utilisé est le protocole IP (pour « Internet Protocol »), celui-ci fait utilisation d'adresses dites IP afin que les équipements l'utilisant puissent se contacter, comme les adresses physiques permettant à une lettre d'arriver à destination.
Une adresse IP désigne donc un équipement sur un réseau informatique, celle-ci peux être assignée manuellement ou automatiquement par un service DHCP.
Il existe actuellement deux protocoles IP, l'IP version 4 (ci-après « IP v4 ») et l'IP version 6 (ci-après « IP v6 »). Le premier à été créé au début des années 1980; le second date des années 2000.
Actuellement, IP v4 est encore très massivement utilisé, que ce soit sur internet ou sur votre réseau local si vous en avez un. Une adresse IP v4 est codée sur 32 bits et prend la forme suivante :
AAA.BBB.CCC.DDD
Où AAA, BBB, CCC et DDD peuvent varier de 0 à 255 (notation décimale de mots de 8 bits), on obtient donc 232 adresses possible en théorie, soit 4 294 967 296.
IP v6 est son successeur, en plus d'apporter de multiples améliorations, il modifie totalement le système d'adressage ; à présent les adresses sont codées sur 128 bits et prennent cette forme :
aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh
Où les blocs, séparés par le signe deux points « : », varient de 0 à ffff (notation hexadécimal de mots de 16 bits), on obtient 2128 adresses possibles théoriquement, c'est à dire… heu… beaucoup. ![]()
340 282 366 920 938 463 463 374 607 431 768 211 456 pour être plus précis.
Pour simplifier la notation d'une adresse IP v6, on a établi la méthode suivante, prenons l'IP v6 2001:0db8:0000:85a3:0000:0000:ac1f:8001 :
Dans la suite de cet article, j'utiliserai très souvent la notation dite CIDR. Celle-ci est une méthode de notation du masque de sous-réseau.
Un masque de sous réseau késako ? Il s'agit d'un masque binaire appliqué sur une adresse IP v4 ou IP v6 pour savoir si elle fait partie du même réseau qu'une autre. Ils font la séparation entre les bits de l'adresse IP qui désignent le réseau et ceux qui désignent les machines de ce réseau.
Prenons un exemple : Nous avons deux ordinateurs connectés physiquement au même réseau IP v4, ils utilisent les adresses IP v4 192.168.5.4 et 192.168.5.78 et utilisent tous deux le masque de sous-réseau 255.255.255.128.
Traduisons ces IP v4 en binaire :
IP v4 décimale PC1 : 192.168.5.4 Masque décimal PC1 : 255.255.255.128 IP v4 décimale PC2 : 192.168.5.78 Masque décimal PC2 : 255.255.255.128 IP v4 binaire PC1 : 11000000.10101000.00001001.00000100 Masque binaire PC1 : 11111111.11111111.11111111.10000000 IP v4 binaire PC2 : 11000000.10101000.00001001.01001110 Masque binaire PC2 : 11111111.11111111.11111111.10000000
Tout les bits d'adresse IP ayant le même poids qu'un bit de masque de sous-réseau à 1 est dit masqué et désigne le réseau, dans notre cas, nous avons donc les 25 premiers bits en partant du poids fort qui sont assignés au réseau, les 7 autres sont utilisés pour désigner les machines de ce réseau.
__________________________
/ \
IP v4 binaire PC1 : 11000000.10101000.00001001.00000100
Masque binaire PC1 : 11111111.11111111.11111111.10000000
IP v4 binaire PC2 : 11000000.10101000.00001001.01001110
Masque binaire PC2 : 11111111.11111111.11111111.10000000
\__________________________/
Bits réseau
Les bits désignant le réseau doivent être identiques pour que les deux ordinateurs se voient comme faisant partie du même réseau. Dans notre exemple, c'est le cas. ![]()
La notation CIDR est une forme raccourcie qui indique le nombre de bits du masque de sous-réseau d'une adresse IP qui sont assignés à la désignation du réseau. Dans notre exemple, la notation CIDR des adresses des ordinateurs PC1 et PC2 est :
Si en IP v4 la notation de masque de sous réseau décimal est très utilisée, elle a été abandonné en IP v6, non seulement parce qu'il n'y a plus de notation décimale en IP v6, mais aussi pour raccourcir la notation.
IP v6 apporte diverses améliorations comme la simplification des trames réseau qu'il utilise, l'intégration d'IPSEC qui était une fonctionnalités externe de IP v4 ou la possibilité de joindre une machine plutôt qu'une autre en fonction de ses meilleurs performances réseau (voir Anycast) et la disparition pur et simple de la diffusion (ou broadcast).
Petit aparté sur les broadcast, anycast, multicast et tout :
Cependant, dans cet article, nous verrons d'avantage le second problème que IP v6 règle : Le manque d'adresses IP v4.
Quand IP v4 à été créé dans les années 80, on pensait qu'il y aurait assez d'adresses pour tout le monde ; personne n'avait vraiment vu venir le succès du réseau Internet qui n'était réservé qu'aux universités et structures gouvernementales à l'époque. De plus, on ne pensait pas qu'arriverait un jour des hordes de téléphones portables pouvant s'y connecter.
Vous allez me dire que 4 milliard d'adresses devraient suffire, mais pour être franc, les 232 adresses ne sont que théoriques, certaines plages d'adresses ne sont pas utilisables sur Internet, voici lesquelles :
Bref, seules 3 707 435 775 adresses sont réellement utilisables.
Il fût un temps, il suffisait de faire une demande pour se voir attribuer une grosse plage d'adresse d'adresses, regarder la cartographie des adresse IP v4 (carte de 2006) vous montrera que nombre de gros emplacements ont été attribués directement à des entreprises ou à des administrations des États-Unis. Cela date des années 1980, quand on ne pensait pas en voir le bout.
Cependant, avec le temps, on s'est rendu compte qu'on ne pourrait pas continuer à gaspiller ainsi et on s'est mis à rationaliser, ceci à mené à la création de l'IANA au niveau mondial et de divers bureaux d'attribution au niveau continental et national nommés Registre Internet Régionaux (ci-après « RIR »).
Actuellement, les plages d'adresses IP, qu'elles soient en v4 ou en v6, sont détenues par l'IANA, elles sont ensuite fournies aux RIR continentaux en fonction de leurs besoins. Une fois entre les mains des RIR continentaux, elles sont fournies aux RIR nationaux, puis enfin, aux entreprises, ou administrations.
Non, tout simplement car les adresses IP ne sont pas du pétrole, même s'il n'y en a plus en réserve, elles ne s'usent pas, de la même façon, il est possible de remettre dans le pot commun les plages d'adresses non utilisées. Enfin, si l'IANA n'a plus une adresse IP v4 en réserve, les RIR en disposent encore un peu par effet de transmission.
Au pire, Internet aura du mal à croître
Mais heureusement, si vous avez suivi, IP v6 va pouvoir prendre la relève et supprimer ce petit problème. ![]()
Malheureusement, le changement ne se fera pas d'un claquement de doigt, nombre d'entreprises et de Fournisseurs d'Accès à Internet (ci-après « FAI ») ont traîné les pieds pour y passer, et puisque c'est au pied du mur que l'on voit mieux le mur, peut-être le tarissement des adresses IP v4 au niveau de l'IANA va les pousser à se rendre compatibles IP v6 en vitesse.
Avant tout, répondons à quelques bêtises que l'on trouve régulièrement.
C'est faux, il est possible d'avoir ce que l'on appel une double pile IP, c'est-à-dire que votre carte réseau aura à la fois une adresse IP v4 et une adresse IP v6, par exemple, voici ce que ça donne chez le FAI auquel je suis abonné.
Sous GNU/Linux
ppp0 Link encap: Protocole Point-à-Point
inet adr:80.67.176.144 P-t-P:62.4.16.41 Masque:255.255.255.255
adr inet6: fe80::5043:b090:0:0/10 Scope:Lien
adr inet6: 2001:910:1090::1/48 Scope:Global
[…]Sous Microsoft Windows
Carte Ethernet Marvell Yukon 88E8001 Gigabit Ethernet :
Suffixe DNS propre à la connexion : zergy.lan
Adresse IP : 192.168.2.2
Masque de sous-réseau : 255.255.255.0
Adresse IP : 2001:910:1090:2:c03:256d:9235:62e3
[…]On voit bien ici que les connexions disposent d'une adresse IP v4 (192.168.2.*) et d'une adresse IP v6 (2001:910:1090:*)
Les connectivités IP v4 et IP v6 sont utilisées selon les besoins.
Les adresses IP v6 en fe80:* sont des adresses de liens locaux, j'y reviendrai par la suite.
On entend souvent cette bêtise à propos de deux choses :
Les systèmes de Translation d'Adresses et Port Réseaux, aussi nommée PAT/NAT, sont un placébo trouvé vers la fin des années 1990 pour permettre à plusieurs ordinateurs d'un réseau local (adresses IP v4 de classes A, B ou C) d'être connecté à Internet avec une seule IP v4 publique.
Certains prêtent à ce système une sécurité puisque les machines à l'intérieur du réseau local ne sont pas directement joignables depuis Internet puisqu'on ne dispose que d'une IP publique.
Cependant, en IP v6, s'il est vrai que tous vos équipement auront une adresse IP v6 publique, les murs de feu de ces machines seront là pour bloquer les attaques, et n'oublions pas qu'un système de PAT/NAT n'empêche pas de se prendre des tuiles, la première faille dans un système informatique étant bien souvent l'utilisateur.
Mais réjouissons-nous, avec la disparition du PAT/NAT fini la redirection de port nécessaire pour jouer correctement. ![]()
Pour le problème de l'adresse MAC dans l'adresse IP v6 publique, c'est vrai si l'adresse est réglée automatiquement, et faux si vous la réglez à la main. Et vu qu'en IP v6 votre FAI vous donne gracieusement une plage d'adresses IP, à vous de choisir celle qui vous convient.
La plage des IP v6 utilisables sur internet vont de 2000:0000:0000:0000:0000:0000:0000:0000 à 9fff:ffff:ffff:ffff:ffff:ffff:ffff:ffff, c'est-à-dire :
On prend ici le fait que vous souhaitez juste vérifier que vous pouvez vous connecter au réseau Internet en IP v6, il vous faut :
Actuellement, en France, les trois FAI suivants sont compatibles IP v6 :
Pour les autres :
Les matériels réseaux devant être vérifié pour le passage à IP v6 sont votre routeur -généralement la *box de votre FAI- et votre point d'accès Wifi si celui-ci est un élément à part du routeur.
Si vous utilisez votre *box en mode « Bridge » (mode simple modem ADSL) ou que vous n'avez qu'un simple modem (ADSL ou RTC) pour vous connecter, vous n'êtes pas concerné par cette section, en effet un modem utilise les protocoles PPP et ATM, et n'est donc pas concerné par des problèmes d'IP v4 ou IP v6.
C'est à l'équipement se trouvant derrière de faire la connectivité IP.
Aujourd'hui encore, bon nombre de modems-routeur ou routeurs grand public n'offrent pas de connectivité IP v6, faites attention lors de vos achats.
Pour ce qui est des box des FAI :
Pour tous les équipements et FAI, consultez la documentation fournie et mettez le micro-logiciel (firmware) à jour si besoin.
Les systèmes d'exploitation récents sont compatibles avec IPv6, par récent on entend :
Quelque soit votre système d'exploitation, le support d'IP v6 doit être activé par défaut, sauf sur Windows XP, voici comment faire pour celui-ci :
Connectez-vous à un site de test, il en existe d'autres.
Si en IP v4 votre FAI ne vous fournissait qu'une seule et unique adresse IP, en IP v6 vous avez droit à une plage complète, généralement, on vous attribue un /64, certains FAI comme FDN fournissent un /48.
Le problème étant de trouver moyen d'utiliser ces 264 (ou 272, ou 280) adresses. ![]()
Mais outre la plage d'adresse IP v6 publique que vous fournit votre FAI, vous en trouverez d'autres, décrivons-les rapidement :
A présent que votre connectivité IP v6 à Internet est en place, vous pouvez tester si un serveur quelconque est lui aussi compatible, pour cela, il suffit d'avoir quelques petits outils en ligne de commande.
Ceux-ci n'étant pas installés de base sous Micorosoft Windows voici la procédure pour les mettre en place :
Il faut ensuite ajouter le dossier d'installation à la variable PATH du système, pour plus facilement les utiliser.
Sous Windows XP et 2003 :
Sous Windows Vista et 7 :
Nous allons ici uniquement utiliser la commande « dig » pour interroger un serveur DNS (ceux qui traduisent les adresses IP en nom intelligible et vice-versa) afin de savoir si un serveur dispose d'une IP v6. D'autres commandes comme « host » sont fournies par ces outils mais ne sont pas décrites ici.
L'utilisation est très simple, il suffit d'ouvrir une invite de commande et de taper la commande :
host nomDuServeur
Exemple avec une machine compatible IP v6 :
host www.zergy.net www.zergy.net is an alias for enalys.zergy.net. enalys.zergy.net has address 80.67.176.144 enalys.zergy.net has IPv6 address 2001:910:1090:2::1
La commande nous répond que www.zergy.net est un surnom du serveur enalys.zergy.net et que l'adresse IP v4 ce celui-ci est 80.67.176.144.
Cependant, la réponse nous indique également que enalys.zergy.net dispose d'une adresse IP v6 qui est 2001:910:1090:2::1.
Exemple avec une machine non compatible IP v6 :
host www.aeriesguard.com www.aeriesguard.com is an alias for aeriesguard.com. aeriesguard.com has address 78.41.233.87 aeriesguard.com mail is handled by 30 mx2.celeonet.com. aeriesguard.com mail is handled by 25 mx3-cl.celeonet.fr.
La commande nous répond que www.aeriesguard.com est un surnom du serveur aeriesguard.com et que l'adresse IP v4 ce celui-ci est 78.41.233.87.
Les autres lignes indiquent quels sont les serveurs de messagerie utilisés par le domaine aeriesguard.com, rien ne concerne une quelconque compatibilité IP v6. ![]()
Ertaï, il va falloir arranger ça ! ![]()
Merci à Ertaï pour les corrections.
17 réponses -
il y a plus d'1 an
Les sauvegardes de base de données ne sont pas toujours simple à effectuer, voici un petit script qui vous mâchera le travail.
S'il est possible de sauvegarder les bases de données de MySQL en se contentant de copier les fichiers contenant les bases, cette méthode est crado et peut se solder par un échec cuisant.
Il est largement recommandé d'utiliser l'utilitaire mysqldump pour cette tâche, cependant, l'utiliser manuellement pour sauvegarder les bases de données une à une n'est pas agréable, un oubli ou une mauvaise manipulation est vite arrivée.
Voici donc un petit script à utiliser avec cron pour sauvegarder toutes vos bases de données MySQL automatiquement.
A modifier selon votre convenance, attention, les droits de root sont nécessaires.
La présence du mot de passe root de MySQL dans ce fichier demande de mettre les droits les plus restrictifs possible.
#! /bin/sh -e
################################################################################
# #
# LICENCE #
# #
# This program is free software: you can redistribute it and/or modify it #
# under the terms of the GNU General Public License as published by the Free #
# Software Foundation, either version 3 of the License, or (at your option) #
# any later version. #
# #
# This program is distributed in the hope that it will be useful, but WITHOUT #
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or #
# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for #
# more details. #
# #
# You should have received a copy of the GNU General Public License along with #
# this program. If not, see <http://www.gnu.org/licenses/>. #
# #
################################################################################
################################################################################
# #
# DESCRIPTION #
# #
# Ce script sauvegarde automatiquement les bases de données MySQL/MariaDB en #
# utilisant la sauvegarde par base. #
# #
# #
# VARIABLES #
# #
# - DATE : Date du jour, utilisé pour le dossier de sauvegarde des bases de #
# données à sauvegarder. #
# - MYSQLROOT : Nom de l'administrateur du système de gestion de bases de #
# données, root par défaut. #
# - MYSQLPASSWD : Mot de passe de l'administrateur du système de gestion de #
# base de données. #
# - BACKUP_DIR : Emplacement du répertoire de base pour les sauvegarde, un #
# sous-répertoire portant pour nom la variable date sera crée pour contenir #
# les sauvegarde du jour. #
# - LOG_FILE : Fichier utilisé pour la journalisation. #
# - LOG_FILE_DATE : Date de journalisation. #
# - RETENTION : Temps de rétention des sauvegardes. #
# - MYSQLDUMP_OPTS : Options utilisées par la commande mysqldump. #
# #
# #
# FONCTIONS #
# #
# - logDate() : Ajoute la date aux messages de journalisation. #
# - createLog() : Créer un fichier de journalisation et lui donne les droits #
# corrects s'il n'existe pas. #
# - createBackupDir() : Vérifie l'existance du répertoire utilisé par les #
# sauvegardes du jour, le crée et lui donne les authorisations correctes le #
# cas échéant. Voir les variables BACKUP_DIR et DATE. #
# Quitte et retourne l'état de sortie 1 si le dossier n'existe pas et ne #
# peut être crée. #
# - backupPurge() : Utilise la commande tmpreaper pour suprimmer dans le #
# dossier de base des sauvegardes -tel que défini par la variable #
# BACKUP_DIR- celles dont l'âge est supérieur à celui défini dans la #
# variable RETENTION. #
# Quitte et retourne l'état de sortie 2 si les sauvegardes les plus #
# anciennes ne peuvent être supprimées. #
# - listDB() : Cette fonction liste les bases de données présentes avec la #
# commande mysql pour lister les bases de données présentent dans le système #
# de base de données que l'on souhaite sauvegarder. #
# Quitte et retourne l'état de sortie 3 si les bases de données ne peuvent #
# êtres listées #
# Quitte et retourne l'état de sortie 4 si aucunes bases de données #
# n'existe. #
# - backupDB() : Supprime les sauvegardes présente dans le dossier du jour #
# s'ils en existes puis utilise mysql afin de sauvegarder les bases de #
# données du système de gestion de base de données que l'on souhaite #
# sauvegarder. #
# Il est possible de spécifier des options à la commande de sauvegarde via #
# la variables MYSQLDUMP_OPTS. #
# Quitte est retourne l'état de sortie 5 si une erreur se produit lors des #
# sauvegardes. #
# - backupCheck() : Cette fonction effectue un test afin de savoir si les #
# sauvegardes se sont bien déroulées. Elle vérifie via la commande find #
# couplé à la commande wc -l la présence de fichier dans le répertoire de #
# sauvegarde du jour, si le résultat de cette commande est est plus grand #
# que 0, elle utilise la commande du -ks si la taille totales des fichiers #
# sauvegardé est supérieur à quatre kibi-octects, 4 kio étant la taille d'un #
# dossier vide ou contenant des fichiers de taille nulle. #
# Quitte et retourne l'état de sortie 6 si aucune sauvegarde n'a put être #
# effectuée ou si la taille des sauvegardes est nulle. #
# #
# #
# AUTEUR(S) #
# #
# - Collyer Cédric <collyer.cedric@zergy.net> #
# #
# #
# DERNIER(S) CHANGEMENT(S) : #
# #
# - 23/10/2010 : Création du script et écriture de la documentation. #
# - 21/02/2011 : Ajout de la suppression des répertoires vides dans la #
# fonction BackupPurge(). #
# - 24/10/2011 : Abandon du GZ, compression des dump en XZ. #
# - 25/10/2011 : Mise au format ISO. #
# #
################################################################################
# Initialisation de variables
DATE="$(date '+%Y%m%d')";
MYSQLROOT="root";
MYSQLPASSWD="XXXXXXXX";
BACKUP_DIR="/home/shares/sauvegardes/MySQL";
LOG_FILE="/var/log/mysql-dump.log";
RETENTION="7d";
SHELL="/bin/sh";
PATH="/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin";
MYSQLDUMP_OPTS="--routines --skip-lock-tables --events";
# Routine d'horodatage des logs
logDate() {
LOG_FILE_DATE="$(date +'%d/%m/%Y %H:%M')";
}
# Mise en place des journaux.
createLog () {
if [ ! -f "$LOG_FILE" ]; then
touch "$LOG_FILE";
chown mysql "$LOG_FILE";
chgrp adm "$LOG_FILE";
chmod 640 "$LOG_FILE";
fi
}
# Mise en place des répertoires.
createBackupDir () {
if [ ! -d "$BACKUP_DIR/$DATE" ]; then
mkdir -p "$BACKUP_DIR/$DATE";
if [ $? != 0 ]; then
logDate;
echo "$LOG_FILE_DATE : Impossible de créer le dossier \
de sauvegarde." >> "$LOG_FILE";
exit 1;
fi
chown root "$BACKUP_DIR/$DATE";
chgrp staff "$BACKUP_DIR/$DATE";
chmod 770 "$BACKUP_DIR/$DATE";
fi
}
# Purge des ancienne sauvegardes.
# Utilisation TMPReaper pour supprimer les sauvegardes vielles de plus de 8
# jours (cf $RETENTION pour changer)
backupPurge() {
tmpreaper "$RETENTION" "$BACKUP_DIR";
if [ $? != "0" ]; then
logDate;
echo "$LOG_FILE_DATE : Impossible de purger les anciennes \
sauvegardes." >> "$LOG_FILE";
exit 2;
fi
for olddir in $(ls "$BACKUP_DIR"); do
if [ "$(du -ks $BACKUP_DIR/$olddir | awk {'print $1'})" -eq 4 ]
then
rmdir "$BACKUP_DIR/$olddir";
fi
done
}
# Listage des bases de données.
listDB() {
BASE_LIST="$(mysql --user=$MYSQLROOT --password=$MYSQLPASSWD \
--batch --skip-column-names --execute='SHOW DATABASES;')";
if [ $? != "0" ]; then
logDate;
echo "$LOG_FILE_DATE : Erreur dans la commande de sauvegarde." \
>> "$LOG_FILE";
exit 3;
fi
if [ "$BASE_LIST" = "" ]; then
logDate;
echo "$LOG_FILE_DATE : Aucune base présente." >> "$LOG_FILE";
exit 4;
fi
}
# Sauvegarde des BDD.
backupDB() {
for db in $BASE_LIST; do
if [ -f "$BACKUP_DIR/$DATE/$db.sql.xz" ]; then
rm -f "$BACKUP_DIR/$DATE/$db.sql.xz";
fi
mysqldump $MYSQLDUMP_OPTS --user="$MYSQLROOT" \
--password="$MYSQLPASSWD" "$db" 2>> "$LOG_FILE" | xz -c\
> "$BACKUP_DIR/$DATE/$db.sql.xz";
if [ $? -ne "0" ]; then
logDate;
echo "$LOG_FILE_DATE : Attention erreur dans les \
sauvegardes." >> "$LOG_FILE";
exit 5;
fi
chown root "$BACKUP_DIR/$DATE/$db.sql.xz";
chgrp staff "$BACKUP_DIR/$DATE/$db.sql.xz";
chmod 660 "$BACKUP_DIR/$DATE/$db.sql.xz";
done
}
# Vérificarion des sauvegardes.
backupCheck() {
if [ "$(find $BACKUP_DIR/$DATE -type f | wc -l)" -gt 0 -a \
"$(du -ks $BACKUP_DIR/$DATE | awk {'print $1'})" -gt 4 ]; then
logDate;
echo "$LOG_FILE_DATE : Sauvegarde des bases terminé avec \
succés." >> "$LOG_FILE";
else
logDate;
echo "$LOG_FILE_DATE : Aucune base sauvegardées ou leur taille \
est de zéro." >> "$LOG_FILE";
exit 6;
fi
}
main() {
createLog;
createBackupDir;
listDB;
backupDB;
backupCheck;
backupPurge;
}
main;
exit 0;
7 réponses -
il y a plus d'1 an
© Copyright 2002-2012 Aeriesguard.com - Mentions légales
Aerie's Guard V 7.0 réalisé par Ertaï, designé par Ivaldir, illustré par Izual et Sophie Masure