2.1.4 Serveur passerelle avec 2 interfaces Ethernet

Réseau local & réseau Internet (FAI)
lundi 21 mars 2005.
 
De l’installation de la seconde carte réseau à la configuration d’un accès haut débit.

Préparation du serveur antares (DEBIAN Woody avec noyau 2.4.19) pour une migration de Internet bas débit (MODEM 56Kb) vers Internet haut débit (terminal ADSL type Freebox ou satellite type ASTRAnet). Installation d’une 2ème carte Ethernet, adaptation de la configuration d’antares, simulation du terminal haut débit à l’aide d’un serveur Linux, abandon de telnet au profit de ssh, mise en service d’une liaison satellite ASTRAnet.

Au départ le serveur antares est la passerelle entre le réseau local et le réseau Internet qu’il accède en bas débit via MODEM. C’est diald qui gère la connexion Internet.

Installation d’une carte Ethernet supplémentaire NETGEAR FA311

La carte mère du PC est déjà équipée d’un chip Ethernet 10BT (Compaq Integrated NetFlex-3/P - ThunderLan) qui sert actuellement à connecter le réseau local. Comme le réseau local est construit autour d’un SWITCH 100BT, la nouvelle carte 100BT sera dédiée au réseau local. L’interface 10BT intégrée sera réaffectée à la connexion du terminal Internet.

Matériel : Carte PCI Fast Ethernet NETGEAR FA311.
Source pilote Linux fourni par le constructeur !
Voir CD fourni sous FA311/LINUX/
S’inspirer du README.

Infos ajoutées à dmesg :

Arrêter le réseau et l’ancien pilote de eth0 et utiliser le nouveau à la place :

eth0 est maintenant sur la nouvelle carte réseau...

Tout semble bien démarrer mais le réseau ne fonctionne pas ! Marche arrière,

OK. Le pilote Linux livré avec la carte, ne fonctionne pas !

-  Pilote livré avec DEBIAN Woody,

OK ! Il n’est pas récent mais il fonctionne du premier coup.

-  Recherche sur
http://www.netgear.com/support/

On trouve un zip avec tous les pilotes en v18...
F31XV18.zip
propose des objets et des sources pour RedHat 7.1 et antérieur (vieux !)
Le source le plus récent est une version de natsemi modifiée par Netgear,

Pour compiler, il faut modifier makefile. Remplacer
/usr/src/linux-2.4
par
/usr/local/src/kernel/kernel-source-2.4.19

L’objet est plus petit que celui inclus dans Woody mais il fonctionne...

-  Si on veut mieux, NETGEAR renvoie vers,
http://www.scyld.com/ethercard_drivers.html

On y trouve effectivement une version plus récente,

mais les instructions pour la compilation ne sont pas précises.
Il faut le compiler avec un autre module, pci-scan.

Au total, télécharger les fichiers
kern_compat.h natsemi.c pci-scan.c pci-scan.h

Adapter l’instruction de compilation trouvée à la fin des .c en fonction de l’arborescence des sources du noyau.

Installer les 2 objets,

Essai OK !

Le même site donne des outils de diagnostic mais certains sont disponibles dans la distribution Debian Woody. Voir paquets, mii-diag et nictools-pci.

mii-tool permet de vérifier les paramètres de la liaison physique mais elle ne donne de résultat que si l’interface est UP.


Ajouter la configuration de la nouvelle interface dans,
/etc/network/interfaces

et la mettre UP,


Utiliser l’ancien serveur vega pour tester l’interface et la solidité du mur antifeu d’antares

vega est le prédécesseur réformé d’antares. Il reprend du service !

-  Reconfigurer vega,
Nouvelle adresse pour eth0
Supprimer le lancement des services superflus (on garde diald pour la connexion Internet, ftpd, telnetd, webmin pour tester l’accès en local)

Le modem n’est plus branché sur antares mais sur vega.


     modem
       |
     vega (serveur test)
eth0 192.168.220.5
       |
