Les interfaces réseau sont les portes de votre ordinateur : elles lui permettent de communiquer avec le reste du monde.
Votre machine a donc plusieurs portes mais, ce que vous ne savez peut-être pas, c'est que chacune a une adresse différente. En plus de votre
adresse publique, accessible en vous connectant au site
whatsmyip, vous avez donc aussi plusieurs
adresses locales. Dans ce chapitre, nous ne parlerons que de ces dernières.
Tapez
ifconfig dans un terminal pour en savoir plus sur vos interfaces réseau.

Même sur un système simple, il y a toujours au moins deux interfaces réseau. Sur la capture d'écran ci-dessus, vous voyez
rl0 et
lo0.
Pourquoi ces deux là ? J'en compte cinq, moi.
fwe0,
fwip0 et
plip0 ne sont pas de vraies interfaces. Vous voyez que dans leur liste de drapeaux (flags), il n'y a pas le drapeau UP. Et elles n'ont pas non plus d'adresse locale (inet).
lo0 (adresse locale
127.0.0.1) correspond à ce qu'on appelle la
boucle locale : c'est une connexion entre l'ordinateur et... lui-même. Eh oui ! Je ne sais pas quel âge a votre machine, mais sachez qu'il lui arrive fréquemment de parler toute seule.

Cela vous a déjà servi pour communiquer avec CUPS.
L'autre interface (adresse locale
192.168.1.38 dans mon cas) n'a pas forcément le même nom chez vous. Tout dépend du modèle de votre carte réseau. Chez moi, c'est
rl0. Chez vous, c'est peut-être
em0,
re0 ou autre chose. Dans la suite du chapitre, chaque fois que j'écrirai
rl0, rectifiez par le nom de votre interface à vous.

Vous voyez sur ce schéma qu'il n'y a pas vraiment de barrière entre
internet et les précieuses données que renferme votre ordinateur. La moindre des choses, c'est d'installer un
pare-feu, qui filtrera les données. Et sous FreeBSD, il y a une deuxième ligne de défense : la
prison.
Vous allez installer un
serveur web sur votre ordinateur, afin de créer votre propre site. Bientôt, les visiteurs afflueront dessus par milliers (mais si, soyez un peu optimistes

). Comment être certain que toutes ces requêtes sur votre serveur n'endommageront

pas le reste de votre machine ? Ou encore qu'un pirate

qui parviendrait à s'introduire dans le serveur ne puisse pas aller plus loin ?
Réponse : en établissant une cloison étanche entre le serveur et le reste. C'est à dire, en mettant le serveur dans une
prison, qui aura sa propre interface réseau, différente de celles de votre système principal.

Le problème, c'est qu'il faut maintenant trier les données en provenance d'internet. Il y en a qui ne doivent pas passer, d'autres qui doivent être acheminées vers votre serveur HTTP (donc vers lo1) et d'autres encore sont destinées à votre système principal via rl0. Comment faire pour s'y retrouver ?
Pensez aux vrais courriers papiers. Chacun comporte l'adresse de son destinataire, un contenu et l'adresse de l'expéditeur. De même, chaque paquet comporte, en plus de son contenu, un ensemble de quatre numéros, qu'on appelle un socket. Parmi ces quatre numéros, il y a l'adresse IP de l'ordinateur d'origine, celle de l'ordinateur destinataire,...
Bah, c'est bon, alors... Si l'adresse IP du destinataire est 192.168.1.38, on envoie vers rl0 et si c'est 127.0.0.1, on envoie vers lo1.
Si seulement la vie pouvait être aussi simple ! Mais l'adresse de destination indiquée dans le
paquet est en réalité votre adresse
publique ! Ce n'est donc ni l'adresse locale de
rl0 ni celle de
lo1. Impossible de s'en servir pour faire le tri.

Heureusement,

le
socket comporte deux autres informations : des numéros de
ports.
C'est bon ? Pas trop embrouillés ?

Je vous explique.
Les
ports sont numérotés. Par exemple, les
ports 20 et 21 concernent les communications
FTP, dont nous avons déjà parlé. Vous connaissez aussi 631, le
port de CUPS. 22 est consacré aux connexions sécurisées de type
SSH. Les serveurs
DHCP, qui attribuent automatiquement les adresses aux autres machines, se servent des
ports 67 et 68.
Votre futur serveur HTTP, quant à lui, utilisera les
ports 80 et 443.
Donc, lorsqu'un internaute cherchera à contacter votre futur serveur web, il lui enverra des
paquets dont les
sockets comprendront :
- Votre adresse IP publique.
- Son adresse IP publique.
- Le numéro de port de votre serveur web.
- Le numéro de port du programme expéditeur.
La solution, par conséquent, c'est de demander à votre
pare-feu de détourner vers
lo1 tous les
paquets destinés aux
ports 80 et 443.

Bon, là, j'ai un peu simplifié. Il est évident que votre prison pourra recevoir d'autres communications que celles des ports 80 et 443, notamment quand c'est elle qui cherchera à joindre un serveur extérieur.