La solution que j'ai choisie est de placer batman, le nouveau routeur, en aval de l'ancien, de jouer sur le masque de sous-réseau, et de déplacer progressivement les câbles réseau d'un routeur vers l'autre, en commençant par mon réseau intérieur. J'en profite pour virer un petit commutateur sur le réseau intérieur, puisque je déploie en même temps un nouveau commutateur 802.1Q.

Ce choix a pour avantage de minimiser les changements de configuration. Je n'ai eu qu'à corriger le masque de sous-réseau associé au réseau intérieur (l'ancien routeur doit continuer à fonctionner avec les mêmes filtres iptables et les mêmes routes) et jouer avec la passerelle par défaut pour chacune des machines internes. En bref, initialement j'avais « machine interne sur X/24 -> net6501 », maintenant j'ai « machine interne sur X/26 -> batman interface 1 sur X/26 -> batman interface 2 sur Y/26 -> net6501 sur Y/26 ». Les deux sous-réseaux en X/26 et Y/26 sont dans un même /24 (pour ne rien toucher aux adresses IP existantes et aux filtres iptables), mais distincts l'un de l'autre.

Il m'a quand même fallu corriger la configuration réseau du net6501, pour y ajouter des routes vers le « nouveau » réseau interne en /26[1]. Mais, au bout d'une journéenuit de travail, j'ai réussi à tout faire marcher. Le réseau intérieur dispose de toutes les connexions nécessaires, lesquelles passent par les deux routeurs chaînés.

Après une journée à m'assurer que tous les services restaient accessibles, et notamment que mes systèmes auto-hébergés étaient toujours joignables depuis Internet[2], j'ai fait l'opération ultime : redémarrer batman (et le nouveau commutateur), histoire de vérifier que tout continue à fonctionner. Ce fut le cas.

Hier, j'ai défini les filtres iptables sur batman. Après quelques heures de tests, comme toujours, j'ai basculé la politique de chaque chaîne en « DROP ». Bien sûr, il m'a très rapidement fallu ajouter quelques autorisations pour divers flux oubliés mais, globalement, tout s'est bien passé. Y compris les sauvegardes nocturnes pour tout le réseau, la réplication maître/esclave DNS, le service de temps, etc.

Je suis maintenant dans la situation où tout mon réseau intérieur passe par batman (puis par l'ancien pour accéder à mes services segmentés ou à Internet), et rien ne sort de batman qui ne soit explicitement autorisé par un filtre iptables. Les machines du réseau intérieur sont toutes reliées à un commutateur, dans le même VLAN, le routage inter-VLANs étant fait par batman. Sauf qu'il n'y a encore qu'un seul VLAN, pour le réseau intérieur justement.

L'étape suivante est de déplacer mes serveurs corporatifs sur le commutateur, dans leur propre VLAN, avec le routage approprié au niveau de batman en mode « routeur unijambiste ». Ça sera pour la semaine prochaine.

Notes

[1] N'oubliez-pas : j'ai deux connexions Internet, chez deux opérateurs différents, et ce ne sont pas les même flux qui voyagent sur les câbles.

[2] Ce n'était qu'un contrôle de pure routine, puisque je n'ai pas du tout touché aux sous-réseaux associés. Il a quand même fallu corriger des routes internes pour que certains serveurs hébergés puissent joindre des machines internes précises.