Aller au contenu principal

Subnets et Tables de Routage

Qu'est-ce qu'un Subnet ?​

Un subnet (sous-réseau) est une subdivision de votre VPC. Chaque subnet existe dans une seule Zone de Disponibilité.

┌─────────────────────────────────────────────────────────────┐
│ SUBNETS │
├─────────────────────────────────────────────────────────────┤
│ │
│ VPC (10.0.0.0/16) │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ ┌──────────────────────────────────────────────┐ │ │
│ │ │ RÉGION us-east-1 │ │ │
│ │ │ │ │ │
│ │ │ ┌─────────────┐ ┌─────────────┐ │ │ │
│ │ │ │ AZ 1a │ │ AZ 1b │ │ │ │
│ │ │ │ │ │ │ │ │ │
│ │ │ │ ┌─────────┐ │ │ ┌─────────┐ │ │ │ │
│ │ │ │ │Subnet A │ │ │ │Subnet B │ │ │ │ │
│ │ │ │ │10.0.1.0 │ │ │ │10.0.2.0 │ │ │ │ │
│ │ │ │ │ /24 │ │ │ │ /24 │ │ │ │ │
│ │ │ │ └─────────┘ │ │ └─────────┘ │ │ │ │
│ │ │ │ │ │ │ │ │ │
│ │ │ └─────────────┘ └─────────────┘ │ │ │
│ │ │ │ │ │
│ │ └──────────────────────────────────────────────┘ │ │
│ │ │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ Règle : 1 Subnet = 1 AZ (ne peut pas s'étendre) │
│ Mais : 1 AZ peut avoir plusieurs Subnets │
│ │
└─────────────────────────────────────────────────────────────┘

Subnet Public vs Subnet Privé​

┌─────────────────────────────────────────────────────────────┐
│ PUBLIC vs PRIVÉ │
├─────────────────────────────────────────────────────────────┤
│ │
│ INTERNET │
│ │ │
│ ▼ │
│ ┌──────────┐ │
│ │ IGW │ │
│ └────┬─────┘ │
│ │ │
│ ┌─────────────────────┼─────────────────────┐ │
│ │ VPC │ │ │
│ │ │ │ │
│ │ ┌─────────────────┴───────────────┐ │ │
│ │ │ SUBNET PUBLIC │ │ │
│ │ │ │ │ │
│ │ │ • Route vers IGW (0.0.0.0/0) │ │ │
│ │ │ • IP publique auto-assignée │ │ │
│ │ │ • Accessible depuis Internet │ │ │
│ │ │ │ │ │
│ │ │ Ressources : Load Balancer, │ │ │
│ │ │ Bastion, NAT Gateway │ │ │
│ │ │ │ │ │
│ │ └─────────────────┬───────────────┘ │ │
│ │ │ │ │
│ │ │ (NAT Gateway) │ │
│ │ │ │ │
│ │ ┌─────────────────┴───────────────┐ │ │
│ │ │ SUBNET PRIVÉ │ │ │
│ │ │ │ │ │
│ │ │ • PAS de route vers IGW │ │ │
│ │ │ • Pas d'IP publique │ │ │
│ │ │ • NON accessible d'Internet │ │ │
│ │ │ • Peut sortir via NAT │ │ │
│ │ │ │ │ │
│ │ │ Ressources : Serveurs App, │ │ │
│ │ │ Base de données │ │ │
│ │ │ │ │ │
│ │ └──────────────────────────────────┘ │ │
│ │ │ │
│ └─────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘

Différences Clés​

CaractéristiqueSubnet PublicSubnet Privé
Route vers IGW✅ Oui (0.0.0.0/0 → igw)❌ Non
IP publique auto✅ Activable❌ Non
Accès depuis Internet✅ Possible❌ Impossible
Accès vers Internet✅ Direct⚠️ Via NAT Gateway
Cas d'usageWeb servers, LBBDD, App servers

Tables de Routage​

Qu'est-ce qu'une Route Table ?​

Une Route Table contient des règles (routes) qui déterminent où le trafic réseau est dirigé.

┌─────────────────────────────────────────────────────────────┐
│ ROUTE TABLE │
├─────────────────────────────────────────────────────────────┤
│ │
│ Route Table = "Panneau de direction" du réseau │
│ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ Destination │ Target │ Résultat │ │
│ │ ─────────────────┼──────────────────┼────────────│ │
│ │ 10.0.0.0/16 │ local │ Reste VPC │ │
│ │ 0.0.0.0/0 │ igw-xxx │ Internet │ │
│ │ │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ Comment ça marche : │
│ 1. Paquet arrive avec destination 8.8.8.8 │
│ 2. Vérifie : 8.8.8.8 dans 10.0.0.0/16 ? Non │
│ 3. Vérifie : 8.8.8.8 dans 0.0.0.0/0 ? Oui │
│ 4. Envoie vers igw-xxx (Internet Gateway) │
│ │
│ Règle : Route la plus spécifique gagne │
│ 10.0.0.0/16 est plus spécifique que 0.0.0.0/0 │
│ │
└─────────────────────────────────────────────────────────────┘

Route Table Publique vs Privée​

┌─────────────────────────────────────────────────────────────┐
│ ROUTE TABLE PUBLIQUE vs PRIVÉE │
├─────────────────────────────────────────────────────────────┤
│ │
│ ROUTE TABLE PUBLIQUE │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ Destination │ Target │ Description │ │
│ │─────────────────┼─────────────────┼─────────────────│ │
│ │ 10.0.0.0/16 │ local │ Trafic interne │ │
│ │ 0.0.0.0/0 │ igw-xxxxxxxx │ → Internet │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ ROUTE TABLE PRIVÉE │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ Destination │ Target │ Description │ │
│ │─────────────────┼─────────────────┼─────────────────│ │
│ │ 10.0.0.0/16 │ local │ Trafic interne │ │
│ │ 0.0.0.0/0 │ nat-xxxxxxxx │ → NAT Gateway │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ ROUTE TABLE ISOLÉE (très privé) │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ Destination │ Target │ Description │ │
│ │─────────────────┼─────────────────┼─────────────────│ │
│ │ 10.0.0.0/16 │ local │ Trafic interne │ │
│ │ (pas de 0.0.0.0/0) │ Pas d'Internet │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘

Association Subnet ↔ Route Table​

┌─────────────────────────────────────────────────────────────┐
│ ASSOCIATION SUBNET - ROUTE TABLE │
├─────────────────────────────────────────────────────────────┤
│ │
│ Chaque subnet est associé à UNE Route Table │
│ │
│ ┌───────────────┐ │
│ │ Route Table │──────────┐ │
│ │ rtb-public │ │ │
│ └───────────────┘ │ │
│ │ │ │
│ │ ┌────▼────┐ │
│ ┌──────▼──────┐ │ Subnet │ │
│ │ Subnet │ │ 1b │ │
│ │ 1a │ │(public) │ │
│ │ (public) │ └─────────┘ │
│ └─────────────┘ │
│ │
│ ┌───────────────┐ │
│ │ Route Table │──────────┐ │
│ │ rtb-private │ │ │
│ └───────────────┘ │ │
│ │ │ │
│ │ ┌────▼────┐ │
│ ┌──────▼──────┐ │ Subnet │ │
│ │ Subnet │ │ 2b │ │
│ │ 2a │ │(privé) │ │
│ │ (privé) │ └─────────┘ │
│ └─────────────┘ │
│ │
│ Main Route Table : Route Table par défaut si non associé │
│ │
└─────────────────────────────────────────────────────────────┘

Créer un Subnet​

Via Console​

1. VPC → Subnets → Create subnet
2. VPC : Sélectionner votre VPC
3. Subnet name : public-1a
4. Availability Zone : us-east-1a
5. IPv4 CIDR block : 10.0.1.0/24
6. Create subnet

Via AWS CLI​

# Créer un subnet public
aws ec2 create-subnet \
--vpc-id vpc-xxx \
--cidr-block 10.0.1.0/24 \
--availability-zone us-east-1a \
--tag-specifications 'ResourceType=subnet,Tags=[{Key=Name,Value=public-1a}]'

# Activer l'auto-assign IP publique (pour subnet public)
aws ec2 modify-subnet-attribute \
--subnet-id subnet-xxx \
--map-public-ip-on-launch

Créer et Configurer une Route Table​

Via AWS CLI​

# Créer une Route Table
aws ec2 create-route-table \
--vpc-id vpc-xxx \
--tag-specifications 'ResourceType=route-table,Tags=[{Key=Name,Value=rtb-public}]'

# Ajouter une route vers Internet Gateway
aws ec2 create-route \
--route-table-id rtb-xxx \
--destination-cidr-block 0.0.0.0/0 \
--gateway-id igw-xxx

# Associer le subnet à la Route Table
aws ec2 associate-route-table \
--route-table-id rtb-xxx \
--subnet-id subnet-xxx

Plan d'Adressage Recommandé​

┌─────────────────────────────────────────────────────────────┐
│ PLAN D'ADRESSAGE RECOMMANDÉ │
├─────────────────────────────────────────────────────────────┤
│ │
│ VPC : 10.0.0.0/16 (65,536 adresses) │
│ │
│ SUBNETS PUBLICS (Web Tier) │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ public-1a : 10.0.1.0/24 (AZ a) - 251 IPs │ │
│ │ public-1b : 10.0.2.0/24 (AZ b) - 251 IPs │ │
│ │ public-1c : 10.0.3.0/24 (AZ c) - 251 IPs │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ SUBNETS PRIVÉS (Application Tier) │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ private-1a : 10.0.11.0/24 (AZ a) - 251 IPs │ │
│ │ private-1b : 10.0.12.0/24 (AZ b) - 251 IPs │ │
│ │ private-1c : 10.0.13.0/24 (AZ c) - 251 IPs │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ SUBNETS BASE DE DONNÉES (Data Tier) │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ database-1a: 10.0.21.0/24 (AZ a) - 251 IPs │ │
│ │ database-1b: 10.0.22.0/24 (AZ b) - 251 IPs │ │
│ │ database-1c: 10.0.23.0/24 (AZ c) - 251 IPs │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ Convention de nommage : │
│ • 10.0.X.0/24 où X = 1-9 pour public │
│ • 10.0.X.0/24 où X = 11-19 pour private app │
│ • 10.0.X.0/24 où X = 21-29 pour database │
│ │
└─────────────────────────────────────────────────────────────┘

Bonnes Pratiques​

1. Toujours Multi-AZ​

✅ BON : Subnets dans au moins 2 AZ
❌ MAUVAIS : Tous les subnets dans une seule AZ

Raison : Résilience en cas de panne d'une AZ

2. Séparer Public et Privé​

✅ BON : 
- Subnets publics pour Load Balancers
- Subnets privés pour serveurs d'application
- Subnets isolés pour bases de données

❌ MAUVAIS : Tout dans des subnets publics

3. Planifier l'Adressage​

✅ BON : Plan d'adressage documenté avant de créer
❌ MAUVAIS : CIDR au hasard, chevauchements possibles

Astuce : Laisser de l'espace pour la croissance

Résumé​

ConceptDescription
SubnetSous-réseau dans une AZ
Public SubnetRoute vers IGW, accès Internet
Private SubnetPas de route IGW, isolé
Route TableRègles de direction du trafic
localRoute automatique pour le VPC
0.0.0.0/0Route par défaut (Internet)

Quiz de Validation​

  1. Un subnet peut-il s'étendre sur plusieurs AZ ?
  2. Qu'est-ce qui fait qu'un subnet est "public" ?
  3. Quelle route rend un subnet public ?
  4. Combien d'adresses utilisables dans un /24 ?
  5. Qu'est-ce que la Main Route Table ?

Prochaine section : Internet Gateway