Outils pour utilisateurs

Outils du site


infrastructure:reseau

Réseau du GInfo

Toutes les prises des associations sont connectées à ce réseau (y compris celles du GInfo). Cela permet aux associations d'avoir un accès aux services du GInfo (stockage notamment) ainsi qu'à internet.

Association Dénomination bâtiment Prises connectées
GInfo Couloir CRI 104 104-1 104-2 104-03A 104-04B 104-03 104-04
MDV Bocal de verre rue haute devant couloir assos 1, 2, 3, 4
ISF EQ1 couloir associations 5
Farigoule EQ1 couloir associations 6
BDE EQ1 couloir associations 7 (attention téléphone IP dessus)
BDA EQ1 couloir associations 8
BDS EQ1 couloir associations 10
BDB du Foy's EQ1 couloir associations 11
Echange Phocéens EQ1 couloir associations C13, C14, C15, C16
Cheer Up ! EQ1 couloir associations C17, C18
Club Robot EGab Plot4/RDC/B.05 25, 27A
KSI Plot4/ET1/B105/ 45B, 46C
Foceen Plot4/ET2/B103 63A
Fablab EQ2-1 & EQ2-2 01, 02, 03, 04, 05, 05, 07, 08, 09, 10, 11, 12
Bar'bu Plot4/RDC/026 09D
PhyTV Plot3/RDC/021A 10, 11, 31, 34

Documentation avancée

Tout le réseau est articulé autour d'une machine appelée cœur de réseau (le routeur Odin, qui en fait n'est pas un routeur mais juste un serveur DNS/DHCP, nous verrons cela par la suite). En voici la documentation :

Documentation réseau 2016/2017

Ancienne documentation du réseau GInfo (obsolète)

La documentation ci présente en pdf explique les principes de base du réseau tandis que le wiki donne explicitement tout ce qu'il faut faire (notamment les configs) pour remettre le routeur en place en cas de panne.

Préambule

Préambule sur l'organisation du réseau

Il convient d'avoir une bonne vision du réseau du GInfo avant de commencer. Le réseau du GInfo dispose d'une machine maître, Odin. Celui ci se charge de distribuer les ip aux ordinateurs sur le réseau, mais pas aux serveurs, qui eux disposent d'une ip statique directement définie dans leur configuration. Les ip distribuées par le routeur vont de 10.61.16.50 à 10.61.16.253; par exemple, un ordinateur du local dispose de l'ip 10.61.16.51. L'accès à internet est assuré par le portail captif du CRI (mais les serveurs sont exempts de ce portail et de toute sorte de limitation de débit) pour cela le routeur doit être configuré pour la passerelle d'ip 10.61.16.254. Nous verrons la configuration de tout cela en détail, mais en résumé :

Plage IP statiquement attribuée sur les machines
Plage d'IP disponible 10.61.16.1 - 10.61.16.254
Plage d'IP coeur, switch et management 10.61.16.1 - 10.61.16.9
Plage d'IP serveurs physiques 10.61.16.10 - 10.61.16.19
Plage d'IP serveurs virtuels (si hors DMZ) 10.61.16.20 - 10.61.16.49
Plage IP distribuée par le routeur
Plage d'IP PC GInfo 10.61.16.50 - 10.61.16.69
Plage d'IP libre 10.61.16.70 - 10.61.16.253
Informations supplémentaires
Serveur DNS 10.61.16.1 (le routeur qui forward sur le serveur DNS du Cri)
Masque de sous réseau 255.255.255.0
Si Odin tombe en panne, le serveur DHCP/DNS secondaire de Bor, qui est un LXC nommé Meili, dont nous verrons la configuration après celle d'Odin, permet de prendre le relais.
Les machines virtuelles sont confinées dans une zone demilitarisée (DMZ) qui ne fait pas partie du réseau associatif. Plus plus d'infos : LXC

Préambule sur les branchements

Odin dispose de deux prises ethernet sur la carte mère, seulement une prise sera configurée et reliée au switch, de manière à distribuer les ip aux utilisateurs.

