Partons sur de bonnes bases §

Vous êtes sur le point de plonger dans l'univers de l'auto-hébergement.

Ce document va vous aider à héberger chez vous ou sur un serveur dédié certains services malheureusement trop souvent confiés à des tiers.

L'objectif est de vous guider dans la découverte de ces notions le plus simplement possible tout en apprenant de nouvelles choses 😎.

Bien sûr, vulgariser l'auto-hébergement entraîne des compromis. Si lire les notions évoquées ici vous a donné envie d'en apprendre davantage, alors l'objectif est atteint 😊.

Pourquoi choisir OpenBSD? §

Afin que ce voyage soit le plus confortable possible, nous décrirons l'utilisation du système OpenBSD dans sa dernière version stable.

https://www.openbsd.org

Ce dernier est réputé pour être sûr.

Il est aussi, à mon avis, nettement plus simple à configurer que d'autres systèmes. En effet, de nombreux services sont déjà intégrés et se configurent avec une syntaxe similaire.

Le site "why OpenBSD rocks" recense quelques raisons expliquant pourquoi OpenBSD est génial:

https://why-openbsd.rocks/fact/

Il paraît que la documentation d'OpenBSD est de grande qualité. À quoi va servir ce manuel alors ?

C'est vrai, les pages man sont excellentes : je vous encourage à vous y référer dès que possible.

Cette documentation est un point d'entrée qui a l'avantage d'être francophone. J'espère aussi qu'elle permettra de faciliter certains concepts plus fondamentaux en y ajoutant quelques astuces.

Vous verrez que s'auto-héberger n'est finalement pas si difficile et consiste en grande partie à modifier du texte dans des fichiers. Cette démarche devrait donc être accessible à tous.

C'est parti !

L'auto-hébergement : c'est quoi ? §

La plupart des sites web que vous avez l'habitude de consulter (vos courriels, les réseaux sociaux...) sont hébergés sur des ordinateurs quelque part dans le monde. Ces derniers ne servent qu'à proposer des services et du contenu à d'autres ordinateurs. On les appelle donc des "serveurs". La seule différence notable pour la plupart des gens est qu'ils ne sont en général pas reliés à un écran.

Lorsque vous voulez consulter vos e-mails, votre client mail (le webmail, Thunderbird...) va chercher sur un serveur tous vos messages. Une COPIE de ces derniers est alors téléchargée vers votre ordinateur. C'est comme si pour lire votre courrier postal, vous deviez aller dans une agence pour demander au facteur :

Y a-t-il du courrier pour moi ?

Oui, une carte postale de ta maman. Je te la donne dès que la photocopieuse a terminé de l'imprimer.

Bien sûr, on peut demander au bureau de poste de détruire la copie originale qu'il possède de vos messages et espérer qu'il n'avait pas fait une autre copie ailleurs.

Autant dire que cette situation nous semble inacceptable. C'est pourtant ainsi que ça se passe avec votre fournisseur de messagerie ou lorsque vous consultez un site web.

Autant devenir son propre bureau de poste 😁.

À l'origine, chacun pouvait constituer un nouveau nœud au web. Aujourd'hui, la majeure partie de notre utilisation d'internet dépend de sociétés tierces peu soucieuses de votre vie privée.

Avantages de l'auto-hébergement §

Héberger chez soi les services que l'on utilise présente plusieurs avantages :

Prétendre que votre droit à une sphère privée n'est pas important parce que vous n'avez rien à cacher n'est rien d'autre que dire que la liberté d'expression n'est pas essentielle car vous n'avez rien à dire. -- E. Snowden

Lire à propos de l'argument "Je n'ai rien à cacher":

https://jenairienacacher.fr/

https://web.archive.org//web/2/https://jenairienacacher.fr/

Inconvénients de l'auto-hébergement §

Cependant, cette démarche n'est pas sans inconvénients :

À propos du contenu et de la syntaxe de cette documentation §

Afin de bien se comprendre et réussir à vous auto-héberger sans tracas, on suppose dans ce document que :

Et la documentation officielle ? §

Ce document ajoute des éléments par rapport à la FAQ officielle d'OpenBSD, en simplifie d'autres et parfois en traduit tout simplement.

FAQ OpenBSD

Gardez en tête qu'en cas de doute, seule la documentation et les manpages officielles font foi.

Alors n'hésitez pas à les consulter en priorité et en complément 😉.

Sinon, je tiens à jour une archive à télécharger de la FAQ officielle pour ceux qui souhaitent la garder sous le coude:

/pub/openbsd-faq.tgz

Quel matériel utiliser ? §

Vous n'avez pas besoin d'une puissance phénoménale pour vous auto-héberger. Commencez plutôt à vous faire la main avec une machine récupérée car trop peu puissante pour une utilisation bureautique.

Si vous souhaitez investir dans du nouveau matériel, je vous conseille de vérifier la compatibilité avec OpenBSD. Ça évite une mauvaise surprise et un coup de pas-de-chance 😉. Pour cela, le plus simple reste de demander aux utilisateurs d'OpenBSD.

La liste du matériel supporté, classé par architecture, est disponible sur la FAQ officielle.

La liste du matériel supporté, classé par architecture, est disponible sur la FAQ officielle :

https://www.openbsd.org/faq/faq1.html#Platforms

Mon petit coup de cœur ? Les architectures arm car très peu gourmandes en énergie:

https://www.openbsd.org/arm64.html

Je recommande aussi la carte APU2 dont je parle plus loin, (apu2d0), économe, peu chère et fiable. C'est sur ce matériel que cette documentation est hébergée. 😊

Enfin, jetez un œil au projet bsd-hardware et n'hésitez pas à y participer:

https://bsd-hardware.info/?d=OpenBSD

Quid d'OpenBSD sur Raspberry Pi ? §

À partir de la version 3 du raspberry pi en choisissant l'architecture arm64, OpenBSD peut supporter ce matériel. Tout est expliqué sur la page précédente puisqu'il faut avoir quelques fichiers permettant le bon démarrage du RPi et il est possible de les placer sur une clé USB.

Vous trouverez encore davantage de conseils sur le fichier INSTALL.amd64:

https://ftp.openbsd.org/pub/OpenBSD/7.4/arm64/INSTALL.arm64

Exemple d'installation d'OpenBSD §

Cette section est là pour vous rassurer si besoin, car l'installateur est vraiment très simple.

Pour des informations plus complètes, n'hésitez pas à consulter la documentation officielle concernant l'installation d'OpenBSD:

https://www.openbsd.org/faq/faq4.html

Par la suite, vous changerez "XX" par le numéro de version d'OpenBSD souhaité/utilisé. Par exemple "72" pour OpenBSD 7.2.

Préparation de l'installation §

On télécharge tout d'abord l'image d'installation de la dernière version d'OpenBSD. (Voir les miroirs de téléchargement).

Voir les miroirs de téléchargement:

https://www.openbsd.org/ftp.html

Choisissez une image ".iso" pour une installation à partir d'un CD.

Je décrirai ci-dessous l'installation à partir d'une clé USB : je télécharge donc "installXX.img".

N'oubliez pas de vérifier la somme de contrôle. Téléchargez le fichier SHA256 listé dans le lien ci-dessus, puis à partir d'un système OpenBSD, utilisez cette commande :

signify -Cp /etc/signify/openbsd-XX-base.pub -x SHA256.sig install*.img

Sinon, sur un autre système, calculez la somme de contrôle avec sha256sum puis comparez avec le contenu du fichier SHA256.

Pour préparer une clé USB, utilisez l'outil dd (remplacez /dev/sdb par le chemin vers votre clé USB). Par exemple sur un système GNU/Linux (remarquez le "M" majuscule):

# dd if=/location/install*.img of=/dev/sdb bs=1M 

À partir d'OpenBSD :

# dd if=/location/install*.img of=/dev/rsd1c bs=1m 

La commande dd va reproduire le contenu de l'image sur la clé USB. Pour éviter d'avoir à écrire le nom exact de l'image d'installation, on utilise le symbole "*" qui veut dire "n'importe quelle suite de caractères". Les autres options servent au bon fonctionnement du transfert.

Bien sûr, vous remplacerez "sdb" ou "sd1" par ce qui correspond à votre clé USB. Vérifiez avec la commande "dmesg" juste après avoir inséré votre clé USB.

Vous pouvez récupérer un outil graphique nommé "etcher" pour préparer la clé USB plus sereinement si la commande dd ne vous plaît pas.

https://etcher.io/

Les utilisateurs de Windows pourront faire la même chose avec le logiciel "rufus".

https://rufus.akeo.ie/

Et hop, on insère tout ça dans le lecteur ou port USB du PC, puis on redémarre sur le bon disque ("boot" en anglais).

Repérez les messages qui s'affichent du type "F12 : Boot Menu" ou "F7 : Setup" indiquant les touches qui permettent de faire apparaître les fenêtres (bleues) des tableaux de réglage du BIOS. On y indique souvent le lecteur de CDROM ou la clef USB comme média de démarrage numéro 1.

En cas d'erreur au cours de la configuration lors de l'installation, pas de panique. Appuyez sur ctrl-c puis entrez la commande "install" afin de recommencer la configuration au début en retrouvant vos choix précédents.

Le premier écran nous propose d'ajouter des options pour démarrer OpenBSD. Normalement, on n'en a pas besoin, on appuie donc juste sur "Entrée" :

>> OpenBSD/amd64 BOOT 3.47
boot> 

Si votre machine a un port série, vous avez besoin d'un retour console. Vous devrez alors préciser ces options :

>> OpenBSD/i386 PXEBOOT 1.00
boot> stty com0 19200
boot> set tty com0
boot> <Appuyez sur entrée>

Beaucoup de texte sur fond bleu apparaît, indiquant la détection du matériel et autres choses qui ne doivent pas vous inquiéter.

Ensuite, l'écran suivant s'affiche :

erase ^?, werase ^W, kill ^U, intr ^C, status ^T

Welcome to the OpenBSD/amd64 6.7 installation program.
(I)nstall, (U)pgrade, (A)utoinstall or (S)hell?

Installation 100% chiffrée §

Si un jour votre serveur est volé par un méchant cambrioleur, vos données peuvent rester illisibles si vous chiffrez l'ensemble de votre système. Tout est bien pensé par OpenBSD qui permet désormais le chiffrement directement au cours de l'installation : une option est disponible dans le programme.

Pour en apprendre davantage, voir la documentation officielle pour chiffrer un disque :

https://www.openbsd.org/faq/faq14.html#softraidFDE

Vous devrez être en mesure d'entrer la phrase de déchiffrement du disque à chaque démarrage et redémarrage du serveur, ce qui peut être une contrainte pour certains.

⚠ À ce propos, l'agencement du clavier à l'invite de commande demandant le mot de passe est en QWERTY. (sauf si vous gérez votre serveur via un port série).

Démo du script d'installation §

On lance l'installation en entrant "I" :

Les valeurs proposées pour l'installation sont largement suffisantes dans la plupart des cas. Les choix par défaut sont indiqués entre crochets : [choix]. À chaque fois, des exemples sont disponibles avec "?".

On choisit une disposition de clavier : fr

At any prompt except password prompts you can escape to a shell by typing '!'.
Default answers are shown in []'s and are selected by pressing RETURN.  
You can exit this program by pressing Control-C, 
but this can leave your system in an inconsistent state.

Choose your keyboard layout ('?' or 'L' for list) [default] fr

On choisit ensuite un nom de machine, par exemple "serveur.chezmoi.tld" ou "serveur".

System hostname? (short form, e.g. 'foo')

Ensuite, on configure la connexion à Internet. Notez qu'il n'est pas obligatoire d'avoir un accès en ligne si vous avez choisi une image "install*.*" qui contient tous les éléments pour réaliser l'installation.

Vous avez la possibilité de définir une IP statique pour votre serveur ou bien utiliser la configuration DHCP par facilité.

Available network interfaces are: re0 vlan0.
Which network interface do you wish to configure? (or 'done') [re0]
IPv4 address for re0? (or 'dhcp' or 'none') [dhcp]
DHCPDISCOVER on re0 - interval 1
DHCPOFFER from 10.0.2.2 (52:55:01:00:02:02)
DHCPREQUEST on re0 to 255.255.255.255
DHCPACK from 10.0.2.2 (52:55:01:00:02:02)
bound to 10.0.2.15 -- renewal in 43200 seconds.

Pour avoir une IPv6, choisissez "autoconf" le moment venu pour en avoir une automatiquement. Vous souhaiterez certainement configurer cette partie par la suite.

IPv6 address for re0? (or 'autoconf' or 'none') [none] autoconf
Available network interfaces are: re0 vlan0.
Which network interface do you wish to configure? (or 'done') [done]

