Un masque de sous-réseau est composé d'un certain nombre de bits à 1 et 0 comme vu précédamment, mais comment s'en servir pour connaitre le réseau auquel appartient une IP en fonction du masque ? La réponse est plutôt simple, il suffit de faire un ET logique avec le code binaire de l'ip et du masque. Pour faire simple, on va reprendre l'exemple du réseau de classe 1 (masque 255.0.0.0) et de l'IP 10.2.3.4.
Calcul de l'adresse réseau auquel appartient 10.2.3.4 :
| 00001010 | . | 00000010 | . | 00000011 | . | 00000100 |
| ET | ||||||
| 11111111 | . | 00000000 | . | 00000000 | . | 00000000 |
| = | ||||||
| 00001010 | . | 00000000 | . | 00000000 | . | 00000000 |
Donc l'adresse 10.2.3.4 appartient au réseau d'ip 10.0.0.0 (tout les bits de l'identifiant machine sont à 0).
On va maintenant en venir au coté intéressant de l'IP, la sécurisation des accès grâce à des sous-réseaux différents. En effet, deux machines sur un même réseau physique différent peuvent communiquer directement, donc on peut limiter les accès. Ca peut être intéressant en LAN pour, par exemple, ne laisser le net qu'à certaines personne tout en ayant accès au serveurs de jeux, On va voir comment on peut faire ça simplement.
Premièrement il faut prendre une classe pouvant contenir suffisamment de périphériques pour pouvoir y connecter les PC joueurs, serveurs, et admins, pour une LAN contenant plus de 250 joueurs, on peut prendre un réseau de classe A ou B, ici je vais prendre la classe B car c'est la classe la plus logique, ça ne sert à rien de prévoir un trop grand nombre de machines, car de toutes façons, on va les brider par la suite.
On va dire que notre LAN contient 500 joueurs, on va donc allouer 3*256 - 2 adresses aux joueurs et serveurs, les joueurs et serveurs auront des adresses de type 172.16.0.X, 172.16.1.X et 172.16.2.X et pour les admins on a les 252 chiffres restants, on peut donc mettre des IP du style 172.16.3.X, 172.16.4.X, 172.16.5.X ou 172.16.6.X.
Bon, si on laisse tout ça comme ça, on risque d'avoir un problème de sécurité, en effet, si on admet que le net est sur le routeur d'ip172.16.4.1 les joueurs y aurons accès, pour leur interdire l'accès il faut découper le réseau de classe B afin de couper la communication entre les joueurs et le routeur Internet. Voyons comment on fait :
Tout d'abord, on récupère le masque de sous-réseau de classe B classique 255.255.0.0, et on modifie le 3ème chiffre (il faut toujours modifier le premier chiffre de l'id machine) afin de diminuer les plages IP. Mais faut-il seulement savoir où rajouter les 1, pour ça rien de plus simple, il suffit de relire notre petit texte architectural que l'on vient de faire, on a dit que l'on voulait que la première machine joueur ait pour IP 172.16.0.1 et la dernière 172.16.3.254, on prend donc le nombre de valeur différentes que peut prendre le troisième chiffre de l'IP, ici ce chiffre peut prendre les valeur 0, 1, 2 et 3, il a donc 4 valeurs possible, maintenant, pour connaitre le troisième chiffre de notre masque, on fait 256 -le nombre de valeurs possible, ici on a 256 - 4, ce qui donne 252, donc le masque de sous-réseau des joueurs sera, 255.255.252.0. Vous allez me dire, c'est bien beau ... mais c'est trop simple pour être vrai... qu'à cela ne tienne ... on va faire une démonstration... mais que faut-il vérifier ? Tout d'abord, vérifions que le joueur 172.16.0.1 puisse communiquer au joueur d'IP 172.16.3.254, les IPs qui se situent entre les deux auront forcément les mêmes résultats. on doit donc vérifier que l'IP réseau de l'IP 172.16.0.1 est la même que celle du joueur 172.16.3.254, on va donc refaire le même calcul que ci-dessus avec le ET logique.
Calcul avec 172.16.0.1
| 10101100 | . | 00010000 | . | 00000000 | . | 00000001 |
| ET | ||||||
| 11111111 | . | 11111111 | . | 11111100 | . | 00000000 |
| = | ||||||
| 10101100 | . | 00010000 | . | 00000000 | . | 00000000 |
IP réseau = 172.16.0.0
Calcul avec 172.16.3.254
| 10101100 | . | 00010000 | . | 00000011 | . | 11111110 |
| ET | ||||||
| 11111111 | . | 11111111 | . | 11111100 | . | 00000000 |
| = | ||||||
| 10101100 | . | 00010000 | . | 00000000 | . | 00000000 |
IP réseau = 172.16.0.0
Bon ... les premiers résultat ont l'air plutôt positifs non ?
Maintenant il nous reste à vérifier que les IPs 172.16.0.1 et 172.16.4.1 ne communiquent pas... sinon les joueurs auront le net et on fait tout ces calculs pour justement l'éviter.
Calcul avec 172.16.4.1
| 10101100 | . | 00010000 | . | 00000100 | . | 00000001 |
| ET | ||||||
| 11111111 | . | 11111111 | . | 11111100 | . | 00000000 |
| = | ||||||
| 10101100 | . | 00010000 | . | 00000100 | . | 00000000 |
IP réseau = 172.16.4.0
Les IP réseau sont donc différentes, on a donc réussi notre partage de réseau.
On va quand même faire un petit récapitulatif afin d'avoir les choses bien au clair.
Les IP des joueurs seront comprisent entre 172.16.0.1 et 172.16.3.254, IP réseau 172.16.0.0, IP de broadcast 172.16.3.255 et masque de sous-réseau
| IP réseau | IP broadcast | Masque de sous-réseau | Première IP | Dernière IP | |
| Joueurs + serveurs | 172.16.0.0 | 172.16.3.255 | 255.255.252.0 | 172.16.0.1 | 172.16.3.254 |
| Serveurs | 172.16.0.0 | 172.16.3.255 | 255.255.0.0 | 172.16.0.1 | 172.16.3.254 |
| Admins +internet | 172.16.4.0 | 172.16.7.255 | 255.255.0.0 | 172.16.4.1 | 172.16.7.254 |
Les serveurs ont des masques en 255.255.0.0 afin de pouvoir communiquer avec les admins et le net, pour d'éventuels HLTV,bot IRC, etc.
Idem pour les admins.
Afin de bloquer les masques de sous-réseau, il faut configurer le serveur DHCP (cf. le dossier de notre ami Zaxe : Serveur DHCP sous Linux).
Il persiste tout de même des problèmes de sécurité, car un joueur peut modifier sa configuration réseau, et prendre son IP attribuée par le DHCP et la mettre en IP fixe en modifiant le masque de sous-réseau, nous allons donc voir une autre méthode pour utiliser les IPs en les couplant avec les tables de routages. Pour cela rendez-vous à la page suivante.
idle` XwZ le 15/06/2008 à 21:06| pirquessa a écrit: | ||
Ca a pourtant l'air efficace. Ce n'est pas utilisé car c'est cher/lourd/pas efficace/trop technique ? Dis nous tout |