cable ethernet croisé
       |
eth1 192.168.220.6
    antares (serveur habituel)
eth0 192.168.210.6
       |
   Réseau local
  192.168.210.0

Fonctions à transférer à vega :
Serveur de connexion Internet diald. Configuration existante.
Autoriser la commande dctrl via 192.168.210.6
dans /etc/hosts.allow,
diald : 192.168.220.6
Serveur de temps local chrony
Mettre à jour le fichier,
/etc/chrony/chrony.conf
pour que vega redevienne serveur de temps actif sur Internet.
Pas de DNS pour vega.
Il peut faire serveur DHCP vis à vis du client antares.


Modifications apportées à la configuration d’antares

antares devient serveur de temps secondaire synchronisé sur vega. Il ne sert plus la connexion à Internet. Son routeur par défaut est vega.

-  Modifier /etc/chrony/chrony.conf,
mettre en commentaire les serveurs Internet et remplacer par,
server 192.168.220.5 minpoll 5 maxpoll 8 maxdelay 0.4 maxdelayratio 1.5
-  Arrêter diald et l’empêcher de démarrer automatiquement au boot (facile à faire avec WEBMIN.)
-  Le GATEWAY devient vega :
Ajouter la route par défaut dans la config de eth1 dans,
/etc/network/interface

-  Reconfigurer le paquet ipmasq pour qu’il démarre au boot après l’établissement des interfaces.

Le mur antifeu sera fixe. L’interface à "masquerader" est automatiquement celle qui a la route par défaut (eth1). Vérifier les règles appliquées par la commande,

-  Configuration du serveur dhcp :
Ajouter le nouveau sous-réseau sans rien dedans.
(sinon il semble qu’il râle)... Si on dit à dhcpd de ne s’occuper que de l’interface qui l’intéresse (le réseau local), il semble qu’il n’y ait plus de problème.
Dans le script /etc/init.d/dhcp, on a déjà

mais c’est le fichier /etc/default/dhcp
qui est pris en compte juste après. Y mettre,
INTERFACES="eth0"
au lieu de,
INTERFACES=""
-  Serveur DNS :
Mettre la zone root en permanence puiqu’il n’y a plus pilotage par ppp-up/down,

-  Pas de service DNS pour le réseau 192.168.220.0
Ajout d’une entrée dans /etc/hosts,
192.168.220.5 vega2
-  Blindage de tous les ports par xinetd
Limiter l’accès au réseau local 192.168.210.0
On peut le faire avec WEBMIN :
Serveurs, Extended Internet Services,
Editer les options par défaut, Permettre l’accès depuis...
Ce qui donne dans /etc/xinetd.conf,

Le problème du temps de réponse anormal quand on ouvre une session telnet sur le réseau local alors que l’accès Internet est fermé, se pose à nouveau.

En traçant les "queries" reçues par DNS, on voit une query IN AAAA (ipv6) qui vient systématiquement avant la query IN A (ipv4). Il semble que ce soit la query IN AAAA qui provoque une query vers Internet. Le telnet client fourni est compilé de telle sorte qu’il tente d’abord d’ouvrir une connexion ipv6 avant de se rabattre en ipv4.

La solution consiste à abandonner telnet au profit de ssh car ce dernier peut être lancé en le forçant à utiliser directement ipv4 avec le paramètre -4.

Avec ssh il faut installer une clé rsa pour valider les échanges entre hôtes mais ceci permet d’échanger des données cryptées et évite d’entrer le mot de passe.


Mise en oeuvre de la communication entre hôtes par ssh

-  Installer le serveur ssh (sshd) sur les hôtes susceptibles d’accepter une connexion ssh.
-  Générer une paire de clés privée/publique sur les hôtes susceptibles d’ouvrir une connexion ssh (initiateurs). Ceci se fait au niveau utilisateur.

