La question la plus fréquemment posée sur l'utilisation du routage récursif est: "Que dois-je faire si le fournisseur principal nous attribue une adresse IP via DHCP, et la passerelle par défaut change-t-elle souvent?"
Attention! les matériaux et les schémas de cet article sont simplifiés au primitivisme afin de donner une idée générale de la méthode pour résoudre le problème. Pas d'approfondissement en particulier.
À quoi sert le routage récursif? Pour surveiller la disponibilité d'Internet
derrière la passerelle du fournisseur . Après tout, il arrive souvent que le routeur du fournisseur réponde parfaitement aux demandes d'écho, mais la liaison [montante] du fournisseur au réseau mondial a disparu pour une raison quelconque.
Le routage récursif vous permet d'évaluer la disponibilité de l'accès Internet via un fournisseur sélectionné et de décider du routage du trafic.
Cependant, le fait est que l'utilisation du routage récursif suppose la
présence d'une indication explicite directe de l'
adresse IP de la passerelle clouée avec des clous parmi les paramètres de l'itinéraire créé. La spécification du nom de l'interface de diffusion en tant que passerelle est incorrecte et, dans de nombreux cas, ne fonctionne tout simplement pas, car requiert proxy-arp du fournisseur. Et pourtant, au lieu du fournisseur, proxy-arp peut activer votre voisin sur le commutateur de fournisseur et essayer d'intercepter votre trafic de cette manière en organisant le MITM classique!
La magie du routage récursif est cachée derrière les paramètres
«scope» et «target-scope» . Pour qu'un itinéraire fonctionne comme récursif, sa «portée cible» doit être supérieure ou égale à la valeur «portée» de l'itinéraire statique auquel il se réfère récursivement, et la passerelle spécifiée dans l'itinéraire était hors de portée directe via l'une des interfaces.
Considérez le schéma Active / Backup le plus simple. Notre routeur exécute NAT et est connecté à deux fournisseurs via les interfaces Ether1-isp1 et Ether2-isp2. Le fournisseur principal (ISP-1) distribue les adresses IP à ses clients en utilisant le protocole DHCP et rien d'autre. Le deuxième fournisseur nous fournit une adresse IP statique, mais une vitesse beaucoup plus faible.
Le passage à la sauvegarde (ISP-2) devrait se produire lorsque l'accès à Internet via le fournisseur principal devient impossible.

Le point culminant du fournisseur pour un tel schéma est le changement arbitraire périodique non seulement de l'adresse IP du client, mais aussi de la passerelle par défaut.
Avant la version 6.39, je devais voir des béquilles très sophistiquées dans diverses combinaisons de
sheduler , de
netwatch et de mécanismes similaires.
À partir de la version 6.39, les développeurs de RouterOS sont allés à la rencontre de ces utilisateurs et ont créé la possibilité d'appeler un
script spécial lorsque le client DHCP est déclenché sur l'appareil.
En fait, la solution se compose de deux parties:
- besoin d'obtenir le protocole DHCP à partir de l'adresse IP du fournisseur et de l'adresse de passerelle pour une utilisation dans les routes récursives
- si possible, excluez l'adresse de passerelle reçue du fournisseur de l'utilisation automatique.
Commençons donc par la fin.
Nous allons créer une route de sauvegarde via ISP-2 avec une valeur de distance supérieure à celle de la future route principale. Dans cet exemple, j'ai utilisé "distance = 2":
Sauvegarde via ISP-2/ip route add dst-address=0.0.0.0/0 gateway=192.0.2.1 distance=2
De plus, afin de recevoir l'itinéraire par défaut du fournisseur ISP-1, mais pas pour l'utiliser directement, il existe une valeur spéciale «distance = 255». Un itinéraire avec cette valeur de distance ira à la table de routage du système,
mais ne deviendra jamais actif .
Code/ip dhcp-client add comment="ISP-1 dhcp" default-route-distance=255 dhcp-options=hostname,clientid interface=Ether1-isp1
Nous avons besoin d'une telle route uniquement pour lire les paramètres envoyés par le fournisseur et les implémenter dans les paramètres des routes récursives via un script.
Parmi les paramètres reçus, nous nous intéressons le plus à la variable $ gateway-address. Comme son nom l'indique, il contient l'adresse de la passerelle par défaut dans le réseau du fournisseur. Nous l'utiliserons pour mettre à jour les itinéraires récursifs.
Les routes récursives elles-mêmes doivent être correctement reconnues à partir du script. Pour ce faire, au stade de leur création, nous indiquerons un «commentaire» unique, qui sera utilisé pour les retrouver à l'intérieur du tableau. Code pour créer une paire de routes récursive:
Créer une paire d'itinéraires/ip route add dst-address=8.8.4.4 gateway=127.0.0.1 scope=30 target-scope=30 comment=" isp1route " disabled=yes
/ip route add dst-address=0.0.0.0/0 gateway=8.8.4.4 check-gateway=ping
La première ligne doit (et va!) Pointer vers une véritable passerelle dans le réseau du fournisseur uniquement après que le fournisseur a émis les paramètres via DHCP et ils seront traités à l'aide du script client DHCP:
Script simplifié/ip route set [find comment=" isp1route "] gateway=($"gateway-address") disabled=no
Option plus avancée:if ($bound=1) do={ /ip route set [find comment=" isp1route "] gateway=($"gateway-address")disabled=no; :log warning ("New ISP1 gateway: ".($"gateway-address")) }
Désormais, à la réception d'une adresse IP du fournisseur ISP-1 à utiliser comme passerelle par défaut, elle sera incluse dans la paire de routes
au lieu de 127.0.0.1.La deuxième ligne, où la route vers 0.0.0.0/0 est indiquée, effectue en fait toute la magie. La réponse du nœud 8.8.4.4 spécifié comme passerelle sera vérifiée avec l'option «check-gateway = ping» précisément via le réseau ISP-1. Si le nœud 8.8.4.4 ne répond pas deux fois aux demandes d'écho dans les 20 secondes, le routeur considérera que la connexion à Internet via cette route (ISP-1) n'est pas disponible. Dans ce cas, les nouvelles connexions seront acheminées via le fournisseur de sauvegarde ISP-2.
Si tout est fait correctement, alors dans la fenêtre winbox / ip-> routes près de la route jusqu'à 8.8.4.4 les mots «resursive via ...» seront visibles. Cela signifie que l'itinéraire a été construit exactement comme récursif.
En fin de compte, par exemple seulement - Winbox écran de fenêtre:
