Mirror the French docs onto the English structure
This commit is contained in:
@@ -0,0 +1,2 @@
|
||||
title: Réseau
|
||||
icon: i-lucide-network
|
||||
@@ -0,0 +1,71 @@
|
||||
---
|
||||
title: NAT & DHCP
|
||||
description: Comprendre le NAT, la redirection de ports et le DHCP sur un routeur domestique. Configurer des baux IP fixes et exposer des services locaux.
|
||||
---
|
||||
|
||||
|
||||
:ellipsis{left=0px width=40rem top=10rem blur=140px zIndex=60}
|
||||
|
||||
|
||||

|
||||
|
||||
## Qu'est-ce qu'un « port » ?
|
||||
|
||||
Les ports sont différents canaux par lesquels votre routeur envoie et reçoit des données. Cela permet d'utiliser plusieurs services en même temps.
|
||||
Lorsqu'il reçoit des données via un port, votre routeur les transmet à la machine qui :
|
||||
|
||||
- soit a émis la requête de départ,
|
||||
- soit est configurée pour recevoir les données arrivant sur un port spécifique.
|
||||
|
||||
Votre routeur dispose de plus de 65 000 ports.
|
||||
|
||||
Certains programmes et applications sont conçus pour utiliser des ports spécifiques. Par exemple, lorsque votre réseau envoie des données depuis une page HTML, le routeur les reçoit via le port 80 (non sécurisé) ou le port `443` (sécurisé via SSL).
|
||||
|
||||
Le routeur sert donc de plateforme d'aiguillage des données entre internet et vos machines locales.
|
||||
|
||||
## La redirection de port
|
||||
|
||||
Rediriger un `port`, c'est émettre une règle qui spécifie quelle `source` peut envoyer des données à quel `port` de votre routeur, qui les transmettra ensuite à un `port` précis d'une `machine` précise. Les `sources` et la `machine de destination` sont identifiées par leur adresse IP.
|
||||
|
||||
| Variable | Description | Exemple |
|
||||
|--------------------------|----------------------------------------------------------|-------------------------|
|
||||
| `machine source` | IP de la machine source (depuis internet) | `All`<br>`123.45.67.89` |
|
||||
| `port source` | Port d'arrivée sur le routeur | `443` |
|
||||
| `port de destination` | Port sur la machine de destination | `3000` |
|
||||
| `machine de destination` | IP de la machine visée (sur votre réseau local) | `192.168.1.50` |
|
||||
|
||||
Selon ce tableau :
|
||||
Si on enlève le `All` et qu'on garde l'IP `123.45.67.89`, tout le trafic venant de cette IP envoyé sur le port `443` de votre routeur sera redirigé vers le port `3000` de l'IP locale `192.168.1.50`.
|
||||
|
||||
Si on enlève l'IP et qu'on garde `All`, alors tout le trafic venant d'internet sur le port `443` sera redirigé vers le port `3000` de `192.168.1.50`.
|
||||
|
||||
C'est utile quand vous avez un serveur qui doit être accessible depuis internet. Par exemple, un site web utilise le port `80` (non sécurisé) ou `443` (sécurisé par SSL).
|
||||
Pour rendre le site accessible, vous configurerez votre routeur pour rediriger la requête du nom de domaine vers votre serveur local.
|
||||
Imaginons que votre service tourne sur le port `3000` en local (`http://192.168.1.50:3000`), vous redirigerez tout le trafic du port `443` du routeur vers le port `3000` du serveur local.
|
||||
|
||||
::warning{to="/serveex/core/swag"}
|
||||
|
||||
__Attention :__ si vous avez plusieurs services à exposer, du type `sousdomaine1.mondomaine.fr` et `sousdomaine2.mondomaine.fr`, votre routeur ne peut pas différencier les requêtes et rediriger vers des ports différents.
|
||||
Vous devez utiliser un **Reverse Proxy** pour aiguiller le trafic selon la requête.
|
||||
::
|
||||
|
||||
## Le DHCP
|
||||
|
||||
À chaque fois qu'un appareil se connecte à votre réseau local, votre routeur lui attribue une adresse IP via les règles DHCP.
|
||||
Cette IP est choisie au hasard dans une plage prédéfinie.
|
||||
À chaque redémarrage de l'appareil, l'IP peut changer, ce qui pose problème si vous redirigez des ports, car l'IP visée peut ne plus être la bonne.
|
||||
|
||||
Pour éviter ça, utilisez le serveur DHCP de votre routeur pour attribuer une adresse IP fixe.
|
||||
|
||||
Chaque appareil a une adresse physique dite « adresse MAC ».
|
||||
Pour fixer une IP, vous devez connaître l'adresse MAC de votre appareil (visible dans votre routeur quand il est connecté), et lui attribuer une IP fixe.
|
||||
C'est ce qu'on appelle un « bail DHCP fixe ».
|
||||
|
||||
Ainsi, l'IP de votre machine ne change jamais et vos règles de redirection de port restent valables.
|
||||
|
||||
| Variable | Description | Exemple |
|
||||
|---------------|----------------------------------|---------------------|
|
||||
| `IP` | IP locale fixe à attribuer | `192.168.1.50` |
|
||||
| `Adresse MAC` | Adresse physique de l'appareil | `5E:FF:56:A2:AF:15` |
|
||||
|
||||
Pour plus d'informations, consultez la documentation de votre routeur.
|
||||
@@ -0,0 +1,58 @@
|
||||
---
|
||||
title: Zone DNS
|
||||
description: Comprendre le fonctionnement du DNS, lire et éditer une zone DNS, et configurer des noms de domaine pour vos services auto-hébergés.
|
||||
---
|
||||
|
||||
|
||||
:ellipsis{left=0px width=40rem top=10rem blur=140px zIndex=60}
|
||||
|
||||
## Introduction
|
||||
|
||||
Lorsque vous naviguez sur un site, ou une application, des requêtes sont émises vers un ou des domaines afin d'afficher le contenu de votre page. Votre appareil ne connait pas les adresses IP de ces serveurs à joindre. Pour les connaitre, il va contacter un _serveur de nom_ (Domain Name Server) qui lui va lui répondre avec l'adresse IP la plus à jour pour le domaine de la requête.
|
||||
|
||||
La zone DNS, c'est une sorte de registre avec des panneaux qui redirige vos requêtes vers la bonne destination.
|
||||
|
||||

