{"id":81593,"date":"2020-05-15T01:42:36","date_gmt":"2020-05-14T23:42:36","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/tonkaya-nastrojka-marshrutizaczii-dlya-metallb-v-rezhime-l2"},"modified":"2020-05-15T01:42:36","modified_gmt":"2020-05-14T23:42:36","slug":"tonkaya-nastrojka-marshrutizaczii-dlya-metallb-v-rezhime-l2","status":"publish","type":"post","link":"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/tonkaya-nastrojka-marshrutizaczii-dlya-metallb-v-rezhime-l2","title":{"rendered":"Affinage de la routage pour MetalLB en mode L2","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Affinage de la routage pour MetalLB en mode L2\" src=\"\/wp-content\/uploads\/2020\/05\/d03a56702a85f4c8c80a6cac3e489980.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nR\u00e9cemment, j'ai \u00e9t\u00e9 confront\u00e9 \u00e0 une t\u00e2che plut\u00f4t atypique de configuration de routage pour MetalLB. Tout irait bien, car g\u00e9n\u00e9ralement MetalLB ne n\u00e9cessite pas d'actions suppl\u00e9mentaires, mais dans notre cas, nous avons un cluster assez grand avec une configuration r\u00e9seau plut\u00f4t simple.<\/p>\n<p><\/p>\n<p>Dans cet article, je vais expliquer comment configurer le routage bas\u00e9 sur l'origine et le routage bas\u00e9 sur des politiques pour le r\u00e9seau externe de votre cluster.<\/p>\n<p><\/p>\n<p>Je ne vais pas m'attarder sur l'installation et la configuration de MetalLB, car je suppose que vous avez d\u00e9j\u00e0 une certaine exp\u00e9rience. Passons directement \u00e0 l'essentiel, \u00e0 savoir la configuration du routage. Nous avons donc quatre sc\u00e9narios :<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h1 id=\"sluchay-1-kogda-nastroyka-ne-trebuetsya\">Sc\u00e9nario 1 : Quand la configuration n'est pas n\u00e9cessaire<\/h1>\n<p><\/p>\n<p>Examinons un cas simple.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Affinage de la routage pour MetalLB en mode L2\" src=\"\/wp-content\/uploads\/2020\/05\/f79cc1169741b899c95e76d5d4cf60fc.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Aucune configuration de routage suppl\u00e9mentaire n'est n\u00e9cessaire lorsque les adresses attribu\u00e9es par MetalLB se trouvent dans la m\u00eame sous-r\u00e9seau que les adresses de vos n\u0153uds.<\/p>\n<p><\/p>\n<p>Par exemple, vous avez une sous-r\u00e9seau <code>192.168.1.0\/24<\/code>, il y a un routeur <code>192.168.1.1<\/code>, et vos n\u0153uds re\u00e7oivent les adresses : <code>192.168.1.10-30<\/code>, alors pour MetalLB, vous pouvez configurer la plage <code>192.168.1.100-120<\/code> et \u00eatre assur\u00e9 qu'elles fonctionneront sans aucune configuration suppl\u00e9mentaire.<\/p>\n<p><\/p>\n<p>Pourquoi cela ? Parce que vos n\u0153uds ont d\u00e9j\u00e0 des routes configur\u00e9es :<\/p>\n<p><\/p>\n<pre><code class=\"bash\"># ip route\ndefault via 192.168.1.1 dev eth0 onlink \n192.168.1.0\/24 dev eth0 proto kernel scope link src 192.168.1.10<\/code><\/pre>\n<p><\/p>\n<p>Et les adresses de la m\u00eame plage r\u00e9utiliseront celles-ci sans aucun effort suppl\u00e9mentaire.<\/p>\n<p><\/p>\n<h1 id=\"sluchay-2-kogda-trebuetsya-dopolnitelnaya-nastroyka\">Sc\u00e9nario 2 : Quand une configuration suppl\u00e9mentaire est n\u00e9cessaire<\/h1>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Affinage de la routage pour MetalLB en mode L2\" src=\"\/wp-content\/uploads\/2020\/05\/02392fbc3c16bdf52f0c5ddaf5688e7d.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Vous devez configurer des routes suppl\u00e9mentaires chaque fois que vos n\u0153uds n'ont pas de <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/fr\/lir\/ipv4\/\"   title=\"adresses IP\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"666\">adresses IP<\/a> ou de route vers la sous-r\u00e9seau pour laquelle MetalLB attribue des adresses.<\/p>\n<p><\/p>\n<p>Laissez-moi expliquer cela un peu plus en d\u00e9tail. Chaque fois que MetalLB attribue une adresse, cela peut \u00eatre compar\u00e9 \u00e0 une simple affectation du type :<\/p>\n<p><\/p>\n<pre><code class=\"bash\">ip addr add 10.9.8.7\/32 dev lo<\/code><\/pre>\n<p><\/p>\n<p>Notez que :<\/p>\n<p><\/p>\n<ul>\n<li><strong>a)<\/strong> L'adresse est attribu\u00e9e avec un pr\u00e9fixe <code>\/32<\/code> c'est-\u00e0-dire que la route vers la sous-r\u00e9seau ne sera pas ajout\u00e9e automatiquement (c'est juste une adresse)<\/li>\n<li><strong>b)<\/strong> L'adresse est attach\u00e9e \u00e0 n'importe quelle interface du n\u0153ud (par exemple, la boucle de retour). Il convient de mentionner ici une caract\u00e9ristique de la pile r\u00e9seau Linux. Peu importe sur quelle interface vous ajoutez l'adresse, le noyau traitera toujours les requ\u00eates ARP et enverra des r\u00e9ponses ARP sur n'importe laquelle d'elles, ce comportement est consid\u00e9r\u00e9 comme correct et, de plus, est assez largement utilis\u00e9 dans un environnement dynamique comme Kubernetes.<\/li>\n<\/ul>\n<p><\/p>\n<p>Ce comportement peut \u00eatre configur\u00e9, par exemple, en activant l'arp strict :<\/p>\n<p><\/p>\n<pre><code class=\"bash\">echo 1 &gt; \/proc\/sys\/net\/ipv4\/conf\/all\/arp_ignore\necho 2 &gt; \/proc\/sys\/net\/ipv4\/conf\/all\/arp_announce<\/code><\/pre>\n<p><\/p>\n<p>Dans ce cas, les r\u00e9ponses ARP seront envoy\u00e9es uniquement si l'interface contient explicitement une adresse IP sp\u00e9cifique. Ce param\u00e8tre est obligatoire si vous pr\u00e9voyez d'utiliser MetalLB et que votre kube-proxy fonctionne en mode IPVS.<\/p>\n<p><\/p>\n<p>Cependant, MetalLB ne traite pas les requ\u00eates ARP via le noyau, mais le fait lui-m\u00eame dans l'espace utilisateur, donc cette option n'affectera pas le fonctionnement de MetalLB.<\/p>\n<p><\/p>\n<p>Revenons \u00e0 notre t\u00e2che. Si la route pour les adresses attribu\u00e9es sur vos n\u0153uds n'existe pas, ajoutez-la \u00e0 l'avance sur tous les n\u0153uds :<\/p>\n<p><\/p>\n<pre><code class=\"bash\">ip route add 10.9.8.0\/24 dev eth1<\/code><\/pre>\n<p><\/p>\n<h1 id=\"sluchay-3-kogda-ponadobitsya-source-based-routing\">Cas 3 : Quand un routage bas\u00e9 sur la source sera n\u00e9cessaire<\/h1>\n<p><\/p>\n<p>Vous devrez configurer le routage bas\u00e9 sur la source lorsque vous recevez des paquets via une passerelle distincte de celle par d\u00e9faut, par cons\u00e9quent, les paquets de r\u00e9ponse doivent \u00e9galement passer par cette m\u00eame passerelle.<\/p>\n<p><\/p>\n<p>Par exemple, vous avez toujours le m\u00eame sous-r\u00e9seau <code>192.168.1.0\/24<\/code> r\u00e9serv\u00e9 pour vos n\u0153uds, mais vous souhaitez attribuer des adresses externes \u00e0 l'aide de MetalLB. Supposons que vous disposiez de plusieurs adresses issues du sous-r\u00e9seau <code>1.2.3.0\/24<\/code> situ\u00e9es dans le VLAN 100, et que vous souhaitez les utiliser pour acc\u00e9der aux services Kubernetes de l'ext\u00e9rieur.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Affinage de la routage pour MetalLB en mode L2\" src=\"\/wp-content\/uploads\/2020\/05\/9360f35c4bfae25b12fc5aab2644b775.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Lors de l'acc\u00e8s \u00e0 <code>1.2.3.4<\/code> vous effectuerez des requ\u00eates depuis un autre sous-r\u00e9seau que <code>1.2.3.0\/24<\/code> et attendrez une r\u00e9ponse. Le n\u0153ud qui est actuellement le ma\u00eetre pour l'adresse attribu\u00e9e par MetalLB <code>1.2.3.4<\/code>, recevra le paquet du routeur <code>1.2.3.1<\/code>, mais la r\u00e9ponse doit obligatoirement retourner par le m\u00eame chemin, via <code>1.2.3.1<\/code>.<\/p>\n<p><\/p>\n<p>Puisque notre n\u0153ud a d\u00e9j\u00e0 une passerelle par d\u00e9faut configur\u00e9e <code>192.168.1.1<\/code>, par d\u00e9faut, la r\u00e9ponse ira vers celle-ci, et non vers <code>1.2.3.1<\/code>, \u00e0 travers laquelle nous avons re\u00e7u le paquet.<\/p>\n<p><\/p>\n<p>Comment g\u00e9rer cette situation ?<\/p>\n<p><\/p>\n<p>Dans ce cas, vous devez pr\u00e9parer tous vos n\u0153uds afin qu'ils soient pr\u00eats \u00e0 servir des adresses externes sans configuration suppl\u00e9mentaire. Autrement dit, pour l'exemple ci-dessus, vous devez au pr\u00e9alable cr\u00e9er une interface VLAN sur le n\u0153ud :<\/p>\n<p><\/p>\n<pre><code class=\"bash\">ip link add link eth0 name eth0.100 type vlan id 100\nip link set eth0.100 up<\/code><\/pre>\n<p><\/p>\n<p>Ensuite, ajoutez les routes :<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">ip route add 1.2.3.0\/24 dev eth0.100 table 100\nip route add default via 1.2.3.1 table 100<\/code><\/pre>\n<p><\/p>\n<p>Notez que nous ajoutons les routes dans une table de routage distincte <code>100<\/code> elle contiendra uniquement deux routes n\u00e9cessaires pour envoyer le paquet de r\u00e9ponse via la passerelle <code>1.2.3.1<\/code>, qui se trouve derri\u00e8re l'interface <code>eth0.100<\/code>.<\/p>\n<p><\/p>\n<p>Maintenant, nous devons ajouter une simple r\u00e8gle :<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">ip rule add from 1.2.3.0\/24 lookup 100<\/code><\/pre>\n<p><\/p>\n<p>qui indique explicitement : si l'adresse source du paquet se trouve dans <code>1.2.3.0\/24<\/code>, alors utilisez la table de routage <code>100<\/code>. Nous avons d\u00e9j\u00e0 d\u00e9crit le chemin qui l'enverra \u00e0 travers <code>1.2.3.1<\/code><\/p>\n<p><\/p>\n<h1 id=\"sluchay-4-kogda-ponadobitsya-policy-based-routing\">Cas 4 : Quand un routage bas\u00e9 sur les politiques est n\u00e9cessaire<\/h1>\n<p><\/p>\n<p>La topologie du r\u00e9seau est comme dans l'exemple pr\u00e9c\u00e9dent, mais supposons que vous souhaitiez \u00e9galement avoir la possibilit\u00e9 d'acc\u00e9der \u00e0 des adresses externes du pool <code>1.2.3.0\/24<\/code> depuis vos pods :<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Affinage de la routage pour MetalLB en mode L2\" src=\"\/wp-content\/uploads\/2020\/05\/46f1f7c2826d87ec1fe8499862ccdd1a.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>La particularit\u00e9 r\u00e9side dans le fait que lorsqu'on acc\u00e8de \u00e0 n'importe quelle adresse dans <code>1.2.3.0\/24<\/code>, le paquet de r\u00e9ponse arrivant sur le n\u0153ud et ayant une adresse source dans la plage <code>1.2.3.0\/24<\/code> sera ob\u00e9issant et envoy\u00e9 \u00e0 <code>eth0.100<\/code>, mais ce que nous voulons, c'est que Kubernetes le redirige vers notre premier pod, qui a g\u00e9n\u00e9r\u00e9 la requ\u00eate initiale.<\/p>\n<p><\/p>\n<p>R\u00e9soudre ce probl\u00e8me s'est av\u00e9r\u00e9 difficile, mais cela a \u00e9t\u00e9 possible gr\u00e2ce au routage bas\u00e9 sur les politiques :<\/p>\n<p><\/p>\n<p>Pour mieux comprendre le processus, je vais donner un sch\u00e9ma bloqu\u00e9 de netfilter :<br \/>\n<img decoding=\"async\" alt=\"Affinage de la routage pour MetalLB en mode L2\" src=\"\/wp-content\/uploads\/2020\/05\/6b2f117c2dcddad85190156d566231c8.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Pour commencer, comme dans l'exemple pr\u00e9c\u00e9dent, cr\u00e9ons une table de routage suppl\u00e9mentaire :<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">ip route add 1.2.3.0\/24 dev eth0.100 table 100\nip route add default via 1.2.3.1 table 100<\/code><\/pre>\n<p><\/p>\n<p>Ajoutons maintenant quelques r\u00e8gles dans iptables :<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">iptables -t mangle -A PREROUTING -i eth0.100 -j CONNMARK --set-mark 0x100\niptables -t mangle -A PREROUTING -j CONNMARK --restore-mark\niptables -t mangle -A PREROUTING -m mark ! --mark 0 -j RETURN\niptables -t mangle -A POSTROUTING -j CONNMARK --save-mark<\/code><\/pre>\n<p><\/p>\n<p>Ces r\u00e8gles vont marquer les connexions entrantes sur l'interface <code>eth0.100<\/code>, en \u00e9tiquetant tous les paquets avec le tag <code>0x100<\/code>, ce m\u00eame tag sera \u00e9galement utilis\u00e9 pour les r\u00e9ponses dans le cadre d'une m\u00eame connexion.<\/p>\n<p><\/p>\n<p>Nous pouvons maintenant ajouter une r\u00e8gle de routage :<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">ip rule add from 1.2.3.0\/24 fwmark 0x100 lookup 100<\/code><\/pre>\n<p><\/p>\n<p>C'est-\u00e0-dire que tous les paquets avec une adresse source <code>1.2.3.0\/24<\/code> et un tag <code>0x100<\/code> devraient \u00eatre rout\u00e9s en utilisant la table <code>100<\/code>.<\/p>\n<p><\/p>\n<p>Ainsi, d'autres paquets re\u00e7us sur une autre interface ne seront pas soumis \u00e0 cette r\u00e8gle, ce qui leur permettra d'\u00eatre rout\u00e9s par les moyens standard de Kubernetes.<\/p>\n<p><\/p>\n<p>Il y a cependant un autre mais : Linux dispose d'un filtre de chemin inverse qui g\u00e2te tout et effectue une simple v\u00e9rification : pour tous les paquets entrants, il modifie l'adresse source du paquet avec l'adresse de l'exp\u00e9diteur et v\u00e9rifie si le paquet peut sortir par la m\u00eame interface par laquelle il a \u00e9t\u00e9 re\u00e7u. Sinon, il le filtre.<\/p>\n<p><\/p>\n<p>Le probl\u00e8me est que dans notre cas, cela ne fonctionnera pas correctement, mais nous pouvons le d\u00e9sactiver :<\/p>\n<p><\/p>\n<pre><code class=\"bash\">echo 0 &gt; \/proc\/sys\/net\/ipv4\/conf\/all\/rp_filter\necho 0 &gt; \/proc\/sys\/net\/ipv4\/conf\/eth0.100\/rp_filter<\/code><\/pre>\n<p><\/p>\n<p>Notez que la premi\u00e8re commande contr\u00f4le le comportement global de rp_filter ; si elle n'est pas d\u00e9sactiv\u00e9e, la deuxi\u00e8me commande n'aura aucun effet. Cependant, les autres interfaces resteront avec rp_filter activ\u00e9.<\/p>\n<p><\/p>\n<p>Pour ne pas restreindre compl\u00e8tement le fonctionnement du filtre, nous pouvons utiliser l'impl\u00e9mentation de rp_filter pour netfilter. En utilisant rpfilter en tant que module iptables, il est possible de configurer des r\u00e8gles assez flexibles, par exemple :<\/p>\n<p><\/p>\n<pre><code class=\"bash\">iptables -t raw -A PREROUTING -i eth0.100 -d 1.2.3.0\/24 -j RETURN\niptables -t raw -A PREROUTING -i eth0.100 -m rpfilter --invert -j DROP<\/code><\/pre>\n<p><\/p>\n<p>activer rp_filter sur l'interface <code>eth0.100<\/code> pour toutes les adresses sauf <code>1.2.3.0\/24<\/code>.<\/p>\n<p>Source : <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/501842\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041d\u0435 \u0442\u0430\u043a \u0434\u0430\u0432\u043d\u043e \u044f \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0441\u044f \u0441 \u0432\u0435\u0441\u044c\u043c\u0430 \u043d\u0435\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0435\u0439 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0449\u0430\u0446\u0438\u0438 \u0434\u043b\u044f MetalLB. \u0412\u0441\u0451 \u0431\u044b \u043d\u0438\u0447\u0435\u0433\u043e, \u0442.\u043a. \u043e\u0431\u044b\u0447\u043d\u043e \u0434\u043b\u044f MetalLB \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439, \u043d\u043e \u0432 \u043d\u0430\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u0441 \u0432\u0435\u0441\u044c\u043c\u0430 \u043d\u0435\u0445\u0438\u0442\u0440\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0435\u0439 \u0441\u0435\u0442\u0438. \u0412 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u043a\u0430\u043a \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c source-based \u0438 policy-based routing \u0434\u043b\u044f \u0432\u043d\u0435\u0448\u043d\u0435\u0439 \u0441\u0435\u0442\u0438 \u0432\u0430\u0448\u0435\u0433\u043e \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430. \u042f [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":81594,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-81593","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041d\u0435 \u0442\u0430\u043a \u0434\u0430\u0432\u043d\u043e \u044f \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0441\u044f \u0441 \u0432\u0435\u0441\u044c\u043c\u0430.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/tonkaya-nastrojka-marshrutizaczii-dlya-metallb-v-rezhime-l2\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2\" \/>\n\t\t<meta property=\"og:locale\" content=\"fr_FR\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0422\u043e\u043d\u043a\u0430\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u0434\u043b\u044f MetalLB \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 L2 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041d\u0435 \u0442\u0430\u043a \u0434\u0430\u0432\u043d\u043e \u044f \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0441\u044f \u0441 \u0432\u0435\u0441\u044c\u043c\u0430.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/tonkaya-nastrojka-marshrutizaczii-dlya-metallb-v-rezhime-l2\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-05-14T23:42:36+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-05-14T23:42:36+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Ajustement fin du routage pour MetalLB en mode L2 | ProHoster","description":"Il n'y a pas si longtemps, j'ai \u00e9t\u00e9 confront\u00e9 \u00e0 quelque chose de tr\u00e8s.","canonical_url":"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/tonkaya-nastrojka-marshrutizaczii-dlya-metallb-v-rezhime-l2","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"fr_FR","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0422\u043e\u043d\u043a\u0430\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u0434\u043b\u044f MetalLB \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 L2 | ProHoster","og:description":"\u041d\u0435 \u0442\u0430\u043a \u0434\u0430\u0432\u043d\u043e \u044f \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0441\u044f \u0441 \u0432\u0435\u0441\u044c\u043c\u0430.","og:url":"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/tonkaya-nastrojka-marshrutizaczii-dlya-metallb-v-rezhime-l2","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-05-14T23:42:36+00:00","article:modified_time":"2020-05-14T23:42:36+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"81593","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 15:55:42","updated":"2026-02-08 20:23:59","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts\/81593","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/comments?post=81593"}],"version-history":[{"count":1,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts\/81593\/revisions"}],"predecessor-version":[{"id":157857,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts\/81593\/revisions\/157857"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/media\/81594"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/media?parent=81593"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/categories?post=81593"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/tags?post=81593"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}