|
|
Comment configurer le réseau de mon serveur avant de l'apporter dans la salle serveur ?
|
|
|
|
|
|
[[_TOC_]]
|
|
|
|
|
|
# Principe général
|
|
|
|
|
|
Pour accéder au réseau, il faut obtenir des adresses IP. Nous avons choisi de paramétrer les adresses IPs de manière statique, donc il faudra se rapprocher de l’équipe Grésille en charge de la salle serveur pour se voir attribuer les adresses IP nécessaires.
|
|
|
|
|
|
Par défaut, une adresse IPv4 et un bloc d'IPv6 en /60 sont attribuées.
|
|
|
|
|
|
La configuration est exactement la même pour une machine physique et une machine virtuelle. Dans tous les cas, cela doit se faire lors d'une permanence.
|
|
|
|
|
|
## Configuration normale
|
|
|
|
|
|
### IPV4
|
|
|
|
|
|
Configurer votre IPv4 avec un masque en `/32` sur l'interface réseau de votre machine.
|
|
|
|
|
|
Utiliser `100.100.100.100` comme gateway et comme résolveur DNS.
|
|
|
|
|
|
Ça peut demander de la configuration non-standard selon le système d'exploitation, cf. la suite de cette documentation.
|
|
|
|
|
|
### IPV6
|
|
|
|
|
|
Le bloc IPv6 se déduit du bloc IPv4 de la manière suivante : si le bloc IPv4 est
|
|
|
193.23.164.XYZ, le bloc IPv6 sera 2a10:a080:110X:YZ00::/64.
|
|
|
|
|
|
Configurer votre IPv6 avec un masque en `/64` sur l'interface réseau de votre
|
|
|
machine, et utiliser `fe80::100` comme gateway. Il est également possible de
|
|
|
configurer votre IPv6 avec un masque en `/56` si vous le souhaitez (à usage de
|
|
|
virtualisation, conteneurisation…).
|
|
|
|
|
|
## Configuration alternative
|
|
|
|
|
|
**N'utiliser cette configuration que temporairement, par exemple lors de l'installation d'une Debian où la configuration normale n'est pas supportée**
|
|
|
|
|
|
Configurer votre IPv4 avec un masque en `/24`, utiliser `193.23.164.254` comme gateway, et `100.100.100.100` comme résolveur DNS.
|
|
|
|
|
|
Pensez à revenir à la configuration normale dès que possible (par exemple une fois le système installé).
|
|
|
|
|
|
# Debian
|
|
|
|
|
|
Attention, la configuration suivante peut ne pas fonctionner avec Yunohost (Debian 11), on a eu des problèmes une fois. La solution que l'on avait trouvé est précisée dans la partie Yunohost un peu plus loin.
|
|
|
|
|
|
Dans le fichier `/etc/network/interfaces` :
|
|
|
```
|
|
|
auto [mon_interface]
|
|
|
iface [mon_interface] inet static
|
|
|
address [mon_ipv4]/32
|
|
|
gateway 100.100.100.100
|
|
|
|
|
|
iface [mon_interface] inet6 static
|
|
|
address [mon_bloc_ipv6]::1/64
|
|
|
gateway fe80::100
|
|
|
```
|
|
|
|
|
|
Il faut également ensuite ajouter un résolveur de nom de domaine.
|
|
|
Dans le fichier `/etc/resolv.conf` changer la ligne contenant le `nameserver` par :
|
|
|
|
|
|
```
|
|
|
nameserver 100.100.100.100
|
|
|
```
|
|
|
|
|
|
# Yunohost
|
|
|
|
|
|
Dans yunohost la configuration réseau peut-être configurée pour être écrite par le service `dhcpd` et cela peut poser des problèmes, il va falloir le configurer.
|
|
|
|
|
|
Dans le fichier `/etc/dhcpcd.conf` ajouter les lignes suivantes :
|
|
|
```
|
|
|
interface [mon_interface]
|
|
|
static ip_address=[mon_ipv4]/32
|
|
|
static ip6_address=[mon_bloc_ipv6]::1/64
|
|
|
static routers=100.100.100.100
|
|
|
static domain_name_servers=100.100.100.100
|
|
|
```
|
|
|
|
|
|
|
|
|
# Ubuntu / netplan
|
|
|
|
|
|
Créer un fichier dans le répertoire `/etc/netplan/` avec la configuration suivante:
|
|
|
|
|
|
```network:
|
|
|
version: 2
|
|
|
renderer: networkd
|
|
|
ethernets:
|
|
|
eno1:
|
|
|
addresses:
|
|
|
- X.X.X.X/32
|
|
|
# gateway4: 100.100.100.100
|
|
|
routes:
|
|
|
- to: 0.0.0.0/0
|
|
|
via: 100.100.100.100
|
|
|
on-link: true
|
|
|
nameservers:
|
|
|
search: [lab, home]
|
|
|
addresses: [8.8.8.8, "FEDC::1"]
|
|
|
```
|
|
|
|
|
|
# OpenWrt
|
|
|
|
|
|
Dans `/etc/config/network` :
|
|
|
|
|
|
```
|
|
|
config interface 'wan'
|
|
|
option ifname 'eth0'
|
|
|
option proto 'static'
|
|
|
option ipaddr 'XXX.XXX.XXX.XXX/32'
|
|
|
list dns '100.100.100.100'
|
|
|
|
|
|
config route internet
|
|
|
option interface 'wan'
|
|
|
option target '0.0.0.0'
|
|
|
option netmask '0.0.0.0'
|
|
|
option gateway '100.100.100.100'
|
|
|
option onlink 1
|
|
|
```
|
|
|
|
|
|
# Linux
|
|
|
|
|
|
Configuration "à l'arrache" qui ne survit pas à un reboot :
|
|
|
|
|
|
```bash
|
|
|
ip addr add XX.XX.XX.XX/32 dev ensYY # adapter l'IP et l'interface
|
|
|
ip route add default via 100.100.100.100 dev ensYY onlink # adapter l'interface
|
|
|
echo "nameserver 100.100.100.100" > /etc/resolv.conf
|
|
|
|
|
|
ip addr add 2a10:a080:110X:XXXX::1/64 dev ensYY # adapter l'IP et l'interface
|
|
|
ip -6 route add default via fe80::100 dev ensYY # adapter l'interface
|
|
|
```
|
|
|
|
|
|
Penser à supprimer le paquet `resolvconf` si il empêche de mettre à jour le fichier `/etc/resolv.conf`.
|
|
|
|
|
|
# Dropbear SSH / initramfs
|
|
|
|
|
|
Pour déchiffrer le disque root à distance, il est commun d'utiliser [Dropbear SSH](https://github.com/mkj/dropbear), un serveur SSH dans l'initramfs. La plupart des tutoriels sur Internet suivent la documentation du [noyau Linux](https://www.kernel.org/doc/Documentation/filesystems/nfs/nfsroot.txt) mais celle-ci n'est pas très explicite et surtout ne fonctionne pas dans le cas où la passerelle (gateway) est hors du sous-réseau (par exemple `100.100.100.100` pour la salle serveur de Grésille).
|
|
|
|
|
|
Dans ce cas il faut :
|
|
|
1. si déjà en place/testé, supprimer la configuration pré-existante et lancer `update-initramfs -u`
|
|
|
2. créer un script `/etc/initramfs-tools/scripts/init-premount/network` avec comme contenu :
|
|
|
```sh
|
|
|
#!/bin/sh
|
|
|
|
|
|
# Adapt here network interface and ip address.
|
|
|
NET_IFACE=XXXXXX
|
|
|
STATIC_IP=193.23.164.XXX/32
|
|
|
STATIC_GW=100.100.100.100
|
|
|
|
|
|
# The script seems to be run on the host when generating the initramfs,
|
|
|
# so we want to avoid messing up with the network there.
|
|
|
ip route get 1.2.3.4 2>/dev/null && exit 0
|
|
|
|
|
|
# Necessary to trick the dropbear script to think that it has already
|
|
|
# configured the network.
|
|
|
touch /run/net-${NET_IFACE}.conf
|
|
|
|
|
|
echo ip link set ${NET_IFACE} up
|
|
|
ip link set ${NET_IFACE} up
|
|
|
sleep 2
|
|
|
|
|
|
echo ip addr add ${STATIC_IP} dev ${NET_IFACE}
|
|
|
ip addr add ${STATIC_IP} dev ${NET_IFACE}
|
|
|
|
|
|
echo ip route add default via ${STATIC_GW} dev ${NET_IFACE} onlink
|
|
|
ip route add default via ${STATIC_GW} dev ${NET_IFACE} onlink
|
|
|
```
|
|
|
3. adapter le nom de l'interface réseau et l'adresse IP statique qui a été attribuée
|
|
|
|
|
|
NB : Pour connaître le nom de l'interface réseau utilisée (eth0, eno1, etc.), on peut la récupérer avec la commande `ip -a`
|
|
|
|
|
|
4. rendre le script exécutable :
|
|
|
`chmod +x /etc/initramfs-tools/scripts/init-premount/network`
|
|
|
5. régénérer l'initramfs :
|
|
|
`update-initramfs -u`
|
|
|
|
|
|
# BSD ? |
|
|
Comment configurer le réseau de mon serveur avant de l'apporter dans la salle serveur ?
|
|
|
|
|
|
[[_TOC_]]
|
|
|
|
|
|
# Principe général
|
|
|
|
|
|
Pour accéder au réseau, il faut obtenir des adresses IP. Nous avons choisi de paramétrer les adresses IPs de manière statique, donc il faudra se rapprocher de l’équipe Grésille en charge de la salle serveur pour se voir attribuer les adresses IP nécessaires.
|
|
|
|
|
|
Par défaut, une adresse IPv4 et un bloc d'IPv6 en /60 sont attribuées.
|
|
|
|
|
|
La configuration est exactement la même pour une machine physique et une machine virtuelle. Dans tous les cas, cela doit se faire lors d'une permanence.
|
|
|
|
|
|
## Configuration normale
|
|
|
|
|
|
### IPV4
|
|
|
|
|
|
Configurer votre IPv4 avec un masque en `/32` sur l'interface réseau de votre machine.
|
|
|
|
|
|
Utiliser `100.100.100.100` comme gateway et comme résolveur DNS.
|
|
|
|
|
|
Ça peut demander de la configuration non-standard selon le système d'exploitation, cf. la suite de cette documentation.
|
|
|
|
|
|
### IPV6
|
|
|
|
|
|
Le bloc IPv6 se déduit du bloc IPv4 de la manière suivante : si le bloc IPv4 est
|
|
|
193.23.164.XYZ, le bloc IPv6 sera 2a10:a080:110X:YZ00::/64.
|
|
|
|
|
|
Configurer votre IPv6 avec un masque en `/64` sur l'interface réseau de votre
|
|
|
machine, et utiliser `fe80::100` comme gateway. Il est également possible de
|
|
|
configurer votre IPv6 avec un masque en `/56` si vous le souhaitez (à usage de
|
|
|
virtualisation, conteneurisation…).
|
|
|
|
|
|
## Configuration alternative
|
|
|
|
|
|
**N'utiliser cette configuration que temporairement, par exemple lors de l'installation d'une Debian où la configuration normale n'est pas supportée**
|
|
|
|
|
|
Configurer votre IPv4 avec un masque en `/24`, utiliser `193.23.164.254` comme gateway, et `100.100.100.100` comme résolveur DNS.
|
|
|
|
|
|
Pensez à revenir à la configuration normale dès que possible (par exemple une fois le système installé).
|
|
|
|
|
|
# Debian
|
|
|
|
|
|
Attention, la configuration suivante peut ne pas fonctionner avec Yunohost (Debian 11), on a eu des problèmes une fois. La solution que l'on avait trouvé est précisée dans la partie Yunohost un peu plus loin.
|
|
|
|
|
|
Dans le fichier `/etc/network/interfaces` :
|
|
|
```
|
|
|
auto [mon_interface]
|
|
|
iface [mon_interface] inet static
|
|
|
address [mon_ipv4]/32
|
|
|
gateway 100.100.100.100
|
|
|
|
|
|
iface [mon_interface] inet6 static
|
|
|
address [mon_bloc_ipv6]::1/64
|
|
|
gateway fe80::100
|
|
|
```
|
|
|
|
|
|
Il faut également ensuite ajouter un résolveur de nom de domaine.
|
|
|
Dans le fichier `/etc/resolv.conf` changer la ligne contenant le `nameserver` par :
|
|
|
|
|
|
```
|
|
|
nameserver 100.100.100.100
|
|
|
```
|
|
|
|
|
|
# Yunohost
|
|
|
|
|
|
Dans yunohost la configuration réseau peut-être configurée pour être écrite par le service `dhcpd` et cela peut poser des problèmes, il va falloir le configurer.
|
|
|
|
|
|
Dans le fichier `/etc/dhcpcd.conf` ajouter les lignes suivantes :
|
|
|
```
|
|
|
interface [mon_interface]
|
|
|
static ip_address=[mon_ipv4]/32
|
|
|
static ip6_address=[mon_bloc_ipv6]::1/64
|
|
|
static routers=100.100.100.100
|
|
|
static domain_name_servers=100.100.100.100
|
|
|
```
|
|
|
|
|
|
|
|
|
# Ubuntu / netplan
|
|
|
|
|
|
Créer un fichier dans le répertoire `/etc/netplan/` avec la configuration suivante :
|
|
|
|
|
|
```
|
|
|
network:
|
|
|
version: 2
|
|
|
renderer: networkd
|
|
|
ethernets:
|
|
|
eno1:
|
|
|
addresses:
|
|
|
- X.X.X.X/32
|
|
|
# gateway4: 100.100.100.100
|
|
|
routes:
|
|
|
- to: 0.0.0.0/0
|
|
|
via: 100.100.100.100
|
|
|
on-link: true
|
|
|
nameservers:
|
|
|
search: [lab, home]
|
|
|
addresses: [8.8.8.8, "FEDC::1"]
|
|
|
```
|
|
|
|
|
|
Attribuer les droits sur le fichier en lançant `sudo chmod 600 /etc/netplan/fichier-de-config.yaml`.
|
|
|
|
|
|
Vérifier si tout va bien en lançant `sudo netplan apply`.
|
|
|
|
|
|
# OpenWrt
|
|
|
|
|
|
Dans `/etc/config/network` :
|
|
|
|
|
|
```
|
|
|
config interface 'wan'
|
|
|
option ifname 'eth0'
|
|
|
option proto 'static'
|
|
|
option ipaddr 'XXX.XXX.XXX.XXX/32'
|
|
|
list dns '100.100.100.100'
|
|
|
|
|
|
config route internet
|
|
|
option interface 'wan'
|
|
|
option target '0.0.0.0'
|
|
|
option netmask '0.0.0.0'
|
|
|
option gateway '100.100.100.100'
|
|
|
option onlink 1
|
|
|
```
|
|
|
|
|
|
# Linux
|
|
|
|
|
|
Configuration "à l'arrache" qui ne survit pas à un reboot :
|
|
|
|
|
|
```bash
|
|
|
ip addr add XX.XX.XX.XX/32 dev ensYY # adapter l'IP et l'interface
|
|
|
ip route add default via 100.100.100.100 dev ensYY onlink # adapter l'interface
|
|
|
echo "nameserver 100.100.100.100" > /etc/resolv.conf
|
|
|
|
|
|
ip addr add 2a10:a080:110X:XXXX::1/64 dev ensYY # adapter l'IP et l'interface
|
|
|
ip -6 route add default via fe80::100 dev ensYY # adapter l'interface
|
|
|
```
|
|
|
|
|
|
Penser à supprimer le paquet `resolvconf` si il empêche de mettre à jour le fichier `/etc/resolv.conf`.
|
|
|
|
|
|
# Dropbear SSH / initramfs
|
|
|
|
|
|
Pour déchiffrer le disque root à distance, il est commun d'utiliser [Dropbear SSH](https://github.com/mkj/dropbear), un serveur SSH dans l'initramfs. La plupart des tutoriels sur Internet suivent la documentation du [noyau Linux](https://www.kernel.org/doc/Documentation/filesystems/nfs/nfsroot.txt) mais celle-ci n'est pas très explicite et surtout ne fonctionne pas dans le cas où la passerelle (gateway) est hors du sous-réseau (par exemple `100.100.100.100` pour la salle serveur de Grésille).
|
|
|
|
|
|
Dans ce cas il faut :
|
|
|
1. si déjà en place/testé, supprimer la configuration pré-existante et lancer `update-initramfs -u`
|
|
|
2. créer un script `/etc/initramfs-tools/scripts/init-premount/network` avec comme contenu :
|
|
|
```sh
|
|
|
#!/bin/sh
|
|
|
|
|
|
# Adapt here network interface and ip address.
|
|
|
NET_IFACE=XXXXXX
|
|
|
STATIC_IP=193.23.164.XXX/32
|
|
|
STATIC_GW=100.100.100.100
|
|
|
|
|
|
# The script seems to be run on the host when generating the initramfs,
|
|
|
# so we want to avoid messing up with the network there.
|
|
|
ip route get 1.2.3.4 2>/dev/null && exit 0
|
|
|
|
|
|
# Necessary to trick the dropbear script to think that it has already
|
|
|
# configured the network.
|
|
|
touch /run/net-${NET_IFACE}.conf
|
|
|
|
|
|
echo ip link set ${NET_IFACE} up
|
|
|
ip link set ${NET_IFACE} up
|
|
|
sleep 2
|
|
|
|
|
|
echo ip addr add ${STATIC_IP} dev ${NET_IFACE}
|
|
|
ip addr add ${STATIC_IP} dev ${NET_IFACE}
|
|
|
|
|
|
echo ip route add default via ${STATIC_GW} dev ${NET_IFACE} onlink
|
|
|
ip route add default via ${STATIC_GW} dev ${NET_IFACE} onlink
|
|
|
```
|
|
|
3. adapter le nom de l'interface réseau et l'adresse IP statique qui a été attribuée
|
|
|
|
|
|
NB : Pour connaître le nom de l'interface réseau utilisée (eth0, eno1, etc.), on peut la récupérer avec la commande `ip -a`
|
|
|
|
|
|
4. rendre le script exécutable :
|
|
|
`chmod +x /etc/initramfs-tools/scripts/init-premount/network`
|
|
|
5. régénérer l'initramfs :
|
|
|
`update-initramfs -u`
|
|
|
|
|
|
# BSD ? |