Actuellement, les branchements sont les suivants :

  • Les serveurs (et leurs prises de management), les prises du local sont branchées sur le switch
  • La routeur est branché sur le switch et distribue les IP (via DHCP) à tout ce qui est branché sur le switch
  • La prise murale du CRI est branchée sur le switch, elle fait le lien avec le VLAN associatif (réseau virtuel configuré sur les switchs)

En bref, il convient de tout brancher sur le switch Ratatosk pour assurer le fonctionnement de notre réseau, peut importe où les prises sont branchées.

Préambule sur la machine physique

Odin et Bor doivent être installés avant de procéder à l'installation réseau. Pour cela je vous invite à lire leurs pages avant tout chose.

La configuration du serveur DHCP/DNS primaire (Odin)

Gestion des interface physiques

On commence par configurer le fichier des interfaces réseau comme suit (pour les détails de l'utilité de chaque élément lire la doc) :

/etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
source /etc/network/interfaces.d/*
# The loopback network interface
auto lo
iface lo inet loopback
 
auto enp5s0
iface enp5s0 inet static
      address 10.61.16.1
      netmask 255.255.255.0
      dns-nameservers 10.61.16.1 10.61.16.2
      gateway 10.61.16.254
      domain-search ginfo

Serveur DHCP

Le serveur DHCP va s'occuper de distribuer les IP aux machines de notre réseau. Il faut d’abord s’assurer que le serveur en question est installé :

$> sudo apt-get install isc-dhcp-server

Toute la configuration du serveur dhcp se trouve dans /etc/dhcp. On édite ensuite donc les fichiers suivants :

/etc/dhcp/dhcp-failover.conf
# -*- mode: conf-unix; coding: utf-8 -*-
failover peer "dhcp-failover" {
  primary;
  address 10.61.16.1;
  port 647;
  peer address 10.61.16.2;
  peer port 647;
  max-response-delay 30;
  max-unacked-updates 10;
  load balance max seconds 3;
  mclt 1800;
  split 128;
}
/etc/dhcp/dhcpd.conf
authoritative;
default-lease-time 3600;
max-lease-time 7200;
server-name "routeur";
 
include "/etc/dhcp/dhcp-failover.conf";
 
subnet 10.61.16.0 netmask 255.255.255.0
{
        interface "enp5s0";
        option domain-name "ginfo";
        option domain-name-servers 10.61.16.1;
        option broadcast-address 10.61.16.255;
        option subnet-mask 255.255.255.0;
        option routers 10.61.16.254;
 
        pool
        {
                failover peer "dhcp-failover";
                range 10.61.16.100 10.61.16.200;
        }
        group
        {
        include "/etc/dhcp/dhcp-group.conf";
        }
}
On inclus dans /etc/dhcp/dhcpd.conf le fichier /etc/dhcp/dhcp-group.conf qui contiendra toutes les IPs fixes attribuées notamment aux pc du ginfo. Si on veut donner une ip à une machine par exemple, il faudra éditer /etc/dhcp/dhcp-group.conf ET NON /etc/dhcp/dhcpd.conf
/etc/dhcp/dhcp-group.conf
                #management
                host idracbor  {
                        hardware ethernet b8:ac:6f:8e:d8:37;
                        fixed-address 10.61.16.5;
                }
                #10:serveurs
                #20-49:lxc
                host bor_calendrier {
                        hardware ethernet 00:15:3e:24:9b:c8;
                        fixed-address 10.61.16.28;
                }
                #50: postes de travail
                host hal {
                        hardware ethernet 00:21:70:4a:47:83;
                        fixed-address 10.61.16.7;
                }
 
                host nanna64 {
                         hardware ethernet 00:24:e8:1d:fb:96;
                         fixed-address 10.61.16.51;
                }
                host gadjo67 {
                         hardware ethernet 00:24:e8:13:11:a7;
                         fixed-address 10.61.16.52;
                }

Il faut aussi penser à lier le serveur Dhcp à l'interface physique en éditant le fichier suivant :

Serveur DNS

Le serveur DNS va permettre de résoudre les noms de domaine. Pour cela on utilise bind9, il faut l'installer :

$> sudo apt-get install bind9

Il faut ensuite configurer 5 fichiers :

/etc/bind/named.conf
// This is the primary configuration file for the BIND DNS server named.
acl internals {
        127.0.0.1/8;
        10.61.16.0/24;
};
 
include "/etc/bind/named.conf.options";
include "/etc/bind/named.conf.default-zones";
include "/etc/bind/named.conf.local";
/etc/bind/named.conf.local
//
// Do any local configuration here
//
 
zone "ginfo"
{
        type master;
        file "/var/cache/bind/db.ginfo";
        forwarders {};
        //allow-update { key ns-ginfo-local_rndc-key; };
};
 
zone "61.10.in-addr.arpa"
{
        type master;
        file "/var/cache/bind/db.ginfo.inv";
        forwarders {};
        //allow-update { key ns-ginfo-local_rndc-key; };
};
Il faut savoir que les records CNAME sont fait pour déclarer qu'un nom doit pointer un autre nom alors que les recors de type A sont fait pour déclarer qu'un nom doit pointer sur une ip
/var/cache/bind/db.ginfo
$TTL    3600
@              IN      SOA     routeur.ginfo     root.ginfo. (
                 20170327        ;Serial
                 3600            ;Refresh [1h]
                 600             ;Retry [10m]
                 86400           ;Expire [1d]
                 600)            ;Negative Cache TTL [1h]
;
@              IN      NS      routeur.ginfo.
 
;coeur
routeur        IN      A       10.61.16.1
coeur          IN      CNAME   routeur
cri            IN      A       10.61.16.254
ratatosk       IN      A       10.61.16.4
switch         IN      CNAME   ratatosk
 
;serveurs
odin           IN      CNAME   routeur
bor            IN      A       10.61.16.10
heimdall       IN      A       10.61.16.11
grydur         IN      A       10.61.16.12
 
;lxc
meili          IN      A       10.61.16.2
sas            IN      A       10.61.16.20
samba          IN      A       10.61.16.24
teamspeak      IN      A       10.61.16.25
apache         IN      A       10.61.16.26
mysql          IN      A       10.61.16.27
calendrier     IN      A       10.61.16.28
 
;web
phpmyadmin     IN      CNAME   apache
pydio          IN      CNAME   apache
 
;postes de travail
hal            IN      A       10.61.16.50
nanna64        IN      A       10.61.16.51
gadjo67        IN      A       10.61.16.52
/var/cache/bind/db.ginfo.inv
@       IN      SOA     routeur.ginfo. root.ginfo. (
                        2017032700      ; Serial
                        3600            ; Refresh [1h]
                        600             ; Retry [10m]
                        86400           ; Expire [1d]
                        600 )           ; Negative Cache TTL [1h]
;
@       IN      NS      routeur.ginfo.
 
1.16    IN      PTR     routeur.ginfo.
4.16    IN      PTR     ratatosk.ginfo.
254.16  IN      PTR     cri.ginfo.
 
;serveurs
10.16   IN      PTR     bor.ginfo.
11.16   IN      PTR     heimdall.ginfo.
12.16   IN      PTR     grydur.ginfo.
 
;lxc
2.16    IN      PTR     meili.ginfo.
20.16   IN      PTR     sas.ginfo.
24.16   IN      PTR     samba.ginfo.
25.16   IN      PTR     teamspeak.ginfo.
26.16   IN      PTR     apache.ginfo.
27.16   IN      PTR     mysql.ginfo.
28.16   IN      PTR     calendrier.ginfo.
 
;postes de travail
50.16   IN      PTR     hal.ginfo.
51.16   IN      PTR     nanna64.ginfo.
52.16   IN      PTR     gadjo67.ginfo.
/etc/bind/named.conf.options
options {
        directory "/var/cache/bind";
        forward only;
        forwarders {
                147.94.19.254;
        };
 
        //========================================================================
        // If BIND logs error messages about the root key being expired,
        // you will need to update your keys.  See https://www.isc.org/bind-keys
        //========================================================================
        dnssec-validation auto;
 
        auth-nxdomain no;    # conform to RFC1035
        listen-on-v6 { none; };
        listen-on { 127.0.0.1; 10.61.16.1; };
        allow-transfer { none; };
        allow-query { internals; };
        allow-recursion { internals; };
 
        version none;
};

Pour terminer, et tout devrait fonctionner :

$> sudo reboot

La configuration du serveur DHCP/DNS secondaire (Meili)

Pensez à configurer le serveur secondaire Meili avant de vous lancer dans la configuration réseau
La configuration du serveur secondaire est exactement la même que pour le serveur DNS primaire, je vous invite donc à la reproduire à l'identique, puis à faire les quelques ajustements de configuration à la suite de ce message

On commence par configurer l'accès du LXC au réseau :

/etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
source /etc/network/interfaces.d/*
# The loopback network interface
auto lo
iface lo inet loopback
 
auto enp5s0
iface enp5s0 inet static
      address 10.61.16.2
      netmask 255.255.255.0
      dns-nameservers 10.61.16.2 10.61.16.1
      gateway 10.61.16.254

Il faut modifier la configuration du failover pour préciser que ce serveur DNS est le secondaire :

/etc/dhcp/dhcp-failover.conf
# -*- mode: conf-unix; coding: utf-8 -*-
failover peer "dhcp-failover" {
  secondary; # declare this to be the secondary server
  address 10.61.16.2;
  port 647;
  peer address 10.61.16.1;
  peer port 647;
  max-response-delay 30;
  max-unacked-updates 10;
  load balance max seconds 3;
}

On va maintenant configurer la synchronisation des fichiers de conf. De sorte que si l'on modifie la configuration du serveur DHCP ou DNS sur le premier serveur, cette configuration se répercute 15 jours (en cas d'erreur) plus tard sur le second serveur. On fera cela avec rsync, un utilitaire bien pratique pour synchroniser des fichiers

$> sudo apt-get install rsync

On installe notre clé en root sur Odin

$> sudo su
$> ssh-keygen #(si pas fait auparavant)
$> cat ~/.ssh/id_rsa.pub | ssh ginfo@10.61.16.1 "mkdir -p ~/.ssh && cat >>  ~/.ssh/authorized_keys"

On créer maintenant le fichier de configuration :

/var/cache/synchro/synchro.sh
#! /bin/bash
 
rsync -v -e ssh ginfo@10.61.16.1:/etc/dhcp/dhcp-group.conf /etc/dhcp/
rsync -v -e ssh ginfo@10.61.16.1:/var/cache/bind/db.ginfo.inv /var/cache/bind/
rsync -v -e ssh ginfo@10.61.16.1:/var/cache/bind/db.ginfo /var/cache/bind/
rsync -v -e ssh ginfo@10.61.16.1:/etc/bind/named.conf /etc/bind/
rsync -v -e ssh ginfo@10.61.16.1:/etc/bind/named.conf.local /etc/bind/
rsync -v -e ssh ginfo@10.61.16.1:/etc/bind/named.conf.default-zones /etc/bind/
rsync -v -e ssh ginfo@10.61.16.1:/etc/bind/named.conf.options /etc/bind/
 
service isc-dhcp-server restart
service bind9 restart
$> chmod 755 /var/cache/synchro/synchro.sh

Puis on rajoute la ligne suivante à /etc/crontab pour synchroniser les fichiers tous les 15 jours à minuit :

0 0 */15 * * root /var/cache/synchro/synchro.sh >/dev/null 2>&1

Voir aussi

infrastructure/reseau.txt · Dernière modification: 24/06/2017 17:12 par pnahoum