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.
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
- Parcourir le cache
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.
- Sélectionnez l'itinéraire le plus spécifique (masque de réseau long) parmi les itinéraires correspondants
«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.
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
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.
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)
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. |
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".
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
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
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
Veuillez me pardonner bien qu'il s'agisse d'un article découpé avec seulement des citations et des liens.
Recommended Posts