PBR (Policy Base Routing) sur Linux

Je pense que les routeurs Cisco et YAMAHA peuvent être routés basés sur des politiques à l'aide de filtres. J'aimerais aussi le faire sous Linux.

Le routage basé sur des règles est une méthode de routage qui est effectuée au sein de l'hôte, contrairement au routage normal. Utilisez une table de routage spécifique pour une opération spécifique. C'est comme ça. (Difficile à expliquer ...) Par exemple ...

Kimo est un environnement à logements multiples.

Exemple) Je souhaite changer de passerelle lors de l'accès à un port spécifique

Quel genre de situation peut-on envisager? ・ Normalement, j'utilise la ligne A, mais je souhaite utiliser la ligne B pour l'accès http.

L'environnement cette fois est -Supposons que l'hôte dispose de trois lignes extérieures (192.168.0.2, 192.168.1.2, 192.168.2.2) et que les passerelles (192.168.0.1, 192.168.1.1, 192.168.2.1) sont en avance l'une sur l'autre. -L'accès HTTP de 12.34.56.78 à partir de l'hôte provient de la passerelle A. L'accès https de 12.34.56.78 provient de la passerelle B. 12.34.56.78 accès ssh depuis la passerelle C. Je veux accéder à chacun.

図面.png

De quelles fonctionnalités Linux avez-vous besoin pour cela?

Utilisez iptables pour marquer les paquets destinés à un port particulier (iptables) et utilisez la table de routage spécifiée pour les paquets marqués (iproute2).

1. Marquer iptables

Utilisez la table mangle iptables pour marquer les paquets.

# iptables -t mangle -A OUTPUT -p tcp --dport 80 -j MARK --set-mark 1 ← Marquer "1" pour les paquets sortant vers tcp 80
# iptables -t mangle -A OUTPUT -p tcp --dport 443 -j MARK --set-mark 2 ← Marquer "2" pour les paquets sortant vers tcp 443
# iptables -t mangle -A OUTPUT -p tcp --dport 22 -j MARK --set-mark 3 ← Marquer "3" pour les paquets sortant vers tcp 22

2. Ajoutez une règle à iproute2

Spécifiez les règles pour les paquets marqués.

# ip rule add fwmark 1 table 10 ← Reportez-vous au "tableau 10" pour les paquets marqués d'un "1"
# ip rule add fwmark 2 table 20 ← Reportez-vous au "tableau 20" pour les paquets marqués avec "2"
# ip rule add fwmark 3 table 30 ← Reportez-vous au "tableau 30" pour les paquets marqués d'un "3"

De plus, comme il existe plusieurs interfaces adressées à la passerelle, spécifiez également le paquet de retour.

# ip rule add from 192.168.0.2 table 10 ← Reportez-vous au "tableau 10" pour les paquets qui entrent "192.168.0.2"
# ip rule add from 192.168.1.2 table 20 ← Reportez-vous au "tableau 20" pour les paquets entrant "192.168.1.2"
# ip rule add from 192.168.2.2 table 30 ← Reportez-vous au "tableau 30" pour les paquets entrant "192.168.2.2"

3. Ajouter une route à iproute2

Créez une table racine à laquelle faire référence.

# ip route add default dev eth1 via 192.168.0.1 table 10 ← La passerelle par défaut de "table10" est 192.168.0.1 avant eth1
# ip route add default dev eth2 via 192.168.1.1 table 20 ← La passerelle par défaut de "table20" est 192.168.1.1 avant eth2
# ip route add default dev eth3 via 192.168.2.1 table 30 ← La passerelle par défaut de "table30" est 192.168.2.1 avant eth3

Il est préférable d'ajouter un lien local à chaque table, alors traitons-le comme il convient. Comment écrire un lien local

 ip route show table main

Veuillez vous référer et appliquer la valeur par défaut inattendue!

Ça ressemble à ça avec une doublure

#  ip route show table main | grep -Ev ^default | while read ROUTE ; do ip route add table "nom de la table" $ROUTE; done

Ceci termine les réglages. Vérifions-le réellement. Si tout va bien, vous pouvez ajouter / etc / rc.local ou quelque chose à votre script de démarrage.

Recommended Posts

PBR (Policy Base Routing) sur Linux
Routage de base de politique Linux
Réexamen du PBR Linux
Démarrer un processus avec une politique de planification sous Linux
jblas sur Arch Linux
Routeur NAT sur Linux
Développer .NET sur Linux
Wake on LAN sous Linux
Surveiller le trafic sous Linux
Mettre à jour vscode sur Linux
Créer LiveUSB sur Linux
Fonctionnement Linux sur Win10
Mémo de configuration NTP sous Linux
Installer Linux sur Chromebox
Surveiller l'utilisation du disque sous Linux
Utiliser Github Desktop sous Linux
Elixir = à l'aise avec Linux Mint
Lire la tension du noyau sous Linux
Mettez jenv dans Amazon Linux
Commande df facile sur Linux
Linux sur Windows -1-: Présentation de Debian
Installez tomcat 5.5 sur Amazon Linux.
Présentation d'Elixir à Linux Mint
Installation de Homebrew sur Amazon Linux 2
Construction de l'environnement Linux (sur environnement WSL)
Utiliser Linux sur Windows 10 (WSL2)