# Routeur et NAT
!!!abstract "Objectifs"
    - Comprendre le principe de la redirection de port
    - Savoir configurer le NAT de son routeur
    - Savoir émettre des baux DHCP (IP fixes)

![picture](/img/global/nat.svg)

## Qu'est-ce qu'un "port" ?
---
Les ports sont différents canaux par lesquels votre routeur envoie et reçoit des données, ce qui permet d'utiliser plusieurs services en meme temps. Lorsqu'il reçoit une donnée via un port, otre routeur transmet ensuite les données à la machine qui :
- soit a émis la requête de départ
- soit est configurée pour recevoir les données reçues par un port spécifique du routeur

Votre routeur dispose de plus de 65 000 ports à utiliser.

Certains programmes et applications sont conçus pour utiliser des ports spécifiques. Par exemple, lorsque votre réseau envoie des données à partir d'une page HTML, le routeur les recevra via le port numéro 80 (non sécurisé) ou 443 (sécurisé via SSL). 

Le routeur sert donc de plateforme d'aiguillage des données entre internet et votre machine.

## La redirection de port
---
Rediriger un `port`, c'est émettre une règle qui spécifie que telle `source` peut envoyer des données à tel `port` de votre routeur, qui redirigera les données sur tel `port` de telle `machine`. Les `sources` et la `machine de destination` sont identifiées par leur `adresse IP`.

| Variable                 | Description                                              | exemple                 |
|--------------------------|----------------------------------------------------------|-------------------------|
|         `machine source` |                   IP de la machine source (sur internet) | `All`<br>`123.45.67.89` |
|            `port source` |                            Port d'arrivée sur le routeur |                   `443` |
|    `port de destination` |             Port d'arrivée sur la machine de destination |                  `3000` |
| `machine de destination` | IP de la machine de destination (sur votre réseau local) |          `192.168.1.50` |

Selon ce tableau, si on enlève le `All` et que l'on garde l'ip `123.45.67.89` en provenance d'internet, tout le traffic envoyé depuis cette IP sur le port `443` du routeur sera redirigé vers le port `3000` de l'IP locale `192.168.1.50`.

Si on enlève l'IP de l'exemple et qu'on laisse le `All`, tout le traffic d'internet envoyé au port `443` du routeur sera redirigé vers le port `3000` de l'IP locale `192.168.1.50`.

C'est utile si par exemple vous avez un serveur qui a un service qui nécessite d'etre accessible par internet. Par exemple, un site web. Le web utilise le port `80` (non sécurisé) et le port 443 (sécurisé par certificat SSL) pour communiquer. Ainsi, si je veux que mon site internet soit accessible, je vais faire en sorte que lorsqu'on tape le nom de domaine de mon site, le routeur redirige bien vers mon serveur local (avec l'exemple de l'IP locale du tableau). Par exemple, imaginons que mon service est sur le port `3000` de mon routeur (accessible en local via `http://192.168.1.50:3000`), je vais donc rediriger comme dans l'exemple toutes les sources (All) qui passent par le port `443` du routeur vers le port `3000` de mon serveur local.

!!!warning "Attention"
    Si vous avez plusieurs services à rendre accessible, avec par exemple `sousdomaine1.mondomaine.fr` et `sousdomaine2.mondomaine.fr`, votre routeur ne peut pas rediriger vers plusieurs port selon la requête. Vous devrez utiliser un [Reverse Proxy](/serveex/swag) qui selon la requete redirigera vers le bon service de votre serveur.

## Le DHCP
---
A chaque fois que vous connectez un appareil sur votre réseau local, votre routeur lui attribue une adresse IP via les règles DHCP. Celle-ci est aléatoire selon des règles prédéfinies. A chaque redémarrage de l'appareil, l'IP peut changer. C'est embetant si vous exposez un service et que vous avez une redirection de port dans votre routeur car si l'IP change, la redirection enverra les données dans le vide. Le serveur DHCP de votre box permet d'attribuer une IP fixe à un appareil.

Chaque appareil a une adresse physique dite "adressse MAC". Pour fixer l'IP, vous devez connaitre l'adresse physique de votre appareil (visible dans votre routeur si votre machine est connectée au réseau), et lui attribuer une adresse IP fixe, ce qu'on appel un "bail DHCP fixe".

Ainsi, l'IP de votre machine ne changera jamais et la redirection de port sera toujours effective.

| Variable      | Description                    | Exemple             |
|---------------|--------------------------------|---------------------|
| `IP`          | IP locale fixe à attribuer     | `192.168.1.50`      |
| `Adresse Mac` | Adresse physique de la machine | `5E:FF:56:A2:AF:15` |

Pour plus d'information sur ces sujets, consultez la documentation de votre routeur.