Adresses réseau

Pour les pressés : c'est quoi une adresse réseau ?

Avant de définir une adresse IP (Internet Protocol), soyons sérieux deux minutes et parlons du Père Noël 😁. Chaque enfant sait très bien qu'il doit envoyer sa liste de cadeaux à "Route du Ciel, Pôle Nord". S'il veut une réponse, il notera sa propre adresse derrière l'enveloppe.

C'est le même principe pour l'ordinateur de votre collègue relou qui vous montre une vidéo de chat sur Youtube : l'ordinateur sait où trouver Youtube, et Youtube sait à quelle adresse envoyer la vidéo.

Chaque appareil connecté à Internet dispose de son adresse : l'adresse IP. Cependant, les ordinateurs n'ont pas le même sens de la poésie que les enfants. Les adresses utilisées dans un réseau sont des séries de chiffres, par exemple 192.0.2.2. Nettement moins classe que l'adresse du Père Noël 🎅.

D'accord, mais comment font les appareils pour connaître l'adresse d'un site? Il y a un annuaire ?

Quelle idée intéressante. C'est effectivement prévu, lisez la partie sur les noms de domaine (DNS) pour en savoir davantage.

Il faut distinguer l'IP publique de l'IP locale (ou privée). La plupart du temps, pour vous connecter à Internet, votre fournisseur d'accès vous a donné une box. Celle-ci fait le relais entre internet et votre ordinateur. Cela donne :

explication ip locale ou publique

Source de l'image : https://okeanos.grnet.gr

S'il faut retenir quelque chose, c'est :

Pour les besoins de l'auto-hébergement, il est nettement plus pratique que cette dernière adresse soit fixe. Certains fournisseurs d'accès refusent de vous en donner.

Il existe des moyens de contourner ce problème avec une IPv6, un VPN (décrit plus loin) ou un DNS dynamique, mais vous vous faciliterez vraiment la vie en prenant votre abonnement internet chez un fournisseur qui accepte de vous fournir une IP fixe.

Rappel des concepts

Pour construire un serveur, il vous faut impérativement configurer correctement sa configuration réseau. Vous avez en particulier besoin d'adresses (publiques et privées) stables, ainsi que de connaître l'adresse de votre passerelle ou routeur.

Vous pouvez passer ce chapitre si vous n'êtes pas à l'aise et commencer vos premiers essais avec une configuration automatique avec "dhcp" puis revenir ici une fois que vous vous êtes habitués. Dans tous les cas, les différentes parties se complètent, vous voudrez donc peut-être passer de l'une à l'autre quitte à les relire 2 fois. Courage, ce n'est pas aussi compliqué que ça en a l'air ☺.

Voici quelques précisions ou rappels qui vous permettront de mieux appréhender la suite.

Adresse publique, adresse privée/locale

Tout d'abord sachez que votre fournisseur d'accès ne vous connecte sûrement pas directement sur le réseau internet, mais plutôt par ce qu'on appelle du NAT. Si vous utilisez un routeur (box), ce qui est probablement le cas, alors cet appareil (on va beaucoup parler de lui plus bas) va, lui, recevoir une adresse Internet publique.

Avoir une adresse publique signifie que les gens qui naviguent sur le net peuvent contacter cette adresse. Elle est routable et unique.

Le routeur va alors distribuer des adresses privées sur votre réseau local. Cela signifie que vous avez chez vous plusieurs adresses privées - une pour chaque appareil connecté sur votre réseau : TV connectée, smartphone, console de jeu, imprimante... - qui se partagent une seule adresse publique.

OK ? Bien, on continue 😊.

Les adresses privées peuvent être dans trois rangées:

Votre adresse privée, ou locale, c'est celle que votre ordinateur utilise, celle qu'il connait.

