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éristique | Subnet Public | Subnet 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'usage | Web servers, LB | BDD, 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é
| Concept | Description |
|---|---|
| Subnet | Sous-réseau dans une AZ |
| Public Subnet | Route vers IGW, accès Internet |
| Private Subnet | Pas de route IGW, isolé |
| Route Table | Règles de direction du trafic |
| local | Route automatique pour le VPC |
| 0.0.0.0/0 | Route par défaut (Internet) |
Quiz de Validation
- Un subnet peut-il s'étendre sur plusieurs AZ ?
- Qu'est-ce qui fait qu'un subnet est "public" ?
- Quelle route rend un subnet public ?
- Combien d'adresses utilisables dans un /24 ?
- Qu'est-ce que la Main Route Table ?
Prochaine section : Internet Gateway