La configuration réseau se termine par la route IPv4 et le DNS. Laissez les choix par défaut à moins d'avoir un besoin très particulier :

Default IPv4 route? (IPv4 address or none) [10.0.2.2]
add net default: gateway 10.0.2.2
DNS domain name? (e.g. 'bar.com') [my.domain]
Using DNS nameservers at 10.0.2.3

Gardez en tête votre passerelle (gateway) si vous configurez plus tard une connexion statique.

Ensuite, l'installateur vous demande le mot de passe de l'administrateur système dont le petit nom est "root". Choisissez un mot de passe robuste.

Password for root account? (will not echo)
Password for root account? (again)

Vous pouvez ensuite faire en sorte que SSH soit lancé par défaut au démarrage. C'est conseillé pour un serveur afin de pouvoir l'administrer sans écran à partir d'un autre ordinateur.

On nous demande si un serveur X sera utilisé (session graphique) : ce n'est absolument pas nécessaire pour un serveur.

Vous ne voudrez sans doute pas changer la console par défaut, laissez "no".

Password for root account? (will not echo)
Password for root account? (again)
Start sshd(8) by default? [yes]
Do you expect to run the X Window System? [yes] no
Change the default console to com0? [no]

Vous pouvez ajouter un utilisateur si vous le souhaitez en entrant son login. Vous n'êtes pas obligé, mais je vous le conseille pour vous connecter à votre serveur via SSH. Ainsi, vous éviterez d'utiliser le compte root.

Setup a user? (enter a lower-case loginname, or 'no') [no] luffy
Full name for user luffy? [luffy] Mugiwara No Luffy
Password for user luffy? (will not echo)
Password for user luffy? (again)

On vous demande ensuite si vous voulez autoriser l'utilisateur "root" à se connecter via SSH. C'est une très mauvaise idée, puisque cet utilisateur a tous les droits et est la cible privilégiée des pirates. Choisissez "no".

WARNING: root is targeted by password guessing attacks, pubkeys are safer.
Allow root ssh login? (yes, no, prohibit-password) [no]

Le fuseau horaire peut être modifié :

What timezone are you in? ('?' for list) [Canada/Mountain] Europe/Paris

C'est parti pour le choix du disque sur lequel installer OpenBSD :

Which disk is the root disk? ('?' for details) [sd0]

On nous propose de chiffrer l'installation. Je vous le recommande vivement!

Choisissez d'entrer une passphrase ou bien si vous avez une clé USB qui traîne, testez l'utilisation d'un keydisk.

Encrypt the root disk with a (p)assphrase or (k)eydisk? [no] p
Configuring the crypto chunk sd0...

On peut désormais configurer l'utilisation du disque en validant.

Entrez ensuite la phrase de passe.

Cela crée un "nouveau disque" sd1 : c'est une sorte de disque virtuel qui est chiffré.

Use (W)hole disk MBR, whole disk (G)PT, (O)penBSD area or (E)dit? [whole]
Setting OpenBSD MBR partition to whole sd0...done.
New passphrase:
Re-type passphrase:
sd1 at scsibus1 targ 1 lun 0: <OPENBSD, SR CRYPTO, 006>
sd1: 5119MB, 512 bytes/sector, 10485168 sectors

Configuring the root disk sd1...

No valid MBR or GPT.
Use (W)hole disk MBR, whole disk (G)PT or (E)dit? [whole]

Après avoir appuyé sur Entrée, vous voyez :

Disk: sd1      geometry: 2610/255/63 [41943040 Sectors]
Offset: 0      Signature: 0xAA55
            Starting         Ending     LBA Info:
    #: id     C   H   S -      C   H  S [    start:     size ]
-----------------------------------------------------------------
    0: 00     0   0   0 -      0   0  0 [        0:        0 ] unused
    1: 00     0   0   0 -      0   0  0 [        0:        0 ] unused
    2: 00     0   0   0 -      0   0  0 [        0:        0 ] unused
*3: A6     0   1   2 -   2609 254 63 [       64: 41929586 ] OpenBSD

Use (W)hole disk MBR, whole disk (G)PT, (O)penBSD area or (E)dit? [W]

Nous voilà à la partie sans doute la plus complexe : le partitionnement. Notez que celui par défaut proposé par l'installateur conviendra dans la majorité des cas. À moins de savoir ce que vous faites, suivez les suggestions de l'installateur, il est assez intelligent.

Je tape donc "W" (ou "G") dans la suite pour utiliser le disque entier, puis "A" pour le partitionnement automatique.

Vous pouvez modifier le partitionnement par défaut en entrant "E".