Pour trouver l'IP locale d'un appareil, de votre serveur en l'occurence, appelez la commande "ifconfig" que l'on renvoie à "grep" pour filtrer ce qui nous intéresse seulement ( "|" s'obtient avec Altgr-6) :

# ifconfig |grep inet

Vous verrez apparaître des lignes comme celles-ci :

inet6 ::1 prefixlen 128
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x3
inet 127.0.0.1 netmask 0xff000000
inet 192.168.1.2 netmask 0xffffff00 broadcast 192.168.1.255
inet6 fe80::feaa:14ff:fe65:5f86%re0 prefixlen 64 scopeid 0x1
C'est quoi tous ces trucs incompréhensibles? 😲

On va y aller petit à petit ensemble 😉

Les lignes commençant par "inet6" décrivent des IPv6 et "inet" des IPv4.

Votre adresse publique, c'est celle que vous affichez pour la navigation internet. C'est cette adresse que connaissent les différents sites web que vous fréquentez. Et justement, si vous ne la connaissez pas, il vous suffit d'aller voir par exemple :

ipaddress
ipecho
ifconfig.me
lehollandaivolant.net
wizcase

Si quelqu'un veut visiter votre site web, il ne connaît que votre IP publique. Or, cette IP publique renvoie vers votre box (routeur), les données ne sont pas dessus mais sur votre serveur. Il doit donc rediriger le visiteur vers l'IP locale de votre serveur. La box est un routeur qu'il faut configurer. Ça tombe bien, c'est expliqué juste après. 😉

Le routeur

Le routeur, c'est la box internet. On parle aussi de passerelle (gateway en anglais).

D'un côté du routeur, on a donc une adresse internet publique (que dans l'ensemble de cette documentation, on a supposée fixe, comme dit juste au-dessus), de l'autre on a une adresse privée. Cette dernière adresse est très importante : c'est celle que votre serveur (ainsi que votre ordinateur personnel, votre smartphone, votre grille-pain connecté…) doit connaître pour atteindre internet.

Dans les faits, quand quelqu'un dans votre réseau doit contacter un site internet, il passera par cette adresse, qui s'avère donc critique, et qui plus est un goulet d'étranglement.

C'est également le routeur qui fait les redirections de ports.

Pour trouver l'adresse de votre "gateway", vous pouvez vous connecter en dhcp dans un premier temps puis entrer la commande suivante :

# route -n show
Routing tables

Internet:
Destination        Gateway            Flags   Refs      Use   Mtu  Prio Iface
default            192.168.1.1      UGS       35     4827     -     8 re0  
224/4              127.0.0.1          URS        0       13 32768     8 lo0  
127/8              127.0.0.1          UGRS       0        0 32768     8 lo0  
127.0.0.1          127.0.0.1          UHhl       9      969 32768     1 lo0  
...

La première ligne vous donne la réponse : 192.168.1.1 dans l'exemple.

Pour obtenir votre "gateway" en IPv6, vous pouvez prendre le préfixe qui vous a été attribué (le "subnet") et le terminer par "::1". Par exemple, pour ce serveur, l'IP est " 2a01:e0a:2b8:ca70::1bad" et la gateway " 2a01:e0a:2b8:ca70::1"

Nom de machine

Chaque appareil sur le réseau a un nom (qu'on appelle nom d'hôte, ou nom de machine. Certaines documentations parlent de nom de réseau de la machine).

Sur les éléments les plus sophistiqués (les vrais ordinateurs), on peut changer ce nom. De nombreux appareils actuels sont toutefois verrouillés (essayez de changer le nom de machine d'un smartphone Android...). Ça n'a l'air de rien mais avoir un nom de machine permet de reconnaître les appareils effectivement présents et fonctionnels dans le réseau.

Le nom de machine d'un ordinateur tournant sous OpenBSD se définit dans /etc/myname, où sera juste inscrit son nom complet. Par exemple:

serveur.chezmoi.tld

dhcp

Pour configurer l'adresse locale, vous pouvez utiliser le client dhcp qui vient par défaut avec chaque installation OpenBSD.

Pour ce faire, il suffit d'indiquer "dhcp" dans le fichier de configuration de l'interface réseau de votre serveur. Ce fichier est /etc/hostname.if avec "if" le nom de ladite interface. Si vous avez sélectionné dhcp lors de l'installation, alors il existe déjà.

toto@maitre:/home/toto cat /etc/hostname.re0
dhcp

Suivant la configuration du routeur que vous utilisez (configuration que vous ne pouvez pas forcement changer facilement), il peut être nécessaire d'utiliser DHCP pour obtenir de la connectivité sur votre serveur (le routeur pourrait refuser de relayer les connexions à une machine qui n'est pas dans sa table DHCP).

