This repository has been archived on 2024-03-03. You can view files and clone it, but cannot push or open issues or pull requests.
adlin/tutorial/nat/netfilter.md

156 lines
4.8 KiB
Markdown
Raw Normal View History

2018-03-30 17:00:54 +00:00
\newpage
2021-03-22 00:07:10 +00:00
Routage
=======
2018-03-30 17:00:54 +00:00
2021-03-22 00:07:10 +00:00
Votre entreprise dispose d'un modeste routeur utilisant
[OpenWrt](https://openwrt.org/). Il s'agit d'une petite distribution Linux
mettant à disposition une interface web pour configurer son routeur
facilement[^facilement].
2018-03-30 17:00:54 +00:00
2021-03-22 00:07:10 +00:00
[^facilement]: Si vous préférez, ce TP existe aussi en utilisant une simple
distribution Debian comme routeur. C'est tout aussi efficace et les mêmes
technologies sont en jeu. Demandez à votre professeur l'ISO si vous êtes
2022-05-12 01:14:29 +00:00
intéressés !
2021-03-22 00:07:10 +00:00
Au sein du noyau Linux, le [projet `netfilter`](https://netfilter.org/) est
l'implémentation de pare-feu standard. Il s'agit d'un mécanisme de filtrage des
paquets réseau basés sur des règles, chargées par l'espace utilisateur dans le
noyau. On utilise pour cela les programmes `nft` (du projet `nftables`), ou de
manière historique `iptables`.
2018-03-30 17:00:54 +00:00
Les deux projets ont une manière de fonctionner très similaire, mais il est
important de ne pas les utiliser en même temps, sous peine de voir apparaître
2022-05-12 01:14:29 +00:00
des problèmes incompréhensibles à déboguer, plus ou moins aléatoirement.
2018-03-30 17:00:54 +00:00
2021-03-22 00:07:10 +00:00
## Réseau fonctionnel ?
2018-03-30 17:00:54 +00:00
2019-03-26 23:38:20 +00:00
Première étape : avez-vous vérifié l'état du réseau sur le routeur ?
2018-03-30 17:00:54 +00:00
2019-03-26 23:38:20 +00:00
* Peut-il accéder à Internet ?
* Peut-il accéder aux serveurs ?
* Peut-il accéder aux stations de travail ?
2018-03-30 17:00:54 +00:00
Dans la configuration initiale attendue de la machine virtuelle, les réponses
2019-03-26 23:38:20 +00:00
que vous devriez obtenir sont :
2018-03-30 17:00:54 +00:00
* Oui, le routeur a accès à Internet, mais ne peut pas résoudre de noms de
domaine.
* Oui, les serveurs répondent aux ping et sont joignables.
* Non, les stations de travail n'obtiennent pas d'IP, on ne peut pas les
contacter.
2021-03-22 00:07:10 +00:00
## Donner accès à Internet
2018-03-30 17:00:54 +00:00
Votre administrateur système vous assure que le serveur de noms est bien lancé
et configuré comme demandé.
Deux éléments de configuration vont devoir être mis en place sur le routeur
pour corriger[^fix] cette situation.
2019-03-26 23:38:20 +00:00
[^fix]: Oui, il s'agit bien ici de non configuration : ne cherchez pas de
2018-03-30 17:00:54 +00:00
mesquinerie de la part de l'auteur du TP.
Après cette configuration, toutes les machines (serveurs et stations de
travail) pourront accéder à Internet.
2019-03-26 23:38:20 +00:00
Test à passer :
2018-03-30 17:00:54 +00:00
<div lang="en-US">
```
router$ dig +short @172.23.42.2 adlin.nemunai.re
82.64.31.248
```
</div>
2021-03-22 00:07:10 +00:00
Vous pouvez utiliser, par exemple `tcpdump`, pour comprendre ce qu'il se passe
2022-05-12 01:14:29 +00:00
sur votre routeur :
2021-03-22 00:07:10 +00:00
<div lang="en-US">
```
router# tcpdump -i ethsrv
router# tcpdump -i eth0 udp and port 53
```
</div>
2022-04-01 03:47:37 +00:00
::::: {.warning}
Le serveur DNS résolveur met en cache les problèmes qu'il rencontre. Il vous
faudra sans doute patienter une bonne minute, une fois que vous aurez la bonne
configuration, afin qu'il tente à nouveau de contacter un serveur de noms pour
2022-04-01 03:47:37 +00:00
faire une résolution. C'est un comportement normal.\
2022-04-01 03:47:37 +00:00
Si vous êtes impatient, vous pouvez aussi vous connecter sur la machine
2022-05-12 01:14:29 +00:00
hébergeant le résolveur afin de le redémarrer manuellement :
2022-04-01 03:47:37 +00:00
```sh
router$ ssh root@ns
resolvsrv$ service unbound restart
```
:::::
2021-03-22 00:07:10 +00:00
## Accéder aux autres serveurs du parc
Depuis le routeur, vous pouvez vous SSH en utilisant le nom d'hôte attribué aux
2022-05-12 01:14:29 +00:00
machines :
2021-03-22 00:07:10 +00:00
<div lang="en-US">
- `ssh root@matrix`
- `ssh root@ns-auth`
2021-03-23 11:56:47 +00:00
- `ssh root@web`
2021-03-22 00:07:10 +00:00
</div>
2018-03-30 17:00:54 +00:00
2021-03-22 00:07:10 +00:00
Depuis l'extérieur, vous devez utiliser le routeur comme *bastion*. Avec SSH,
utilisez l'option `-J` pour désigner une machine intermédiaire qui servira à
2022-05-12 01:14:29 +00:00
accéder à la machine cible :
2021-03-22 00:07:10 +00:00
<div lang="en-US">
```
42sh$ ssh -J root@$EXT_ROUTER root@172.23.42.3
```
</div>
## Exposer les services
### Localement
2018-03-30 17:00:54 +00:00
Vous avez compris comment vos machines peuvent accéder à Internet sans avoir
pour autant d'IP routable sur Internet. Cependant, si cela répond parfaitement
à une utilisation de type station de travail, vos serveurs web doivent être
accessibles sur Internet.
2020-04-02 14:16:24 +00:00
En utilisant une règle de `netfilter`, rendez vos trois serveurs web accessibles
2018-03-30 17:00:54 +00:00
depuis l'interface externe du routeur. Après configuration, depuis un
2022-05-12 01:14:29 +00:00
navigateur sur votre poste, vous devriez pouvoir accéder à :
2018-03-30 17:00:54 +00:00
<div lang="en-US">
2022-05-12 01:14:29 +00:00
* `http://$EXT_ROUTER_IP:8000/` : Vitrine
* `http://$EXT_ROUTER_IP:8080/` : Miniflux
* `http://$EXT_ROUTER_IP:8008/` : Matrix
2018-03-30 17:00:54 +00:00
</div>
2022-04-29 14:28:50 +00:00
::::: {.warning}
Il s'agit là seulement d'un test avec l'IPv4 de votre routeur. Il n'est pas
encore demandé de faire cela sur l'IPv6 routable sur Internet.
2021-03-22 00:07:10 +00:00
2022-04-29 14:28:50 +00:00
Il ne s'agit donc pas d'utiliser l'IP de Maatma, vous devez tester cela sur
votre propre installation, avec l'IPv4 donné par l'interface `eth0`.
:::::
2018-03-30 17:00:54 +00:00
2021-03-22 00:07:10 +00:00
### Utiliser Miniflux
2018-03-30 17:00:54 +00:00
2020-04-02 14:16:24 +00:00
Utilisez le nom d'utilisateur `adeline` pour vous connecter à
miniflux. N'oubliez pas de changer le mot de passe avant que quelqu'un
2022-05-12 01:14:29 +00:00
d'autre s'en charge à votre place !
2018-03-30 17:00:54 +00:00
2020-04-02 14:16:24 +00:00
Si vos serveurs ont bien accès à Internet, vous pourrez mettre à jour
la liste des flux pré-enregistrés dans miniflux, afin de faire un peu
2022-05-12 01:14:29 +00:00
de veille !