# 2. Réseau & services

IP, multi-NIC, routage/NAT, DNS, DHCP

# Réseau : configuration IP et plusieurs cartes (multi-NIC)

## Topologie du labo

```
         Réseau de l'école ("Goulotte")  10.2.51.0/24
                    │   passerelle 10.2.51.254
                    │
        ┌───────────┴───────────┐
        │  RTRHP01 (routeur/NAT) │
        │  NIC "Goulotte" 10.2.51.39 /24  GW 10.2.51.254
        │  NIC "LAN01"    10.19.1.1  /24  (pas de GW)
        └───────────┬───────────┘
                    │
              LAN01  10.19.1.0/24
                    │
        ┌───────────┴───────────┐
        │ SRV01  10.19.1.254 /24 │  DC + DNS + DHCP
        │ GW 10.19.1.1           │
        └────────────────────────┘
                    │
              Clients (DHCP)
```

| Machine | Carte | IP / masque | Passerelle | DNS |
|---|---|---|---|---|
| RTRHP01 | Goulotte | 10.2.51.39 / 255.255.255.0 | 10.2.51.254 | DNS de l'école (ou SRV01 une fois le domaine créé) |
| RTRHP01 | LAN01 | 10.19.1.1 / 255.255.255.0 | **aucune** | 10.19.1.254 |
| SRV01 | LAN | 10.19.1.254 / 255.255.255.0 | 10.19.1.1 | **10.19.1.254** (lui-même) |

## Règles d'or du multi-NIC

1. **Une seule passerelle par défaut** sur toute la machine : sur la carte qui mène vers « le reste du monde » (ici Goulotte). Si on en met deux, Windows choisit selon la métrique et le trafic part au hasard sur l'une ou l'autre.
2. **Renommer les cartes** dans `ncpa.cpl` (`Ethernet0` → `Goulotte`, `Ethernet1` → `LAN01`), sinon on ne sait plus laquelle est laquelle.
3. **Identifier la bonne carte** : comparer l'adresse **MAC** dans `ipconfig /all` avec celle de la carte virtuelle dans les paramètres de la VM, et vérifier à quel réseau virtuel (vSwitch, LAN segment, réseau interne…) chaque carte est connectée.
4. Pour joindre un réseau qui n'est pas derrière la passerelle par défaut, on ajoute une **route statique** plutôt qu'une deuxième passerelle.

## Configurer en GUI

`ncpa.cpl` → clic droit sur la carte → **Propriétés** → **Protocole Internet version 4 (TCP/IPv4)** → saisir l'IP, le masque, la passerelle et le DNS.

## Configurer en PowerShell

```powershell
# Voir les cartes
Get-NetAdapter

# Renommer
Rename-NetAdapter -Name "Ethernet0" -NewName "Goulotte"
Rename-NetAdapter -Name "Ethernet1" -NewName "LAN01"

# IP fixe + passerelle (carte côté école)
New-NetIPAddress -InterfaceAlias "Goulotte" -IPAddress 10.2.51.39 -PrefixLength 24 -DefaultGateway 10.2.51.254

# IP fixe SANS passerelle (carte côté LAN)
New-NetIPAddress -InterfaceAlias "LAN01" -IPAddress 10.19.1.1 -PrefixLength 24

# DNS
Set-DnsClientServerAddress -InterfaceAlias "LAN01" -ServerAddresses 10.19.1.254

# Vérifier
Get-NetIPConfiguration

# Supprimer une IP / une passerelle mal configurée
Remove-NetIPAddress -InterfaceAlias "LAN01" -Confirm:$false
Remove-NetRoute -InterfaceAlias "LAN01" -DestinationPrefix 0.0.0.0/0 -Confirm:$false

# Ajouter une route statique (ex : vers un autre LAN derrière 10.19.1.2)
New-NetRoute -DestinationPrefix 10.20.0.0/24 -InterfaceAlias "LAN01" -NextHop 10.19.1.2
# équivalent cmd : route -p add 10.20.0.0 mask 255.255.255.0 10.19.1.2
```