Si vous obtenez votre configuration réseau par DHCP, alors il n'est pas nécessaire de connaître ou de renseigner l'adresse de votre routeur.

Configuration statique

La configuration statique d'une machine s'avère plus complexe, mais on a davantage de maîtrise dessus (on peut par exemple assigner plusieurs adresses si on l'estime nécessaire).

On configure d'abord l'interface voulue :

toto@maitre:/home/toto $ cat /etc/hostname.re0 
inet            192.168.1.2    255.255.255.0     192.168.1.255
inet   alias    192.168.1.9    255.255.255.0     192.168.1.255
## et autant d'autres que vous le voulez…
# Dans l'ordre : inet (alias) ip_locale     masque     passerelle
up

Puis on indique l'adresse du routeur (son adresse privée, celle dont j'ai dit plus haut à quel point elle est importante). Cette adresse se configure dans le fichier /etc/mygate. Il peut y avoir plusieurs pour indiquer la passerelle en ipv6 et en ipv4:

192.168.1.1
2001:db8::1

Vous devez connaître l'adresse de votre passerelle. Cette adresse n'est pas standard, en revanche les constructeurs ou les FAI ont souvent des réglages par défaut qui sont connus et qu'on peut retrouver sur le web. Il est également possible d'utiliser DHCP au début du processus de construction du serveur, puis mettre la configuration en statique quand on a pris la main et qu'on commence à vouloir faire des trucs sophistiqués.

Une fois ces deux fichiers configurés, l'interface sera prête et mise en service automatiquement à chaque démarrage de la machine. Notez également que vous pouvez combiner des éléments de configuration dynamique (dhcp) avec de la configuration statique.

Vous pouvez tester votre bonne connexion au net grâce à la (célèbre) commande ping.

Tout d'abord "pingez" votre passerelle :

ping 192.168.1.1

Puis "pinger" le serveur de l'APNIC par exemple :

ping 1.1.1.1

Si tout va bien, alors votre serveur est connecté au net.

APNIC

IPv6

IPv6 c'est le nouveau protocole IP. Aujourd'hui, ça devient essentiel de le maîtriser un petit peu. Sachez que si vous n'avez pas encore d'ipv6 chez vous, il est probable que vous en ayez d'ici un ou deux ans. Mieux vaut être préparé pour en tirer le meilleur profit non ?

Le principal avantage est que votre machine est directement accessible de l'extérieur, plus besoin de NAT par le routeur pour rediriger un visiteur.

La configuration reprend les grands principes d'ipv4, mais avec des différences sur les méthodes et la syntaxe:

toto@maitre:/home/toto $ cat /etc/hostname.re0 
inet...

inet6   2001:db8:1:1::2    64 # adresse
inet6   autoconf              # utilisation des adresses 
                              # SLAAC automatiques

up

Les adresses SLAAC ont l'avantage d'être stables (si on utilise pas l'attribut autoconfprivacy), ce qui est exactement ce dont vous avez besoin sur un serveur. En revanche, elles sont encombrantes et peu mémorisables par un être humain.

Vous pouvez aussi utiliser les adresses ULA, qui sont des adresses locales pour votre réseau. Elles permettent de configurer un réseau de manière permanente sans avoir besoin de tout renuméroter en cas de changement de FAI. Elles sont également non-routables, ce qui veut dire que personne ne peut les attaquer. Enfin, elles constituent un excellent moyen de commencer à mettre en place votre réseau en attendant d'avoir vos adresses publiques définitives (si vous n'en avez pas encore). Vous pouvez lire davantage à propos de ces adresses en suivant ce lien:

https://www.22decembre.eu/2016/12/02/ula-fr/

Ces divers paramètres se combinent de manière adéquate les uns avec les autres. Ainsi, vous pouvez tout à fait utiliser des adresses SLAAC et des adresses statiques.

En ipv6, il n'est plus question de redirection de ports (et ça c'est cool 😊) : votre serveur est directement connecté à internet. Soyez donc prudent et vérifiez bien le pare-feu de votre serveur.