Setting [OpenBSD https://www.openbsd.org/] MBR partition to whole sd1...done.
The auto-allocated layout for sd1 is :
#            size     offset  fstype [fsize bsize   cpg]
    a:   738.1M         64  4.2BSD   2048 16384     1 # /
    b:   223.8M    1511648  swap
    c: 20480.0M          0  unused
    d: 172.9.1M    1969888  4.2BSD   2048 16384     1 # /tmp
    e:  1791.0M    4372032  4.2BSD   2048 16384     1 # /var
    f:  1558.1M    8040032  4.2BSD   2048 16384     1 # /usr
    g:   906.8M   11230976  4.2BSD   2048 16384     1 # /usr/X11R6
    h:  3364.2M   13088192  4.2BSD   2048 16384     1 # /usr/local
    i:  1287.2M   19977984  4.2BSD   2048 16384     1 # /usr/src
    j:  1826.5M   22614208  4.2BSD   2048 16384     1 # /usr/obj
    k:  7604.8M   26354784  4.2BSD   2048 16384     1 # /home
Use (A)uto layout, (E)dit auto layout, or create (C)ustom layout? [a] e

Lisez le man de disklabel si vous êtes perdus.

https://man.openbsd.org/OpenBSD-current/man8/disklabel.8

Il faut en général indiquer une action (avec une lettre) à réaliser sur la partition où il faudra l'effectuer.

Par exemple : la suite "d f (entrée)" permet de supprimer la partition f (delete f), qui était /usr, et "d k" pour supprimer le /home.

Ensuite, saisir "a f" permet de re-créer cette partition (en anglais : add f), et d'en définir la taille. Notez que vous pouvez définir une taille en pourcentage du disque (par exemple 50%) ou en pourcentage de l'espace libre restant (50&). Ici, je vais réduire le /home au profit de /usr qui prendra 75% de l'espace restant. De la même façon avec "a k", on re-crée /home à la taille souhaitée.

Use (A)uto layout, (E)dit auto layout, or create (C)ustom layout? [a] e
Label editor (enter '?' for help at any prompt)
> d f
> d k
> a f
offset: [26354784]
size: [15574867] 75&
FS type: [4.2BSD]
mount point: [none] /usr
> a k
offset: [38035904]
size: [3893746]
FS type: [4.2BSD]
mount point: [none] /home

Quand vous voulez, vous pouvez entrer "p" pour afficher les partitions actuelles, histoire de voir où vous en êtes.

> p 
OpenBSD area: 64-41929650; size: 41929586; free: 3190962
The auto-allocated layout for sd1 is :
#           size       offset  fstype [fsize bsize   cpg]
    a:     1511584           64  4.2BSD   2048 16384     1 # /
    b:      458240      1511648  swap
    c:    41943040            0  unused
    d:     2402144      1969888  4.2BSD   2048 16384     1 # /tmp
    e:     3678000      4372032  4.2BSD   2048 16384     1 # /var
    f:    11681120     26354784  4.2BSD   2048 16384     1 # /usr
    g:     1857216     11230976  4.2BSD   2048 16384     1 # /usr/X11R6
    h:     6889792     13088192  4.2BSD   2048 16384     1 # /usr/local
    i:     2636224     19977984  4.2BSD   2048 16384     1 # /usr/src
    j:     3740576     22614208  4.2BSD   2048 16384     1 # /usr/obj
    k:     3893728     38035904  4.2BSD   2048 16384     1 # /home

Quelques points à garder en tête :

Entrer "q" permet de valider les changements.

> q
Write new label?: [y]
newfs: reduced number of fragments per cylinder group from 94472 to 94096 to
enlarge last cylinder group
/dev/rsd1a: 738.1MB in 1511584 sectors of 512 bytes
5 cylinder groups of 114.559MB, 7334 blocks, 14720 inodes each
...
...
/dev/sd1a (8c0364801ae0817e.a) on /mnt type ffs  \
    (rw, asynchronous,local, nodev, nosuid)
/dev/sd1k (8c0364801ae0817e.k) on /mnt/home type ffs  \
    (rw, asynchronous,local, nodev, nosuid)
...
...

Enfin l'installation des composants du système peut commencer. L'installateur doit savoir où aller les chercher : sur le cdrom d'installation (cd0), la clé USB d'installation (disk) ou directement sur un miroir de téléchargement (http). Choisissez cd0 ou disk si vous installez avec une image "install*.*" ou bien http en cas de doute.

Petite astuce pour choisir un miroir si ça vous intéresse. Entrez "?" pour avoir la liste numérotée des serveurs disponibles. Quittez cette liste avec "q", puis entrez seulement le nombre correspondant au miroir que vous souhaitez utiliser.

Pour ajouter un set, saisissez simplement son nom, par exemple "game67.tgz". Pour retirer un set, saisissez son nom précédé du signe moins : "-game67.tgz". Ils ne prennent vraiment pas beaucoup de place, je vous conseille de tout laisser coché pour éviter des tracas ultérieurs.

Let's install the sets!
Location of sets (cd0 disk http or 'done') [http]
HTTP proxy URL? (e.g. ’http://proxy:8080’, or ’none’) [none]
HTTP Server? (hostname, list#, ’done’ or ’?’) [ftp.fr.openbsd.org]
Server directory? [pub/OpenBSD/6.7/amd64]

Select sets by entering a set name, a file name pattern or ’all’. De-select
sets by prepending a ’-’ to the set name, file name pattern or ’all’. Selected
sets are labelled ’[X]’.

    [X] bsd     [X] base67.tgz  [X] game67.tgz    [X] xfont67.tgz
    [X] bsd.rd  [X] comp67.tgz  [X] xbase67.tgz   [X] xserv67.tgz
    [X] bsd.mp  [X] man67.tgz   [X] xshare67.tgz

Set name(s)? (or ’abort’ or ’done’) [done]

bsd.mp est le noyau optimisé pour les systèmes multi-processeurs, et bsd le noyau classique. C'est l'un ou l'autre qui est automatiquement utilisé, et non pas l'un en plus de l'autre. OpenBSD est suffisamment intelligent pour choisir le noyau optimisé si le matériel le permet, vous n'avez rien à faire.

Si vous installez les sets à partir du CD, un avertissement sur la signature apparaît. Rien d'inquiétant, c'est normal. Vous avez de toute façon vérifié la signature de l'image disque après son téléchargement. Vous pouvez dans ce cas continuer.

Directory does not contain SHA256.sig. Continue without verification? [no] yes

L'installation avance.

Get/Verify SHA256.sig    100% |**************************| 2152        00:00
Signature Verified
Get/Verify bsd           100% |**************************| 10423 KB    00:14
Get/Verify bsd.rd        100% |**************************| 9215  KB    00:11
...
...
Installing base67.tgz    100% |**************************| 52181 KB
...
...
Installing xserv67.tgz    100% |**************************| 22686 KB
Location of sets? (cd0 disk http or 'done' [done]

Pour terminer, l'installateur s'occupe de la configuration et de générer un noyau unique :

Saving configuration files...done.
Making all device nodes...done.
Relinking to create a unique kernel...

CONGRATULATIONS! Your OpenBSD install has been successfully completed!

When you login to your new system the first time, please read your mail using the 'mail' command.

Exit to (S)hell, (H)alt or (R)eboot? [reboot]

Et voilà, l'installation est terminée, on valide le reboot pour redémarrer.

Lors du premier démarrage, éditez (créez) le fichier /etc/installurl puis assurez-vous d'avoir une ligne contenant le miroir choisi. Pour faire simple, autant utiliser le CDN d'OpenBSD qui vous redirigera automatiquement vers un serveur rapide :

https://cdn.openbsd.org/pub/OpenBSD

Normalement, le fichier est déjà présent et rempli. Vous pouvez passer à la suite 😄

Quelqu'un peut-il héberger OpenBSD pour moi? §

Si vous n'avez pas un bon accès à internet à la maison, ou si vous voulez vous entraîner, vous pouvez louer un serveur ou une machine virtuelle. On notera notamment les fournisseurs suivants :

openbsd.amsterdam

vultr

ARP Networks

Il en existe d'autres bien évidemment si ces 3 ne vous conviennent pas.

Guide de survie : quelles commandes dois-je absolument connaître? §

Lorsque vous allumerez votre serveur, qu'il soit relié à un écran ou au travers d'SSH, vous verrez une invite de commande :

acdc$ █

C'est en entrant des commandes avec votre clavier que vous administrerez votre serveur.

Il en existe beaucoup, mais on n'en utilise fréquemment qu'un nombre limité. Vous les découvrirez petit à petit selon vos besoins.

Pour l'instant, en voici quelques unes. Ne cherchez pas à retenir tout d'un coup : revenez piocher le moment venu.

Astuce n°1 : Tab §

En utilisant la touche tabulation ↹, vous pouvez compléter une commande ou un chemin vers un fichier. Commencez à en écrire le début puis appuyez sur ↹.

Tab, c'est in-dis-pen-sable ! 😉

Astuce n°2 : ctrl-c §

Pour annuler ce que vous êtes en train d'écrire, appuyez simultanément sur "ctrl" et "c". ("cancel").

Astuce n°3 : "\" §

Bien que ce soit très rare, il arrive que certains noms de fichier contiennent des espaces, voire des symboles un peu étranges. Or, un espace est considéré par l'invite de commande comme un séparateur entre les fichiers. Il risque donc de penser que vous faites référence à plusieurs fichiers au lieu d'un seul.

Utilisez alors "\" pour "échapper" le symbole bizarre. De cette façon, l'invite de commande va en quelque sorte l'ignorer. Par exemple :

/chemin/vers/un/fichier\ avec\ des\ espaces.txt

Dans tous les cas, évitez de créer des fichiers aux noms étranges.

Si vous devez en traiter un grand nombre, testez l'outil "detox" (port du même nom).

Astuce n°4 : historique des commandes §

Pour retrouver l'historique et relancer rapidement une ancienne commande, utilisez le raccourci "ctrl-r".

Vous devez avant tout l'avoir activé en ajoutant dans le fichier ~/.profile :

$ echo "export HISTFILE=~/.history" >> ~/.profile

Au prochain login, l'historique sera actif.

Astuce n°5 : mettre un processus en arrière-plan §

Vous pouvez mettre en arrière-plan un processus avec "ctrl-z". Ainsi, cela vous permet de lancer de nouvelles commandes pendant que le précédent continue de fonctionner. Pour reprendre la tâche mise de côté, entrez "fg". Si vous avez envoyé plusieurs tâches, vous pouvez choisir laquelle reprendre avec la commande "jobs -l". Exemple :

> jobs -l
[2] + 65085 Suspended            systat vm
[1] - 99389 Suspended            top -s .5

Ici, fg va restaurer le processus précédent, à savoir "systat (+)". Si vous préciser l'id de top, c'est ce dernier qui sera retrouvé :

$ fg 99389 # resume top

Lisez "man ksh" pour en savoir + 😊

su et doas : comment devenir superutilisateur (root) ? §

Entrez la commande "su -l" puis le mot de passe de l'utilisateur root.

ATTENTION : dans ce cas, votre utilisateur doit appartenir au groupe "wheel" pour que cela soit possible. C'est le cas du premier utilisateur créé sur un système.

Vous pouvez aussi configurer doas pour lancer une commande avec les droits superutilisateur ainsi :

doas commande

Modifiez/créez le fichier /etc/doas.conf pour y ajouter :

permit utilisateur

Adaptez "utilisateur" selon votre cas.

Voir aussi "man doas".

https://man.openbsd.org/doas

ls : lister le contenu d'un répertoire §

Lancez ls suivi du chemin vers le dossier à lister (ou rien pour lister le dossier courant).

L'option -l permet aussi d'indiquer les permissions, propriétaires, tailles et dates de modification.

Exemple :

$ ls -l /etc
drwxr-xr-x  7 root  wheel        512 Apr 19 19:12 X11
drwx------  2 root  wheel        512 Apr 19 18:16 acme
-rw-r--r--  1 root  wheel       1542 Apr 13 15:39 acme-client.conf
-rw-r--r--  1 root  wheel       1764 Nov 28 13:56 adduser.conf
drwxr-xr-x  2 root  wheel        512 Apr 19 18:16 amd
drwxr-xr-x  2 root  wheel        512 Apr 19 18:16 authpf
-rw-r--r--  1 root  wheel         30 Aug  2  2020 boot.conf
[...]

On obtient une ligne par fichier/dossier. Chaque ligne est découpée de cette façon :

<permissions> <inode> <proprietaire> <groupe> <taille> <date dernier acces> <nom du ficher>

Une méthode simple et pourtant redoutable pour sécuriser son site web -- et plus généralement son serveur -- consiste à modifier les permissions et le propriétaire des fichiers dudit site.

Lisez les parties sur chmod et chown pour en savoir plus.

chmod : changer les permissions §

Regardons en détail ce que nous indique le retour de la commande "ls -l" vue précédemment.

Les lettres en début de ligne décrivent les permissions accordées au fichier. Nous pouvons retenir deux choses :

Par exemple, pour cette ligne :

drwxr-xr-x   2 www  daemon    512 May  5 17:10 bin

On voit qu'il s'agit d'un répertoire. Ensuite, on lit par groupe de 3 par 3 :

rwx : Le propriétaire "www" peut :

r-x : Ceux appartenant au groupe "daemon" peuvent :

r-x : Tous les autres peuvent :

En règle générale, il faut éviter autant que possible de donner les droits d'écriture et d'exécution à d'autres personnes que le propriétaire. Parfois, on retire aussi les droits de lecture sur certains fichiers (mots de passe...).

Pour changer les permissions, il existe plusieurs méthodes.

chmod "symbolique" §

Certains utilisent une série de chiffres, comme "chmod 700". Je trouve cette façon peu explicite lorsqu'on n'a pas encore l'habitude. Quitte à devoir entrer quelques commandes en plus, préférez utiliser "chmod <identité>±<permission>" où :

Vous prendrez bien quelques exemples?

Ces modifications peuvent être appliquées récursivement (à tous les sous-documents d'un dossier) avec l'option -R.

Astuce : pour autoriser à se déplacer dans les dossiers, sans rendre exécutables les fichiers, utilisez X (majuscule) au lieu de x.

chmod "absolu" §

Si vous souhaitez comprendre la notation numérique d'un chmod :

Il n'y a pas de distinction entre les dossiers ou les fichiers, il faut dont procéder avec discernement.

Le premier chiffre correspond au droit attribué au propriétaire, le second au groupe, le dernier aux autres.

On additionne les chiffres entre eux. Cela signifie que chmod 700 attribue les permissions "rwx" au propriétaire, et aucune pour le groupe et les autres (7 = 4+2+1).

Pour finir, afin de définir les permissions en faisant la distinction entre les dossiers et les fichiers, et ne pas rendre exécutable un fichier avec un "chmod -R" (récursif), la commande "find" est votre amie:

# Pour les dossiers : 
find . -type d -exec chmod 755 {} \;
# Pour les fichiers : 
find . -type f -exec chmod 644 {} \;

Comme toujours, "man chmod" vous en apprendra davantage.

chown : Propriétaire et groupe §

Chaque fichier appartient à un propriétaire et fait partie d'un groupe. Cela nous permettra de donner certaines permissions aux propriétaires, qui ne seront pas forcément les mêmes que celles données aux membres du groupe.

Pour modifier le propriétaire et le groupe, on utilise la commande chown (change owner).

# chown <proprietaire>:<groupe> nom_du_fichier

Gestion des fichiers §

Avant de voir comment gérer les fichiers, prenez note des notations suivantes :

pwd : afficher le dossier courant §

Avec pwd, vous demandez "où suis-je ?" 🗺️

mkdir : créer un répertoire §

$ mkdir nom_du_nouveau_dossier

Utilisez l'option "-p" pour créer toute une structure d'un coup :

$ mkdir -p ~/dossier/avec/des/sous-dossiers

cd : changer de répertoire §

Pour vous déplacer dans le dossier /var/www :

$ cd /var/www

La commande cd sans argument vous déplace dans votre $HOME.

cp : copier §

Pour copier un fichier :

$ cp fichier_source fichier_copie

Pour copier un dossier et son contenu :

$ cp -R dossier_source dossier_copie

rm : supprimer §

$ rm chemin_vers_le_dossier
$ rm -R chemin_vers_le_dossier

mv : déplacer §

$ mv source destination

C'est comme faire un couper-coller.

less : comment lire et chercher dans du texte ? §

Pour seulement consulter un fichier, utilisez la commande "less".

Ensuite, vous pouvez chercher n'importe quelle chaîne de caractères en appuyant sur "/" puis en écrivant votre recherche. Appuyez sur "n" pour aller à l'occurrence suivante, ou bien "N" pour revenir en arrière.

Pour quitter less, appuyez sur "q".

Si vous voulez chercher dans le contenu des logs, ça peut être pratique 😉.

man : lire les manuels §

Voici la véritable raison pour laquelle il n'y a pas 36 forums d'entraide autour d'OpenBSD mais seulement une liste de discussion : les pages de manuel sont très complètes, agrémentées d'exemples, et suffisent la plupart du temps à répondre aux problèmes rencontrés.

La commande man vous permet d'afficher une page de manuel.

Notez qu'il existe différentes sections pour classer les pages de manuel :

Aussi, il arrive parfois qu'une page man existe dans plusieurs sections différentes : son contenu n'est alors pas le même. Afin de les différencier, on fait référence à une manpage ainsi : "nom_de_la_page(section)".

Par exemple : "apm(8)", ou "apm(4)". Ou encore "man(1)" et "man(7)". Oui, man a une page man. 😎

On utilise cette commande ainsi, sans les parenthèses :

$ man (section) page

La section est facultative.

Pour vous entraîner, entrez "man hier". Utilisez les flèches pour faire défiler. Comme avec less, vous pouvez faire une recherche avec "/". Remarquez la partie "SEE ALSO" qui vous invite à lire d'autres manpages pouvant avoir un intérêt. Quittez avec "q".

Si vous ne savez pas quel est le nom de la page man, vous pouvez la rechercher avec la commande "apropos" :

$ apropos votre_recherche 

vi : pour éditer un fichier §

Savoir éditer un fichier est crucial.

Il existe une ribambelle d'éditeurs de texte (vim, nano...).

L'éditeur par défaut sur OpenBSD est vi. (Il y a ed aussi).

https://man.openbsd.org/man/vi

Il est peut-être étonnant à utiliser au premier abord, si bien que certains voudront peut-être installer un autre éditeur à la place. Cependant, vi est très pratique une fois qu'on l'a pris un peu en main. Si au contraire vous êtes déjà habitué à l'éditeur emacs, vous trouverez votre bonheur avec l'éditeur mg présent lui aussi par défaut.

Voici quelques conseils pour utiliser vi au travers d'un exemple. Pour éditer le fichier /etc/iloverocknroll, vous saisirez ceci :

$ vi /etc/iloverocknroll

Apparaîtra alors le contenu de ce fichier dans le terminal. Par exemple :

We will rock you

# Commentaire

En général, vous procéderez seulement ainsi :

Vous êtes toujours là ? 😁

Allons donc un peu plus loin (mais pas trop, promis 😁). Comprenez tout de suite qu'il existe trois modes :

Pour enregistrer les modifications, appuyez sur ":" puis sur "w". Validez avec Entrée. On peut maintenant quitter en écrivant ":q". Notez que vous pouvez aller plus vite en saisissant directement ":wq".

Pour annuler une modification appuyez sur "u".

Pour répéter une opération, appuyez sur "." autant de fois que nécessaire.

Afin de chercher un texte, ce qui est bien utile dans les gros fichiers, appuyez sur la touche "/" puis écrivez votre recherche.

Si vous souhaitez quitter sans enregistrer vos modifications, saisissez alors ":q!".

D'autres astuces bien pratiques :

rcctl : Comment gérer les services ? §

Afin d'activer/désactiver des services (qu'on appelle "démons" car ils tournent en arrière-plan), la commande rcctl est prévue à cet effet. Tous les services disponibles sont dans le dossier /etc/rc.d. Voici quelques rappels :

Si vous préférez la méthode manuelle, alors il vous est possible d'éditer directement le fichier /etc/rc.conf.local qui gère les services lancés au démarrage. ⚠ Attention aux erreurs de syntaxe.

TP : un peu de pratique §

Entraînons-nous avec un petit exercice. Réalisez les consignes suivantes puis vérifiez que vous obtenez la même chose que dans la "correction". Essayez de répondre de mémoire dans un premier temps. Si vous êtes bloqués, relisez la page à la recherche de ce qui vous manque.

La correction :

$ cd /tmp
$ mkdir ah
$ cd ah
$ vi couenne.txt
$ cp couenne.txt Karadoc.txt
$ chmod 600 Karadoc.txt
$ rm couenne.txt
$ cd ~
$ pwd
/home/prx
$ ls -l /tmp/ah
total 2
-rw-------  1 prx  wheel  22 May  5 21:10 Karadoc.txt
$ cat /tmp/Karadoc.txt
Le gras, c'est la vie

Notez que on peut remplacer "cd ~" par "cd $HOME", voire par seulement "cd".

Que faire après l'installation? §

Vous devriez lire les man afterboot(8) et man intro(8). Si si, les développeurs d'OpenBSD ont vraiment prévu de vous parler jusque après l'installation 😎.

$ man afterboot
$ man intro

On vous y explique en premier lieu comment accéder aux pages de manuel justement.

Regarder les exemples de configuration §

Plusieurs exemples pour configurer les services venant de base sont disponibles dans /etc/examples.

Lorsque vous ajouterez des ports (ou paquets), vous irez lire les instructions complémentaires dans /usr/local/share/doc/pkg-readmes si pkg_add vous informe de la présence de tels fichiers.

Indiquer l'adresse mail de l'administrateur §

Éditez le fichier /etc/mail/aliases pour indiquer l'adresse mail de root. Cela vous permettra de recevoir des rapports importants sur l'état de votre serveur.

root: batman@chezmoi.tld

Éteindre éventuellement des services §

Il y a peut-être quelques services que vous souhaiterez désactiver. Je pense notamment au serveur de son (sndiod), qui a peu de chance d'être utile, à moins que vous ne vouliez diffuser de la musique chez vous avec le serveur.

C'est l'occasion de vous parler de la commande "rcctl".

Cette dernière permet de gérer les "démons", services qui tournent en arrière plan.

Pour lister les services actifs :

# rcctl ls on

Pour en éteindre, par exemple le serveur de son :

# rcctl stop sndiod

Et pour désactiver leur lancement pour le prochain démarrage :

# rcctl disable sndiod

Il est probable que vous souhaitiez activer la gestion d'énergie pour les systèmes qui le supportent avec le démon apmd. Les trois commandes suivantes ont les effets suivants :

# rcctl enable apmd
# rcctl set apmd flags -A
# rcctl start apmd

Si vous ne savez pas ce qu'est un des services listé par la première commande, ayez le réflexe de chercher la page man. Par exemple :

man syslogd

Ou alors, lisez l'excellente description du système OpenBSD dans intro(8) qui détaille chaque service :

man 8 intro

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 Jean-Mi, votre collègue relou qui vous montre une vidéo de chat : l'ordinateur sait où trouver le site hébergeant la vidéo, et ce site sait à quelle adresse est l'ordinateur de Jean-Mi pour lui 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 domaine comme wikipedia.org ? 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 confié une box. Celle-ci fait le relais entre internet et votre ordinateur. Cela donne :

+-----------------------+
|                       |
| Réseau local (maison) |
|     IP PRIVÉES        |
|                       |
|                       |
|     PC portable   <---+------+
|     192.168.1.20      |      |
|                       |      |
|                       |      |
|     Smartphone    <---+--+  ++---------------+
|     192.169.1.21      |  |  |                |
|                       |  +--+  Routeur (box) |    +----------+
|                       |     |                |<---+ INTERNET |
|     PC Fixe       <---+-----+  IP PUBLIQUE:  |    +----------+
|     192.168.1.22      |     |   192.0.2.2    |
|                       |  +--+                |
|   * * * * * * * * *   |  |  ++---------------+
|   * Votre serveur <---+--+   |
|   * 192.168.1.23  *   |      |
|   * * * * * * * * *   |      |
|                       |      |
|     Console de jeu <--+------+
|     192.168.1.24      |
|                       |
+-----------------------+

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 réseau §

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" ou "autoconf" 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 loin) 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'occurrence, appelez la commande "ifconfig" pour la filtrer avec "grep" et obtenir 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 :

https://si3t.ch/ip/

https://lehollandaisvolant.net/tout/ip

https://ifconfig.co/

https://ipaddress.sh/

https://ipecho.net/

https://ifconfig.me

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é 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 avec "default" 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 le serveur qui héberge cette documentation, 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. Ç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 obtenir une IP locale facilement §

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 "autoconf" 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à.

$ cat /etc/hostname.re0
autoconf
up

Suivant la configuration du routeur que vous utilisez (configuration que vous ne pouvez pas forcément 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).

Cela peut venir en supplément d'une configuration dhcp déjà établie.

On configure d'abord l'interface voulue :

toto@serveur:/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

Il faut ensuite indiquer l'adresse de la passerelle par laquelle on passe pour accéder à internet. Il s'agit en fait de votre routeur. Le plus pratique est d'ajouter une ligne appelant la commande "!route". Vous pouvez aussi indiquer la passerelle dans le fichier /etc/mygate, mais cela disperse l'information. À vous de voir 😄

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
!route add -inet default 192.168.1.1
up

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 vous voyez des lignes défiler, alors tout va bien, votre serveur est connecté au net.

IPv6 : c'est quoi? §

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 très bientôt. 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@serveur:/home/toto $ cat /etc/hostname.re0 
inet...

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

# on n'oublie pas la passerelle
!route add -inet6 default 2001:db8::1
up

Vous pouvez lire davantage à propos de ces adresses en suivant ce lien.

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

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.

Exemple concret de configuration de l'interface §

Par simplicité, je vous propose d'utiliser une configuration automatique reçue par le routeur, puis de définir des alias qui seront utilisés pour l'accès au serveur :

inet  autoconf
inet6 autoconf
inet  alias 192.0.2.2 255.255.255.0 192.0.2.255
inet6 alias 2001:db8::2 64
up

Rediriger les ports sur son routeur §

Votre serveur, comme votre ordinateur probablement, sera connecté à Internet par l'intermédiaire d'un modem-routeur (une *box). Il faut s'assurer que lorsqu'un visiteur accède à votre serveur, ce routeur le redirige bien vers votre serveur, et non vers une autre machine du réseau local.

Autrement dit, imaginez votre routeur comme un grand mur avec dedans plusieurs portes. Chacune est numérotée.

Quand quelqu'un veut accéder à votre serveur, il va venir frapper à l'une des portes, par exemple la numéro 80 pour un serveur web (http).

Si le routeur est correctement configuré, il va conduire le visiteur vers l'adresse IP interne (privée) de votre serveur.

Sinon, le port reste fermé, et c'est une bonne chose pour tous les autres appareils de votre réseau domestique.

Bien sûr, pour encore plus de sécurité, une fois la porte 80 passée, votre serveur sera équipé d'un pare-feu pour vérifier que vous avez bien le droit d'entrer. Ce sera un peu le concierge 😁.

                       +---------------+
                       |               |
                       | Routeur (box) |
                       |  ***********  |
                       |               |
              +--------+-- Porte 443   |
+---------+   |        |               |
|         |<--+        |               |
| Serveur |         ?<-+---Porte 143 <-+--- [Petit malin 👿]
|         |<--+        |               |
+---------+   |        |               |
         ^    +--------+-- Porte 80 <--+--- [Visiteur 👼]
         |             |               |
         |             |               |
         +-------------+-- Porte 22    |
                       |               |
                       +---------------+

Dans le schéma ci-dessus, seuls les ports 443, 80 et 22 sont redirigés vers le serveur. Si le petit malin demande un port qui n'est pas redirigé vers le serveur (la porte est fermée), alors la requête ne peut pas aboutir. C'est comme s'il demandait à rejoindre une destination qui n'existe pas. En revanche, lorsque le visiteur demande de passer par la porte 80, il est bien renvoyé vers le serveur.

Notez que si votre serveur est connecté en IPV6, il n'y a pas besoin de configurer la redirection de ports dans le routeur : l'accès au serveur est direct. C'est donc d'autant plus important de bien configurer le pare-feu.

L'interface de configuration n'est pas la même selon si vous avez une livebox, freebox, modem OVH... Pas d'inquiétude, voici quelques indices.

Déjà, pour accéder à la configuration, c'est à partir d'un navigateur web (Firefox par exemple). On peut trouver l'adresse à entrer pour accéder à cette interface. Essayez dans l'ordre suivant (Bien sûr, cette "adresse" est à utiliser sur un ordinateur lui-même connecté à la *box.) :

http://192.168.0.1

http://192.168.1.1

http://192.168.1.254

http://mafreebox.freebox.fr/ (dans le cas d'une freebox)

Sachez que cette adresse (on parle d'adresse du routeur, ou adresse passerelle) s'avère un élément important de la configuration de votre réseau. Retenez-la bien.

Il est possible qu'un nom d'utilisateur et un mot de passe soient demandés. Essayez dans ce cas admin/admin, sinon, demandez directement à votre fournisseur d'accès à Internet. Une fois connecté, allez dans la section "Configurer mon routeur".

DMZ §

Si vous n'avez pas envie de vous préoccuper des redirections de port, vous pouvez configurer une "DMZ" dans votre routeur. Cela permet de rediriger tout le trafic entrant vers une IP locale : vous indiquerez alors l'IP privée de votre serveur.

Notez toutefois que votre serveur sera exposé à TOUS les flux entrants. Vous comprenez donc que la configuration du pare-feu sera à soigner (mais vous ne comptiez pas faire autrement n'est-ce pas ? 😉).

Obtenir un nom de domaine §

Au lieu d'écrire votre IP, ça serait plus pratique d'accéder à votre serveur de façon plus "humaine" avec un nom de domaine. Ce n'est pas une obligation ceci dit. Cela vous donne aussi la possibilité de mieux vous organiser avec des sous-domaines, par exemple "mail.chezmoi.tld", "blog.chezmoi.tld"...

Mais c'est quoi un nom de domaine ?

Imaginons que M. Ali Gator vit au 5 rue du moulin à Picsouville. Pour aller lui rendre visite, c'est à cette adresse que vous irez. Sur le web, l'adresse de votre serveur, c'est une série de nombres : l'IP.

Par exemple : 192.0.2.2. C'est pratique pour les machines, pas pour les humains.

Un nom de domaine nous permet d'utiliser l'adresse wikipedia.org, qui est traduite par les ordinateurs en 185.15.58.224.

Avouez que c'est plus facile à retenir. 😉

L'association d'une IP avec un nom de domaine est possible grâce aux enregistrements DNS (Domain Name System). Ce système est à la base de toutes les interactions qui se servent des noms de domaines : Email, Web, ... C'est une sorte d'annuaire numérique.

Voici une petite BD qui explique comment se passe une résolution DNS (EN)

https://wizardzines.com/comics/life-of-a-dns-query/

BD expliquant comment se déroule une résolution de nom DNS.

Vous pouvez louer un nom de domaine auprès de ce que l'on appelle un registre ou registrar comme Infomaniak, OVH, Gandi ou namecheap. Ce n'est pas très onéreux, mais sachez qu'il en existe aussi des gratuits, comme nic.eu.org (voir l'exemple détaillé plus loin).

https://www.infomaniak.com/

https://www.ovh.com/fr

https://www.gandi.net/

https://www.namecheap.com/

nic.eu.org (voir l'exemple détaillé plus loin)

Si vous le souhaitez, vous pourrez gérer les enregistrements DNS vous-mêmes en installant un serveur de noms (voir la partie sur nsd).

Une fois votre domaine acquis, configurez les champs DNS pour les faire pointer vers votre adresse IP. Pour ça, référez-vous à la partie suivante sur les enregistrements DNS et registres.

Les enregistrements DNS §

Lorsque un ordinateur doit aller sur un site dont le nom est "chezmoi.tld", il va demander à un serveur DNS (qu'on appelle résolveur dans ce cas) à quelle adresse IP ce nom de domaine correspond. Le DNS, c'est un peu comme des panneaux sur le bord de la route qui indiquent le chemin à suivre pour arriver à destination.

Pour créer ce panneau une fois que vous avez un nom de domaine, il faut le relier à l'adresse IP de votre serveur. Mais si, souvenez-vous, cette série de nombres ressemblant à "192.0.2.2". Pour cela, enregistrez un champ de type A dans votre zone à l'aide de l'interface d'administration du registre (sauf si vous hébergez vous-même un serveur de noms, vois nsd plus loin 😉). Par exemple :

chezmoi.tld   A   192.0.2.2

Notez qu'il existe plusieurs types d'enregistrements :

blog.chezmoi.tld    CNAME chezmoi.tld
wiki.chezmoi.tld    CNAME chezmoi.tld
webmail.chezmoi.tld CNAME chezmoi.tld

Pour en savoir plus sur DNS, vous pouvez lire les pages suivantes :

Page Wikipedia à propos de DNS:

https://en.wikipedia.org/wiki/Domain_Name_System

Site interactif pour comprendre le fonctionnement des DNS:

https://howdns.works/


Table des matières

Donate