> 💡 `/24` = `255.255.255.0` : 24 bits à 1 dans le masque, donc 254 adresses utilisables (de .1 à .254).

## Questions de révision

1. Pourquoi ne met-on pas de passerelle sur la carte LAN01 du routeur ?
2. Quelle est la passerelle par défaut de SRV01 ? Pourquoi ?
3. Comment savoir quelle carte Windows correspond à quelle carte virtuelle de la VM ?
4. Que vaut le masque `/24` en notation décimale, et combien d'hôtes contient ce réseau ?

# Routage et NAT avec RRAS

**RRAS** (*Routing and Remote Access Service*) transforme un Windows Server en **routeur**. Il peut aussi faire du **NAT**, servir de **serveur VPN** et d'**agent de relais DHCP**.

Dans le labo, **RTRHP01** relie le LAN `10.19.1.0/24` au réseau de l'école `10.2.51.0/24`.

## Routage simple vs NAT

| | Routage simple (LAN routing) | NAT |
|---|---|---|
| Fonctionnement | Transmet les paquets entre réseaux sans modifier les IP | Remplace l'IP source privée (10.19.1.x) par l'IP de la carte publique (10.2.51.39) |
| Condition | Le réseau en amont doit avoir une **route retour** vers 10.19.1.0/24 | Aucune configuration nécessaire en amont |
| Usage labo | Rarement possible : on ne contrôle pas le routeur de l'école | ✅ **Ce qu'on utilise** pour que le LAN ait accès à Internet |

> Sans NAT, un paquet du LAN atteint bien Internet, mais la réponse revient vers `10.19.1.x` et le routeur de l'école ne sait pas où se trouve ce réseau. La réponse est donc perdue.

## Installation

```powershell
Install-WindowsFeature RemoteAccess, Routing -IncludeManagementTools
```
GUI : **Gestionnaire de serveur** → Ajouter des rôles → **Accès à distance** → service de rôle **Routage**. Cocher aussi **DirectAccess et VPN** : il est requis avec Routage.

## Configuration du NAT (GUI)

1. `rrasmgmt.msc` → clic droit sur le serveur → **Configurer et activer le routage et l'accès distant**.
2. Choisir **Traduction d'adresses réseau (NAT)**.
3. Interface publique (connectée à Internet) : **Goulotte**.
4. Si l'assistant le propose, **ne pas** activer ses services DNS/DHCP de base (c'est SRV01 qui s'en charge).
5. Terminer : le service démarre.

## Configuration du NAT (ligne de commande)

```powershell
Install-RemoteAccess -VpnType RoutingOnly
netsh routing ip nat install
netsh routing ip nat add interface "Goulotte" full      # interface publique, avec NAT
netsh routing ip nat add interface "LAN01" private      # interface privée
```

## Vérifier

- Depuis SRV01 : `ping 10.19.1.1`, puis `ping 10.2.51.254`, puis `ping 8.8.8.8`, puis `nslookup google.com`.
- `tracert 8.8.8.8` depuis SRV01 : le premier saut doit être `10.19.1.1`.
- `rrasmgmt.msc` → IPv4 → **NAT** : les mappages en cours sont visibles.
- `route print` sur RTRHP01 : on doit voir une seule route `0.0.0.0` (via 10.2.51.254).

## Dépannage

| Symptôme | Cause probable |
|---|---|
| Ping 10.19.1.1 OK, ping 10.2.51.254 KO | NAT ou routage non activé, mauvaise interface publique, ou passerelle de SRV01 manquante |
| Ping 8.8.8.8 OK mais pas de navigation | Problème **DNS** et non de routage (voir le redirecteur sur SRV01) |
| Rien ne passe depuis RTRHP01 lui-même | Mauvaise passerelle, ou deux passerelles par défaut |

## Agent de relais DHCP (aperçu)

Les requêtes DHCP sont des **broadcasts** : elles ne traversent pas un routeur. Si le serveur DHCP se trouve sur un autre réseau que les clients, on configure un **agent de relais** sur le routeur : RRAS → IPv4 → clic droit **Général** → *Nouveau protocole de routage* → **Agent de relais DHCP**. On indique l'IP du serveur DHCP, puis on ajoute l'interface côté clients.

## Questions de révision

1. Pourquoi faut-il le NAT et pas seulement le routage dans notre labo ?
2. Dans l'assistant RRAS, quelle interface choisit-on comme « publique » ?
3. Un client ping 8.8.8.8 mais n'ouvre aucun site web. Où chercher ?
4. À quoi sert un agent de relais DHCP ?

# DNS

Le DNS traduit un **nom** en **adresse IP** (et l'inverse). Dans un domaine Active Directory, **le DNS est indispensable** : les clients trouvent les contrôleurs de domaine grâce à des enregistrements DNS (SRV).

## Fonctionnement d'une résolution

```
Client ──(récursive)──> SRV01 (DNS local)
                          │ pas dans ses zones ni dans son cache ?
                          ├──> serveur racine "."        → « demande à .be »
                          ├──> serveur TLD ".be"         → « demande à hugo-pierret.be »
                          └──> serveur faisant autorité   → « wiki = 1.2.3.4 »
Client <──── réponse ──── SRV01 (garde la réponse en cache pendant le TTL)
```

- **Requête récursive** : le client demande « donne-moi la réponse finale ».
- **Requête itérative** : le serveur DNS interroge les autres serveurs étape par étape.

### Les serveurs racine (root servers)

- 13 **noms** de serveurs racine, de `a.root-servers.net` à `m.root-servers.net`, gérés par 12 organisations.
- Grâce à l'**anycast**, ce sont en réalité **plus de 1 500 instances** réparties dans le monde. Carte : https://root-servers.org/
- Windows Server connaît leurs adresses grâce aux **indications de racine** (*root hints*) : console DNS → propriétés du serveur → onglet **Indications de racine**.

### Redirecteurs vs indications de racine

| | Redirecteur (*forwarder*) | Indications de racine |
|---|---|---|
| Principe | « Je ne sais pas → je demande à **ce** serveur » (DNS de l'école, 1.1.1.1, 8.8.8.8…) | « Je ne sais pas → je fais moi-même la résolution itérative à partir des serveurs racine » |
| Avantage | Rapide, profite du cache du serveur amont, passe les pare-feu | Aucune dépendance à un autre serveur |
| Labo | ✅ Souvent nécessaire si le réseau de l'école bloque le DNS sortant | Utilisé si aucun redirecteur ne répond |

**Redirecteur conditionnel** : « pour le domaine `ecole.local`, demande à `10.2.x.x` ». Utile entre deux domaines AD.

## Zones

| Type | Rôle | Exemple |
|---|---|---|
| **Zone de recherche directe** | Nom → IP | `hp.lan` |
| **Zone de recherche inversée** | IP → nom | `1.19.10.in-addr.arpa` (pour 10.19.1.0/24, octets à l'envers) |

Types de stockage :
- **Principale** : copie modifiable.
- **Secondaire** : copie en lecture seule obtenue par transfert de zone.
- **Stub** : contient seulement les NS/SOA d'une autre zone.
- **Intégrée à Active Directory** : stockée dans AD, répliquée avec AD, **mises à jour dynamiques sécurisées**. C'est le choix par défaut sur un DC.

## Enregistrements principaux

| Type | Rôle | Exemple |
|---|---|---|
| **A** | Nom → IPv4 | `srv01 → 10.19.1.254` |
| **AAAA** | Nom → IPv6 | |
| **PTR** | IP → nom (zone inversée) | `254 → srv01.hp.lan` |
| **CNAME** | Alias vers un autre nom | `intranet → srv01.hp.lan` |
| **MX** | Serveur de mail du domaine | |
| **NS** | Serveurs faisant autorité pour la zone | |
| **SOA** | Infos de la zone : serveur principal, numéro de série, TTL… | |
| **SRV** | Localise un **service** : c'est ainsi que les clients trouvent le DC | `_ldap._tcp.dc._msdcs.hp.lan` |

## Installation et configuration (PowerShell)

Le rôle DNS s'installe **automatiquement** pendant la promotion du DC (`-InstallDns`). Sinon :

```powershell
Install-WindowsFeature DNS -IncludeManagementTools

# Zone inversée pour le LAN, intégrée à AD
Add-DnsServerPrimaryZone -NetworkId "10.19.1.0/24" -ReplicationScope Domain

# Enregistrements
Add-DnsServerResourceRecordA     -ZoneName "hp.lan" -Name "rtrhp01" -IPv4Address 10.19.1.1 -CreatePtr
Add-DnsServerResourceRecordCName -ZoneName "hp.lan" -Name "intranet" -HostNameAlias "srv01.hp.lan"

# Redirecteur
Add-DnsServerForwarder -IPAddress 10.2.51.254      # ou le DNS de l'école, 1.1.1.1…
Get-DnsServerForwarder

# Vider le cache du serveur DNS
Clear-DnsServerCache
```

## nslookup

```
C:\> nslookup
Serveur par défaut :   UnKnown
Address:  10.19.1.254
>
```

- **Sans argument**, `nslookup` passe en **mode interactif** et affiche **le serveur DNS utilisé** par la machine. Pratique pour vérifier rapidement la configuration DNS.
- `UnKnown` : nslookup essaie de résoudre l'**IP du serveur DNS en nom** (requête PTR). S'il n'y a **pas de zone inversée** (ou pas de PTR), il affiche `UnKnown`. Ce n'est pas grave, mais créer la zone inversée corrige l'affichage.

Commandes utiles :
```
nslookup srv01.hp.lan                 # résolution A
nslookup 10.19.1.254                  # résolution inverse (PTR)
nslookup google.com 1.1.1.1           # interroger un serveur précis
nslookup -type=SRV _ldap._tcp.dc._msdcs.hp.lan   # trouver les DC du domaine
nslookup -type=MX gmail.com
```
En mode interactif : `server 1.1.1.1` (changer de serveur), `set type=ns`, `exit`.

PowerShell : `Resolve-DnsName srv01.hp.lan`, `Resolve-DnsName -Type SRV _ldap._tcp.dc._msdcs.hp.lan`.

## Questions de révision

1. Quelle est la différence entre une requête récursive et une requête itérative ?
2. Combien y a-t-il de serveurs racine ? Et combien de machines réelles derrière ?
3. Pourquoi nslookup affiche-t-il `UnKnown` comme nom du serveur ? Comment corriger ?
4. Quel type d'enregistrement permet à un client de trouver un contrôleur de domaine ?
5. Quel DNS doit être configuré sur un poste membre du domaine : le DC ou 8.8.8.8 ? Pourquoi ?
6. Quand utilise-t-on un redirecteur plutôt que les indications de racine ?

# DHCP

Le DHCP distribue **automatiquement** aux clients une IP, un masque, une passerelle, un DNS, etc.

## Le processus DORA

| Étape | Message | De → vers | Type |
|---|---|---|---|
| **D**iscover | « Y a-t-il un serveur DHCP ? » | Client → tous | Broadcast (`255.255.255.255`, port UDP 67) |
| **O**ffer | « Je te propose 10.19.1.100 » | Serveur → client | (port UDP 68) |
| **R**equest | « J'accepte l'offre de SRV01 » | Client → tous | Broadcast (pour prévenir les autres serveurs) |
| **A**ck | « C'est confirmé, bail de 8 jours » | Serveur → client | |

- **Bail** : durée de validité de l'adresse. Le client tente de le **renouveler à 50 %** de sa durée, puis à 87,5 %.
- Pas de serveur qui répond → le client prend une adresse **APIPA** `169.254.x.x` : c'est le signe d'un problème DHCP.

## Vocabulaire

| Terme | Signification |
|---|---|
| **Étendue** (*scope*) | Plage d'adresses distribuables pour un réseau (ex. 10.19.1.100 → 10.19.1.200) |
| **Exclusion** | Adresses de la plage à **ne pas** distribuer (IP fixes des serveurs, imprimantes) |
| **Réservation** | Toujours la même IP pour une **adresse MAC** donnée |
| **Options** | Paramètres envoyés avec l'IP |
| **Autorisation** | Dans un domaine, un serveur DHCP doit être **autorisé dans AD**, sinon il ne distribue rien (protection contre les serveurs DHCP « pirates ») |

### Options importantes

| N° | Option | Labo |
|---|---|---|
| 003 | Routeur (passerelle) | `10.19.1.1` |
| 006 | Serveurs DNS | `10.19.1.254` |
| 015 | Nom de domaine DNS | `hp.lan` |
| 051 | Durée du bail | |

Les options peuvent être définies **au niveau du serveur** (pour toutes les étendues), **de l'étendue** ou **d'une réservation**. Le niveau le plus précis l'emporte.

## Installation et configuration (PowerShell)

```powershell
Install-WindowsFeature DHCP -IncludeManagementTools

# Crée les groupes de sécurité locaux DHCP (Administrateurs DHCP, Utilisateurs DHCP)
Add-DhcpServerSecurityGroup
Restart-Service DHCPServer

# Autoriser le serveur dans AD
Add-DhcpServerInDC -DnsName srv01.hp.lan -IPAddress 10.19.1.254

# Indiquer au Gestionnaire de serveur que la configuration post-installation est faite
Set-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\ServerManager\Roles\12 -Name ConfigurationState -Value 2

# Étendue
Add-DhcpServerv4Scope -Name "LAN01" -StartRange 10.19.1.100 -EndRange 10.19.1.200 `
    -SubnetMask 255.255.255.0 -LeaseDuration 8.00:00:00 -State Active

# Options de l'étendue
Set-DhcpServerv4OptionValue -ScopeId 10.19.1.0 -Router 10.19.1.1 `
    -DnsServer 10.19.1.254 -DnsDomain "hp.lan"

# Exclusion
Add-DhcpServerv4ExclusionRange -ScopeId 10.19.1.0 -StartRange 10.19.1.100 -EndRange 10.19.1.109

# Réservation
Add-DhcpServerv4Reservation -ScopeId 10.19.1.0 -IPAddress 10.19.1.150 `
    -ClientId "00-15-5D-01-02-03" -Name "IMP01" -Description "Imprimante"

# Vérifier
Get-DhcpServerv4Scope
Get-DhcpServerv4Lease -ScopeId 10.19.1.0
Get-DhcpServerInDC
```

GUI : `dhcpmgmt.msc` → IPv4 → **Nouvelle étendue** (l'assistant demande la plage, les exclusions, la durée du bail et les options 003/006/015) → clic droit sur le serveur → **Autoriser**.

> 📝 Laisser les IP fixes (serveur .254, routeur .1) **en dehors** de la plage de l'étendue : c'est plus simple que de gérer des exclusions.

## Côté client

```cmd
ipconfig /release
ipconfig /renew
ipconfig /all        :: vérifier "Serveur DHCP", "Bail obtenu", "Bail expirant"
```

## Dépannage

| Symptôme | Piste |
|---|---|
| Client en `169.254.x.x` | Serveur non autorisé, étendue désactivée, client sur un autre réseau virtuel, ou pas de relais DHCP entre les deux |
| IP OK mais pas d'Internet | Option 003 (routeur) manquante ou fausse |
| IP OK mais pas de résolution de noms | Option 006 (DNS) manquante ou fausse |
| Icône rouge (flèche vers le bas) dans la console | Serveur non autorisé dans AD |

## Questions de révision

1. Cite les 4 étapes du DORA. Lesquelles sont en broadcast ?
2. Que signifie une adresse en 169.254.x.x sur un client ?
3. Quelle est la différence entre une exclusion et une réservation ?
4. Pourquoi faut-il « autoriser » un serveur DHCP dans Active Directory ?
5. Quelles options DHCP envoient la passerelle et le serveur DNS ?
6. Le serveur DHCP est sur un autre réseau que les clients : que faut-il ajouter ?