[LINUX] Routage basé sur des règles sur des machines avec plusieurs cartes réseau

introduction

Je me spécialise dans les bases de données, notamment PostgreSQL (?), Mais sur demande, je mets également en place le réseau tout en étudiant avec un autocollant. Cette fois, pour une machine Linux avec plusieurs cartes réseau, une machine avec une seule carte réseau communiquera avec les deux cartes réseau.

Qu'est-ce que ça veut dire

Veuillez consulter la figure suivante. 001.png

Le LAN bleu est le segment de 192.168.10.0/24 et le LAN vert est le segment de 192.168.20.0/24.

La machine A possède deux cartes réseau, chacune connectée au bleu et au vert.

La machine B n'a qu'une seule carte réseau et n'est connectée qu'au LAN vert.

En d'autres termes, avec cette configuration réseau, nous voulons faire quelque chose comme la figure suivante.

002.png

Routage asymétrique

En fait, avec cette configuration réseau, je ne peux pas faire ce que je veux faire. Même si je saute le ping, il ne revient pas. Pourquoi cela arrive-t-il? Décrit ce qu'il advient de la communication de la machine B vers la machine A.

Tout d'abord, la machine B ne sait pas où l'adresse IP "192.168.10.2" n'est pas sur le même segment. Dans ce cas, accédez à la passerelle par défaut pour les demandes.

0003.png

La passerelle transmet les informations de routage au réseau à l'adresse de destination.

004.png

Lorsqu'il atteint la machine A, la machine A essaie de répondre depuis NIC0, qui est le même segment que le segment vert auquel la machine source B est connectée, au lieu du NIC1 reçu. ** ** 005.png

Si vous répondez de NIC0, la route reçue et la route transmise seront différentes ** routage asymétrique **. Et Linux interdit cela par défaut, et aucune réponse n'est retournée à la machine B.

Deux mesures

Il existe deux contre-mesures possibles.

Autoriser le routage asymétrique

La première consiste à autoriser le routage asymétrique. Cependant, le routage asymétrique peut usurper la machine, c'est donc une bonne idée de l'autoriser. Je ne vais pas expliquer comment faire cela dans cet article, mais si vous souhaitez l'autoriser, essayez de rechercher ** rp_filter **.

Configurer le routage statique

Cliquez ici pour le favori de cet article. En bref, ce qui ne va pas avec le comportement de la machine A est qu'il a été reçu par NIC1 mais tente de répondre depuis NIC0. Ensuite, si vous le recevez sur NIC1, vous pouvez le forcer à le renvoyer depuis NIC1. La méthode de paramétrage est le ** routage statique **.

Procédure de configuration du routage statique

Je voudrais mettre en place quelque chose appelé routage basé sur des politiques.

Ajouter au fichier de table de routage

Ajoutez les deux lignes suivantes à / etc / iproute2 / rt_tables.

100     rule01
101     rule02

Créer un fichier de règles

Dans le répertoire / etc / sysconfig / network-scripts, créez un fichier de règles à appliquer à chacune des interfaces NIC0 et NIC1.

# vi rule-nic0
from 192.168.20.2/32 table rule02 priority 200
# vi rule-nic1
from 192.168.10.2/32 table rule01 priority 100

Créer un fichier de routage

Toujours dans le répertoire / etc / sysconfig / network-scripts, créez un fichier de routage qui s'applique à chacune des interfaces NIC0 et NIC1.

# vi route-nic0
192.168.20.0/24 dev nic0 table rule02
default via 192.168.20.254 dev nic0 table rule02
# vi route-nic1
192.168.10.0/24 dev nic1 table rule01
default via 192.168.10.254 dev nic1 table rule01

Redémarrer le réseau

# systemctl restart network

Maintenant, si les paramètres sont corrects, vous devriez pouvoir atteindre votre objectif initial! Je vous remercie pour votre travail acharné!

De côté

Veuillez consulter la figure suivante.

006.png

Une telle communication est dans le même segment et peut être effectuée sans aucun problème. En dehors de cela, vous vous demandez peut-être si la machine A a été atteinte et vous devez prendre la peine de communiquer à partir d'un segment de réseau différent.

** Je le pense aussi. ** **

Mais ** je n'ai pas d'autre choix que de le faire si on me dit de le faire. ** **

C'est toujours un mystère, même après que ce soit fini, quel genre de but a été fait pour faire une telle chose.

Recommended Posts

Routage basé sur des règles sur des machines avec plusieurs cartes réseau
Sélection multiple avec Jupyter
Traitement de fichiers multiples avec Kivy + Matplotlib + Draw Graph sur GUI