génère une clé privée dans ~/.ssh/id_rsa
et la clé publique associée dans ~/.ssh/id_rsa.pub
(ne pas fournir de passphrase, le but étant de lancer une session sécurisée en s’authentifiant automatiquement.)
-  Télécharger la clé publique sur les hôtes accepteurs.
-  Sur les hôtes accepteurs, concaténer les clés des hôtes initiateurs dans un fichier ~/.ssh/authorized_keys

A la première connexion une confirmation est demandée une fois pour toutes et la clé publique de l’hôtes accepteur (provenant de /etc/ssh/ssh_host_rsa_key.pub) est automatiquement ajoutée à ~/.ssh/known_hosts


Configuration de l’interface en dhcp

Par défaut le terminal Internet haut débit propose une connexion IP autoconfigurée en DHCP. On va donc tester le DHCP sur l’interface eth1.

Utilisation de dhcp-client (dhclient).
Changement dans /etc/network/interfaces,

Pas de paramètre particulier dans /etc/dhclient.conf dhclient se lance automatiquement.

Les événements sont tracés dans syslog.

Les baux sont enregistrés dans /var/lib/dhcp/dhclient.leases Le script /etc/dhclient-script transcrit la configuration réseau.

Le fichier /etc/resolv.conf est altéré directement.
Pour réserver le traitement de resolv.conf à un tiers,
par exemple dnsmasq, modifier le script et donner comme
cible un autre fichier. Par exemple,
/etc/dhclient/resolv.conf


Mise en service d’une connexion haut débit réelle.

L’ADSL se faisant attendre :-(
j’opte pour un accès satellite ASTRAnet :

A la base, l’interface Ethernet avec le terminal ASTRAnet doit être configurée en DHCP.

Le bail fourni est le suivant,

dhclient établit son fichier resolv.conf spécifique comme suit,

Le terminal a pour adresse IP 192.168.30.1 par défaut et tout est servi par son intermédiaire. Il fait passerelle par défaut, serveur DNS et serveur DHCP. Il alloue les adresses à partir de 192.168.210.20.

Comme antares est passerelle locale pour mon réseau, seule la première adresse sera allouée à antares. Pour le reste (réseau local) c’est antares qui sert.

La configuration du terminal permet de supprimer la fonction serveur DHCP et de configurer en fixe. On peut se passer de dhclient et mettre tout en dur.

Changement dans /etc/network/interfaces,

L’AUTONEG de l’interface Ethernet ne fonctionne pas avec le terminal. L’interface a du mal à s’établir et on se rabat en HALF DUPLEX.

Test avec mii-diag et mii-tool : Il faut forcer 10BT FDX au lancement du pilote de la puce Ethernet d’antares.

Modification dans /etc/modules

Ayant adopté dnsmasq à la place de bind9 comme resolveur local, je range les attributs DNS du terminal ASTRAnet dans un fichier spécifique /etc/resolv.conf
que je déclare dans les paramètres de dnsmasq dans,
/etc/default/dnsmasq

Je supprime le lancement de diald qui gérait la connexion ppp. C’est ppp qui indiquait si on était ON LINE ou OFF LINE par l’intermédiaire des scripts ip-up et ip-down. Le terminal ASTRAnet ne dit rien, lui...

Développement d’un script de surveillance pour piloter chrony et enregistrer le temps de connexion. L’utilitaire beep est utilisé pour signaler les transitions.

Script placé dans un fichier exécutable /usr/local/sbin/internetmon

Pour son lancement, je crée un rc.local qui n’existe pas par défaut chez Debian :
-  Créer un fichier /etc/init.d/local contenant les programmes perso à lancer au boot,

-  Intégrer le lancement de ce supplément au mécanisme utilisé par Debian (system V) de façon à ce qu’il soit lancé en fin de boot (rang 99),

A noter que le terminal ASTRAnet est déjà un parefeu robuste (son moteur est d’ailleurs un noyau Linux !). Le parefeu d’antares est donc redondant mais je le conserve quand même car je ne désespère pas de passer en ADSL un jour...