Réexamen du PBR Linux

Qu'est-ce que le PBR

Il est souvent écrit en tant que routage de base de stratégie ou routage basé sur une stratégie. (Ce dernier est-il un système Cisco?) Dans cet article, j'écrirai sur PBR pour Linux, mais si vous voulez en savoir plus sur PBR pour Cisco, veuillez vous référer à ici.

Lors de la configuration du routage sous Linux, nous utilisons des tables de routage, mais en réalité, nous pouvons avoir plusieurs tables de routage et il existe une politique de routage qui décide quelle table de routage utiliser. Le PBR est effectué en utilisant cette politique de routage.

Principes de base du PBR

Ceci est magnifiquement organisé pour que cela se sente bien. [Comment Linux sélectionne la route des paquets](Comment Linux sélectionne-t-il la route des paquets)

Tout d'abord, examinons la politique de routage par défaut.

# ip rule
0:      from all lookup local
32766:  from all lookup main
32767:  from all lookup default

De cette façon, dans l'état initial, il est configuré pour passer à local, principal, par défaut dans cet ordre. Il n'est pas défini pour 1-32765, mais vous pouvez ajouter la stratégie manuellement. Comment la politique de routage fait référence à la table de routage

  1. Parcourir le cache
  1. Reportez-vous à la table locale si elle n'est pas dans le cache
  2. Reportez-vous à la table ajoutée manuellement (le cas échéant) si elle ne figure pas dans la table locale
  3. Reportez-vous au tableau principal s'il ne figure pas dans le tableau ajouté manuellement
  4. Reportez-vous au tableau par défaut s'il ne figure pas dans le tableau principal

De cette façon, s'il n'y a pas de table écrite dans la règle suivante, sinon, elle va à la table de routage écrite dans la règle suivante. Et le contenu de la table de routage est référencé comme ceci.

  1. Sélectionnez l'itinéraire le plus spécifique (masque de réseau long) parmi les itinéraires correspondants
  1. S'il existe plusieurs routes avec la même longueur de masque de réseau, sélectionnez la route correspondante avec le TOS défini.
  2. S'il existe plusieurs itinéraires avec le même TOS, sélectionnez l'itinéraire avec la métrique la plus petite.
  3. S'il existe plusieurs itinéraires avec la même métrique, sélectionnez le dernier itinéraire ajouté.

«Matching route» signifie que l'adresse IP de destination (plage) écrite dans la table de routage et l'adresse IP de destination du paquet que vous souhaitez envoyer correspondent. Dans la table de routage, l'adresse IP de destination est utilisée comme base de jugement, donc si vous souhaitez acheminer en utilisant d'autres critères, vous devez utiliser une stratégie de routage antérieure à cela.

Routage de la politique source

En gros, "je veux sélectionner une table de routage basée sur l'IP source".

Consultez cette zone pour plus de détails. Linux Advanced Routing & Traffic Control HOWTO Paramètres de routage pour les machines Linux avec deux Nic gestion du routage IP basée sur des règles Pointant vers deux cartes réseau vers le même sous-réseau ou parlant de routage source Linux Policy Base Routing

Regardons à nouveau les règles par défaut.

# ip rule
0:      from all lookup local
32766:  from all lookup main
32767:  from all lookup default

Il dit «de tous», ce qui correspond à toutes les adresses IP sortantes. Ajoutons une règle qui spécifie la source.

#ip rule add from 172.10.10.1/24 table 100
#ip rule
0:      from all lookup local
32765:  from 172.10.10.1/24 lookup 100
32766:  from all lookup main
32767:  from all lookup default

J'ai peur que si je ne peux pas me connecter en spécifiant par erreur la source de la route réellement utilisée pour SSH, etc., je limiterai donc également la destination. Vous pouvez également accélérer l'ordre de référence en spécifiant un numéro plus jeune avec prio.

#ip rule add from 172.10.10.2/24 to 172.20.20.1/32 table 101 prio 100
#ip rule
0:      from all lookup local
100:    from 172.10.10.2/24 to 172.20.20.1 lookup 101
32765:  from 172.10.10.1/24 lookup 100
32766:  from all lookup main
32767:  from all lookup default

