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.
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.
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).
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
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"
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