|
||||
|
||||
## La zone DNS
|
||||
|
||||
Lorsque vous réservez un domaine chez votre registrar (cloudflare, ovh...), ce registrar vous attribue une zone DNS que vous pouvez personnaliser.
|
||||
|
||||
Vous pouvez rentrer des _enregistrements_ dans cette zone DNS qui permettront d'orienter les requêtes au bon endroit. Vous trouverez [plus d'information ici](https://help.ovhcloud.com/csm/fr-dns-servers-general-information?id=kb_article_view&sysparm_article=KB0051661).
|
||||
|
||||
Exemple d'une zone DNS du domaine mondomaine.fr:
|
||||
|
||||
```
|
||||
@ IN SOA ns1.dns.me. dns.net. (2024051800 86400 3600 3600000 60)
|
||||
IN NS ns1.dns.me.
|
||||
IN NS ns2.dns.me.
|
||||
IN A 203.0.113.0
|
||||
www IN CNAME mondomaine.fr
|
||||
sousdomaine IN CNAME mondomaine.fr
|
||||
```
|
||||
|
||||
Dans cet exemple :
|
||||
|
||||
- `$TTL 3600` indique aux différents serveurs de noms de la planète que les enregistrement sont valides 1h (et qu'au-delà il faudra rev"rifier).
|
||||
- `IN SOA ns1.dns.me. dns.net. (2024051800 86400 3600 3600000 60)` indique que `ns1.dns.me` est le serveur dns principal, et les nombres sont des indications de rafraichissement.
|
||||
- `IN NS ns1.dns.me.` et `IN NS ns2.dns.me.` indique que `ns1.dns.me` et `ns2.dns.me` sont des serveurs de noms pour ce domaine.
|
||||
- `IN A 203.0.113.0` signifie que `mondomaine.fr` pointe vers l'IP `203.0.113.0`
|
||||
- `sousdomaine IN CNAME mondomaine.fr` signifie que `sousdomaine.mondomaine.fr` pointe vers `mondomaine.fr` et donc vers l'IP `203.0.113.0`.
|
||||
|
||||
Ainsi, si vous choisissez de pointer le domaine `mondomaine.fr` vers votre serveur, vous pouvez le faire en ajoutant un enregistrement `A` pointant vers l'IP publique de votre serveur.
|
||||
|
||||
::warning
|
||||
|
||||
__Attention :__ si votre serveur est hébergé chez vous :
|
||||
- l'IP publique est celle de votre box internet. Assurez-vous auprès de votre opérateur que cette IP est fixe ou configurez un [DDNS](https://aws.amazon.com/fr/what-is/dynamic-dns/).
|
||||
- assurez-vous d'avoir [redirigé le port 443 vers le port d'écoute de votre serveur](/general/networking/nat).
|
||||
::
|
||||
|
||||
Et si vous ajoutez un sous-domaine qui doit pointer vers votre serveur, vous pouvez utiliser un enregistrement `CNAME` vers `mondomaine.fr`.
|
||||
|
||||
::note
|
||||
|
||||
__Pourquoi ne pas utiliser un enregistrement `A` pour le sous-domaine ?__ Si votre sous domaine pointe sur le meme serveur que `mondomaine.fr`, il vaut mieux utiliser un enregistrement `CNAME` car en cas de changement d'IP du serveur, il n'y aura aucune autre manipulation à faire.
|
||||
::
|
||||
|
||||
La plupart des registrar proposent des interfaces plus lisbles pour modifier ces informations. Renseignez-vous auprès de la documentation de votre registrar.
|
||||
@@ -0,0 +1,225 @@
|
||||
---
|
||||
title: Samba
|
||||
description: Configurer Samba sur Debian pour partager des dossiers sur votre réseau local et y accéder depuis Windows, macOS ou Linux.
|
||||
---
|
||||
|
||||
|
||||
:ellipsis{left=0px width=40rem top=10rem blur=140px zIndex=60}
|
||||
|
||||
Samba est un protocole permettant d'accèder à un dossier situé sur un disque réseau. Il peut être configuré sous Mac, Windows ou Linux.
|
||||
|
||||
De nombreux tutorials existent pour configurer Samba sous windows ou sur un NAS type Synology, ici nous nous concentrons sur Debian.
|
||||
|
||||

|
||||
|
||||
## Créer et configurer un dossier réseau partagé
|
||||
::note
|
||||
|
||||
Ici, nous allons partager le dossier `/video` d'une machine distant que nous appelerons `machine-distante`. Nous accéderons à ce dossier par la machine nommée `machine-locale`. L'utilisateur de connexion au disque réseau sera `sambauser`.
|
||||
::
|
||||
|
||||
::steps{level="3"}
|
||||
### Installer le serveur samba
|
||||
|
||||
```bash [Terminal]
|
||||
sudo apt update && sudo apt upgrade
|
||||
sudo apt install samba smbclient cifs-utils
|
||||
```
|
||||
|
||||
### Créer le dossier `/video`
|
||||
|
||||
```bash [Terminal]
|
||||
sudo mkdir /video
|
||||
```
|
||||
|
||||
### Configuration du partage
|
||||
|
||||
Ensuite nous allons éditer le fichier `/etc/samba/smb.conf`
|
||||
|
||||
```bash [Terminal]
|
||||
sudo nano /etc/samba/smb.conf
|
||||
```
|
||||
|
||||
::tip{icon="" to="/serveex/files/file-browser-quantum"}
|
||||
✨ __Astuce :__ vous pouvez utiliser **File Browser Quantum** pour naviguer dans vos fichier et éditer vos documents au lieu d'utiliser les commandes du terminal.
|
||||
::
|
||||
|
||||
Localisez la variable `workgroup` et nommez votre workgroup, par exemple `workgroup = WORKGROUP`
|
||||
|
||||
Puis allez à la fin du fichier et collez la configuration suivante
|
||||
|
||||
```properties [smb.conf]
|
||||
[video]
|
||||
comment = Dossier video
|
||||
path = /video
|
||||
writable = yes
|
||||
guest ok = no
|
||||
valid users = @smbshare
|
||||
force create mode = 770
|
||||
force directory mode = 770
|
||||
inherit permissions = yes
|
||||
```
|
||||
|
||||
Enregistrez avec :kbd{value="Ctrl+O"} puis :kbd{value="Entrée"}, puis quittez avec :kbd{value="Ctrl+X"}.
|
||||
### Terminé !
|
||||
::
|
||||
|
||||
### Créer un utilisateur et un groupe pour Samba
|
||||
|
||||
Comme nous avons configuré un partage sécurisé, nous allons devoir créer un utilisateur et un groupe pour pouvoir y accéder à distance.
|
||||
|
||||
::steps{level="3"}
|
||||
### Créer le groupe
|
||||
|
||||
```bash [Terminal]
|
||||
sudo groupadd smbshare
|
||||
```
|
||||
|
||||
Nous allons maintenant permettre au groupe d'avoir le controle sur le dossier `/video`.
|
||||
|
||||
```bash [Terminal]
|
||||
sudo chgrp -R smbshare /video
|
||||
```
|
||||
|
||||
Et maintenant nous allons donner les permissions nécessaires aux dossiers et fichier hérités.
|
||||
|
||||
```bash [Terminal]
|
||||
sudo chmod 2775 /video
|
||||
```
|
||||
### Créer l'utilisateur
|
||||
|
||||
A présent nous allons ajouter un utilisateur nologin c'est à dire que cet utilisateur ne pourra pas se connecter sur le serveur pour faire des opérations, mais pourra tout de meme se connecter au service samba.
|
||||
|
||||
```bash [Terminal]
|
||||
sudo useradd -M -s /sbin/nologin sambauser
|
||||
```
|
||||
|
||||
Puis nous ajoutons l'utilisateur au groupe `sambashare` que nous avons créé précédemment.
|
||||
|
||||
```bash [Terminal]
|
||||
sudo usermod -aG smbshare sambauser
|
||||
```
|
||||
|
||||
Et nous allons configurer un mot de passe.
|
||||
|
||||
```bash [Terminal]
|
||||
sudo smbpasswd -a sambauser
|
||||
```
|
||||
|
||||
### Activer le compte Samba
|
||||
|
||||
```bash [Terminal]
|
||||
sudo smbpasswd -e sambauser
|
||||
```
|
||||
### Terminé !
|
||||
::
|
||||
|
||||
## Accéder à un dossier partagé
|
||||
|
||||
::steps{level="3"}
|
||||
### Installer les paquets nécessaires
|
||||
|
||||
```bash [Terminal]
|
||||
sudo apt update && sudo apt upgrade
|
||||
sudo apt install cifs-utils
|
||||
```
|
||||
|
||||
### Créer le dossier de destination
|
||||
|
||||
Nous allons créer un dossier sur notre serveur sur lequel sera monté le dossier partagé de notre `machine-distante`. C'est à dire que dans ce dossier nous retrouverons le contenu du dossier partagé de notre `machine-distante`. Ici nous appellerons ce dossier `/mnt/video`.
|
||||
|
||||
```bash [Terminal]
|
||||
sudo mkdir /mnt/video
|
||||
```
|
||||
|
||||
### Préparer le fichier .credentials
|
||||
|
||||
Afin de ne pas avoir systématiquement à rentrer notre utilisateur et mot de passe, nous allons créer un fichier `.credentials` stockant ces informations.
|
||||
|
||||
Nous allons le créer dans le dossier `/smb`.
|
||||
|
||||
```bash [Terminal]
|
||||
sudo mkdir /smb
|
||||
sudo nano /smb/.credentials
|
||||
```
|
||||
|
||||
Configurez comme suit :
|
||||
|
||||
```properties [.credentials]
|
||||
username=smbuser
|
||||
password=motdepasse
|
||||
```
|
||||
|
||||
* `smbuser` : L'utilisateur que nous avons configuré sur la `machine-distante`
|
||||
* `motdepasse` : Le mot de passe que nous avons configuré sur la `machine-distante`
|
||||
|
||||
Enregistrez avec :kbd{value="Ctrl+O"} puis :kbd{value="Entrée"}, puis quittez avec :kbd{value="Ctrl+X"}.
|
||||
|
||||
Nous allons modifier les permissions du dossier afin que seul le propriétaire puis lire et écrire dans ce fichier.
|
||||
|
||||
```bash [Terminal]
|
||||
sudo chmod 600 /smb/.credentials
|
||||
```
|
||||
|
||||
### Monter le dossier partagé
|
||||
::warning
|
||||
__Attention :__ Si vous utilisez un pare-feu comme ufw, vous devez ajouter une règle pour autoriser votre machine distante à accéder à votre partage.
|
||||
```bash [Terminal]
|
||||
sudo ufw allow from <ip-de-la-machine-distante> to any app Samba
|
||||
```
|
||||
::
|
||||
A présent nous allons monter le dossier.
|
||||
|
||||
```bash [Terminal]
|
||||
sudo mount -t cifs -o credentials=/smb/.credentials //ip-machine-distante/video /mnt/video
|
||||
```
|
||||
|
||||
Remplacez `ip-machine-distante` par l'adresse IP de votre `machine-distante`
|
||||
|
||||
Vérifiez que cela a fonctionné en tapant :
|
||||
|
||||
```bash [Terminal]
|
||||
sudo mount -t cifs
|
||||
```
|
||||
|
||||
Vous verrez différentes informations qui confirmerons le succès du montage.
|
||||
|
||||
Et voilà, à présent vous accédez au dossier /video de `votre machine-distante`, depuis votre `machine-locale` !
|
||||
|
||||
### (Optionnel) Automatiser le montage au démarrage
|
||||
|
||||
Par défaut, les dossiers partagés ne sont pas connectés automatiquement au redémarrage. Pour automatiser cet aspect, nous allons modifier le fichier `/etc/fstab`.
|
||||
|
||||
D'abord, sauvegardons notre fichier `fstab`.
|
||||
|
||||
```bash [Terminal]
|
||||
sudo cp /etc/fstab /etc/fstab.bak
|
||||
```
|
||||
|
||||
Puis nous allons ajouter une ligne à la fin du fichier comportant les informations de montages dans le fichier `fstab`.
|
||||
|
||||
```bash [Terminal]
|
||||
sudo echo //ip-machine-distante/video /mnt/video cifs _netdev,nofail,credentials=/smb/.credentials,x-systemd.automount,x-systemd.device-timeout=15 0 0 >> /etc/fstab
|
||||
```
|
||||
|
||||
Redémarrez.
|
||||
|
||||
```bash [Terminal]
|
||||
sudo reboot
|
||||
```
|
||||
|
||||
Une fois redémarré, vérifiez que le montage est correct
|
||||
|
||||
```bash [Terminal]
|
||||
sudo mount -t cifs
|
||||
```
|
||||
### Et voilà !
|
||||
::
|
||||
|
||||
::tip
|
||||
__Démonter le dossier partagé__
|
||||
|
||||
```bash [Terminal]
|
||||
sudo umount -t cifs /mnt/video
|
||||
```
|
||||
::
|
||||
Reference in New Issue
Block a user