Si l'adresse IP source n'est pas spécifiée

Surtout si l'application ne spécifie pas l'adresse IP source (par exemple, lorsque vous appuyez sur Ping, vous n'incluez généralement que l'adresse IP de destination dans la commande, pas l'adresse IP source. Bien sûr, spécifiez-la avec l'option -I. C'est possible, cependant.) Apparemment, cela correspond à la règle «de tout». Ensuite, une route correspondante est trouvée et l'IP source est décidée, mais il semble que la politique de routage soit à nouveau référencée avec les informations de cette IP source.

Puisque l'adresse IP source a été décidée cette fois, il est possible de frapper non seulement «de tous» mais aussi «de XX.XX.XX.XX».

La raison pour laquelle la politique de routage est mentionnée deux fois est que si vous regardez comment les paquets circulent à l'intérieur de Linux, c'est parce que les paquets ont passé la décision de routage deux fois après avoir quitté le processus local. Je pense que ce sera. tables_traverse.jpg

Si le IF source n'est pas spécifié

Surtout si l'application ne spécifie pas de IF source, elle suivra probablement la note «dev XXXX» pour le routage correspondant.

#ip route
default via 172.19.48.1 dev eth0
172.19.48.0/20 dev eth0 proto kernel scope link src 172.19.49.170

En d'autres termes, même s'il s'agit d'une réponse à un paquet venant de l'extérieur, il ne renvoie pas toujours une réponse du IF reçu, et il adhère au routage. (Pour l'adresse IP source, l'adresse IP au moment de la réception doit être utilisée)

Déterminer l'expéditeur

Je ne savais pas ce que c'était, alors je l'ai vérifié. Les outils utilisés pour la validation sont le ping et le traceroute. Comme mentionné précédemment, ping vous permet de spécifier la source avec l'option -I. Vous pouvez également spécifier la source avec les options -i et -s dans traceroute.

De plus, nous l'appellerons ici comme suit.

--Entrez la partie dev XXXX décrite dans le routage IF --La partie de src X.X.X.X décrite dans le routage est décrite IP --Il existe une spécification qui est activement définie par l'application

résultat

Spécification de l'adresse IP source Spécification du IF source résultat
Aucun Aucun Envoyé du IF répertorié avec l'adresse IP répertoriée
Oui Aucun Envoyé du IF répertorié avec l'adresse IP spécifiée
Aucun Oui Envoyé du IF désigné avec l'adresse IP répertoriée
Oui Oui Il est envoyé avec l'adresse IP spécifiée. Le FI source sera décrit dès son organisation.

Je veux avoir une politique de routage plus fine

En marquant à l'aide du pare-feu Linux, vous pouvez écrire une politique de routage pour ce marquage.

Veuillez consulter ici pour plus de détails. Appliquer DS-Lite uniquement aux ports 80 et 443 à l'aide de FWMARK Tutoriel Iptables 1.2.2

La raison en est que les modèles qui peuvent être spécifiés dans le pare-feu Linux (par exemple, en utilisant la commande iptables) sont très détaillés, ce qui vous donne plus de flexibilité dans l'écriture de règles qui correspondent aux paquets.

Cependant, il y a quelques mises en garde.

Depuis Contrôle complet du trafic avec NETMARK et iproute2

[Remarque] Lors du contrôle du routage à l'aide de fwmark dans iproute2, il semble que si la passerelle par défaut n'est pas définie, elle sera traitée comme "Réseau inaccessible" avant d'accéder à la table fwmark, donc soyez prudent.

Veuillez noter que vous en avez peut-être été accro une fois. (À ce moment-là, c'était CentOS 7.3) Probablement, il passe par la décision de routage immédiatement après avoir quitté le processus local, donc s'il n'y a pas de routage correspondant ici, il sera traité comme "Réseau inaccessible".

Je souhaite séparer le routage pour chaque processus

Cela ne peut pas être réalisé avec PBR, mais cela peut être réalisé en utilisant NameSpace.

Consultez cette zone pour plus de détails. Table de routage Linux distincte à l'aide de l'espace de noms réseau Comment utiliser la commande ip netns (la gamme d'expériences réseau s'élargira) ip-netns(8) — Linux manual page Essayer de gérer VXLAN sous Linux

Utilisons iproute2

Jusqu'à présent, nous avons utilisé la commande ip pour examiner le contenu de PBR, mais j'aimerais également mentionner d'autres méthodes. Il est recommandé de limiter autant que possible la méthode utilisée pour modifier les paramètres ou de clarifier la répartition des rôles. (Sinon, vous frapperez toujours quelque part et des inconvénients inattendus se produiront)

iproute2 Ce paquet contient des commandes ip et ainsi de suite. Dans le routage, nous utilisons principalement «ip rule» qui peut afficher et utiliser la politique de routage et «ip route» qui peut afficher et faire fonctionner la table de routage. Le contenu défini par cette commande sera immédiatement reflété, mais disparaîtra au redémarrage. En cas d'urgence, vous pouvez le redémarrer pour relever le défi en toute confiance. En gros, vous devriez pouvoir utiliser n'importe quelle distribution (même un système embarqué), il est donc pratique de maîtriser iproute2.

Veuillez consulter ici pour plus de détails. Linux Advanced Routing & Traffic Control HOWTO ip-rule(8) — Linux manual page ip-route(8) — Linux manual page Configurer les routes statiques avec des commandes IP

network-tools Un package super-typique lié au réseau qui inclut ifconfig, arp, route et netstat. Cependant, il est obsolète aujourd'hui. Beaucoup de gens trouvent cela plus facile à utiliser, mais nous vous recommandons d'utiliser iproute2 à partir de maintenant.

NetworkManager

Dans la série RedHat, les paramètres réseau sont souvent définis avec Netowrk Manager. Il existe une interface graphique, mais TUI et CLI sont également disponibles, qui peuvent être gérées respectivement par la commande nmtui et la commande nmcli. Pour la plupart des paramètres réseau, nmtui est suffisant, mais pour des paramètres plus avancés comme celui-ci, utilisez la commande CLI nmcli. Les paramètres dans nmcli ne sont pas (pour l'instant) traités dans cet article, mais cela est plus pratique si vous configurez normalement votre réseau dans Network Manager. Cependant, le PBR n'est pas assez bon et difficile à gérer. Tout d'abord, je pense qu'il vaut mieux s'habituer à l'opération avec la commande ip avant de l'utiliser.

Veuillez consulter ici pour plus de détails. Configurez le routage basé sur des stratégies pour définir des routes alternatives (https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/8/html/configuring_and_managing_networking/configuring-policy-based-routing-to-define- alternative-routes_configuring-and-management-networking) Paramètres réseau RHEL7

Ecrire directement dans le fichier de configuration

Ici, je parlerai de Red Hat. (Désolé, je ne connais pas debian ...) Netowork Manager, que j'ai présenté plus tôt, a de nombreux environnements qui sont intentionnellement arrêtés. Si vous ne souhaitez pas utiliser NetoworkManager mais souhaitez conserver les paramètres même après le redémarrage, vous pouvez le faire en écrivant directement dans le fichier de paramètres. Encore une fois, je pense qu'il est préférable de s'y habituer avec la commande ip.

Veuillez consulter ici pour plus de détails. J'ai essayé de définir le routage basé sur des politiques dans RHEL 7.4. Définition des routes statiques dans les fichiers IFCFG Définir le routage basé sur des règles (PBR) sur RHEL 7 et CentOS 7

finalement

Veuillez me pardonner bien qu'il s'agisse d'un article découpé avec seulement des citations et des liens.

Recommended Posts

Réexamen du PBR Linux
Linux
PBR (Policy Base Routing) sur Linux
mémorandum Linux
Commande Linux n ° 4
Commande Linux n ° 3
Présentation de Linux
Bases de Linux
direnv (linux)
Organisation Linux
commandes linux
Pratique Linux
Ubuntu Linux 20.04
Processus Linux
Commande Linux n ° 5
À propos de Linux
Bases de Linux
Oubliez Linux
À propos de Linux
Commande Linux
À propos de Linux
À propos de Linux
Redirection Linux