{"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\/de\/blog\/administrirovanie\/tonkaya-nastrojka-marshrutizaczii-dlya-metallb-v-rezhime-l2","title":{"rendered":"Feinabstimmung der Routing-Konfiguration f\u00fcr MetalLB im L2-Modus","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Feinabstimmung der Routing-Konfiguration f\u00fcr MetalLB im L2-Modus\" src=\"\/wp-content\/uploads\/2020\/05\/d03a56702a85f4c8c80a6cac3e489980.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nVor nicht allzu langer Zeit stand ich vor einer ziemlich ungew\u00f6hnlichen Herausforderung bei der Konfiguration des Routings f\u00fcr MetalLB. Das w\u00e4re normalerweise kein Problem, da f\u00fcr MetalLB in der Regel keine zus\u00e4tzlichen Ma\u00dfnahmen erforderlich sind, aber in unserem Fall gibt es einen relativ gro\u00dfen Cluster mit einer recht einfachen Netzwerkkonfiguration.<\/p>\n<p><\/p>\n<p>In diesem Artikel werde ich erl\u00e4utern, wie man source-basiertes und policy-basiertes Routing f\u00fcr das externe Netzwerk Ihres Clusters einrichtet.<\/p>\n<p><\/p>\n<p>Ich werde nicht ausf\u00fchrlich auf die Installation und Konfiguration von MetalLB eingehen, da ich davon ausgehe, dass Sie bereits \u00fcber einige Erfahrungen verf\u00fcgen. Lassen Sie uns einfach zur Sache kommen, n\u00e4mlich zur Einrichtung des Routings. Wir haben also vier F\u00e4lle:<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h1 id=\"sluchay-1-kogda-nastroyka-ne-trebuetsya\">Fall 1: Wenn keine Konfiguration erforderlich ist<\/h1>\n<p><\/p>\n<p>Lassen Sie uns einen einfachen Fall durchgehen.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Feinabstimmung der Routing-Konfiguration f\u00fcr MetalLB im L2-Modus\" src=\"\/wp-content\/uploads\/2020\/05\/f79cc1169741b899c95e76d5d4cf60fc.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Zus\u00e4tzliche Routingkonfiguration ist nicht erforderlich, wenn die von MetalLB vergebenen Adressen im gleichen Subnetz liegen wie die Adressen Ihrer Knoten.<\/p>\n<p><\/p>\n<p>Angenommen, Sie haben ein Subnetz <code>192.168.1.0\/24<\/code>, in dem ein Router existiert <code>192.168.1.1<\/code>, und Ihre Knoten erhalten Adressen: <code>192.168.1.10-30<\/code>, dann k\u00f6nnen Sie f\u00fcr MetalLB den Bereich <code>192.168.1.100-120<\/code> einrichten und sicher sein, dass sie ohne zus\u00e4tzliche Konfiguration funktionieren werden.<\/p>\n<p><\/p>\n<p>Warum ist das so? Weil Ihre Knoten bereits konfigurierte Routen haben:<\/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>Und Adressen aus demselben Bereich werden sie ohne zus\u00e4tzliche Ma\u00dfnahmen wiederverwenden.<\/p>\n<p><\/p>\n<h1 id=\"sluchay-2-kogda-trebuetsya-dopolnitelnaya-nastroyka\">Fall 2: Wenn zus\u00e4tzliche Konfiguration erforderlich ist<\/h1>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Feinabstimmung der Routing-Konfiguration f\u00fcr MetalLB im L2-Modus\" src=\"\/wp-content\/uploads\/2020\/05\/02392fbc3c16bdf52f0c5ddaf5688e7d.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Sie sollten zus\u00e4tzliche Routen einrichten, wenn Ihre Knoten keine konfigurierten <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/de\/lir\/ipv4\/\"   title=\"IP-Adressen\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"666\">IP-Adressen<\/a> oder Routen zum Subnetz haben, f\u00fcr das MetalLB Adressen vergibt.<\/p>\n<p><\/p>\n<p>Ich werde das etwas ausf\u00fchrlicher erkl\u00e4ren. Jedes Mal, wenn MetalLB eine Adresse vergibt, kann man dies mit einer einfachen Zuweisung vergleichen:<\/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>Bitte beachten Sie:<\/p>\n<p><\/p>\n<ul>\n<li><strong>a)<\/strong> Die Adresse wird mit einem Pr\u00e4fix zugewiesen, <code>\/32<\/code> das hei\u00dft, eine Route zum Subnetz wird automatisch nicht hinzugef\u00fcgt (es ist einfach nur eine Adresse).<\/li>\n<li><strong>b)<\/strong> Die Adresse wird auf jedes Interface des Knotens angewendet (zum Beispiel Loopback). Hier sollte man die Besonderheit des Linux-Netzwerkstacks erw\u00e4hnen. Es ist egal, auf welches Interface Sie die Adresse hinzuf\u00fcgen, der Kernel wird immer ARP-Anfragen verarbeiten und ARP-Antworten an eines von ihnen senden, dieses Verhalten wird als korrekt angesehen und ist zudem in einer dynamischen Umgebung wie Kubernetes sehr verbreitet.<\/li>\n<\/ul>\n<p><\/p>\n<p>Dieses Verhalten kann konfiguriert werden, indem man zum Beispiel strict arp aktiviert:<\/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>In diesem Fall werden ARP-Antworten nur gesendet, wenn das Interface ausdr\u00fccklich eine bestimmte IP-Adresse enth\u00e4lt. Diese Einstellung ist erforderlich, wenn Sie MetalLB nutzen m\u00f6chten und Ihr kube-proxy im IPVS-Modus l\u00e4uft.<\/p>\n<p><\/p>\n<p>MetalLB verwendet jedoch nicht den Kernel zur Verarbeitung von ARP-Anfragen, sondern erledigt dies selbst im User-Space. Daher hat diese Option keinen Einfluss auf die Funktionsweise von MetalLB.<\/p>\n<p><\/p>\n<p>Kommen wir zu unserer Aufgabe zur\u00fcck. Wenn es keine Route f\u00fcr die ausgegebenen Adressen auf Ihren Knoten gibt, f\u00fcgen Sie diese vorher auf allen Knoten hinzu:<\/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\">Fall 3: Wenn Source-based Routing ben\u00f6tigt wird<\/h1>\n<p><\/p>\n<p>Source-based Routing m\u00fcssen Sie einrichten, wenn Sie Pakete \u00fcber ein separates Gateway empfangen, das nicht das ist, das bei Ihnen standardm\u00e4\u00dfig eingerichtet ist. Dementsprechend sollten auch die Antwortpakete \u00fcber dieses Gateway gesendet werden.<\/p>\n<p><\/p>\n<p>Zum Beispiel haben Sie dasselbe Subnetz <code>192.168.1.0\/24<\/code> f\u00fcr Ihre Knoten reserviert, aber Sie m\u00f6chten externe Adressen \u00fcber MetalLB bereitstellen. Angenommen, Sie haben mehrere Adressen aus dem Subnetz <code>1.2.3.0\/24<\/code> in VLAN 100 und m\u00f6chten diese nutzen, um auf Kubernetes-Dienste von au\u00dfen zuzugreifen.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Feinabstimmung der Routing-Konfiguration f\u00fcr MetalLB im L2-Modus\" src=\"\/wp-content\/uploads\/2020\/05\/9360f35c4bfae25b12fc5aab2644b775.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Bei Anfragen an <code>1.2.3.4<\/code> werden Sie Anfragen aus einem anderen Subnetz stellen als <code>1.2.3.0\/24<\/code> und auf eine Antwort warten. Der Knoten, der derzeit der Master f\u00fcr die ausgegebene MetalLB-Adresse ist, <code>1.2.3.4<\/code>erh\u00e4lt das Paket vom Router <code>1.2.3.1<\/code>, aber die Antwort muss \u00fcber denselben Weg gehen, \u00fcber <code>1.2.3.1<\/code>.<\/p>\n<p><\/p>\n<p>Da unser Knoten bereits ein standardm\u00e4\u00dfiges Gateway konfiguriert hat, wird die Antwort standardm\u00e4\u00dfig dorthin gesendet, nicht \u00fcber <code>192.168.1.1<\/code>, durch das wir das Paket erhalten haben. <code>1.2.3.1<\/code>Wie gehen wir mit dieser Situation um?<\/p>\n<p><\/p>\n<p>In diesem Fall m\u00fcssen Sie alle Ihre Knoten so vorbereiten, dass sie externe Adressen ohne zus\u00e4tzliche Konfiguration bedienen k\u00f6nnen. Das hei\u00dft, f\u00fcr das obige Beispiel m\u00fcssen Sie vorher ein VLAN-Interface auf dem Knoten erstellen:<\/p>\n<p><\/p>\n<p>ip link add link eth0 name eth0.100 type vlan id 100\nip link set eth0.100 up<\/p>\n<p><\/p>\n<pre><code class=\"bash\">Und dann Routen hinzuf\u00fcgen:<\/code><\/pre>\n<p><\/p>\n<p>ip route add 1.2.3.0\/24 dev eth0.100 table 100\nip route add default via 1.2.3.1 table 100<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">Beachten Sie, dass wir die Routen in eine separate Routing-Tabelle hinzuf\u00fcgen.<\/code><\/pre>\n<p><\/p>\n<p>Diese wird nur zwei Routen enthalten, die notwendig sind, um das Antwortpaket \u00fcber das Gateway zu senden, <code>100<\/code> das sich hinter dem Interface <code>1.2.3.1<\/code>eth0.100 <code>Jetzt m\u00fcssen wir eine einfache Regel hinzuf\u00fcgen:<\/code>.<\/p>\n<p><\/p>\n<p>ip rule add from 1.2.3.0\/24 lookup 100<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">die ausdr\u00fccklich sagt: Wenn die Quelladresse des Pakets in<\/code><\/pre>\n<p><\/p>\n<p>liegt, verwenden Sie die Routing-Tabelle. <code>1.2.3.0\/24<\/code>, dann muss die Routingtabelle verwendet werden <code>100<\/code>. In diesem Dokument haben wir bereits die Route beschrieben, die ihn durch <code>1.2.3.1<\/code><\/p>\n<p><\/p>\n<h1 id=\"sluchay-4-kogda-ponadobitsya-policy-based-routing\">Fall 4: Wenn policy-basiertes Routing ben\u00f6tigt wird<\/h1>\n<p><\/p>\n<p>Die Netzwerktopologie ist wie im vorherigen Beispiel, aber nehmen wir an, Sie m\u00f6chten auch die M\u00f6glichkeit haben, auf externe Adressen des Pools zuzugreifen <code>1.2.3.0\/24<\/code> von Ihren Pods:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Feinabstimmung der Routing-Konfiguration f\u00fcr MetalLB im L2-Modus\" src=\"\/wp-content\/uploads\/2020\/05\/46f1f7c2826d87ec1fe8499862ccdd1a.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Das Besondere ist, dass beim Zugriff auf jede Adresse in <code>1.2.3.0\/24<\/code>, das Antwortpaket auf den Knoten gelangt und die Quelladresse im Bereich <code>1.2.3.0\/24<\/code> wird brav an <code>Jetzt m\u00fcssen wir eine einfache Regel hinzuf\u00fcgen:<\/code>, aber wir wollen, dass Kubernetes es an unseren ersten Pod weiterleitet, der die urspr\u00fcngliche Anfrage generiert hat.<\/p>\n<p><\/p>\n<p>Diese Problematik zu l\u00f6sen, erwies sich als nicht einfach, aber es wurde durch policy-basiertes Routing m\u00f6glich:<\/p>\n<p><\/p>\n<p>Um den Prozess besser zu verstehen, pr\u00e4sentiere ich das Blockschema von netfilter:<br \/>\n<img decoding=\"async\" alt=\"Feinabstimmung der Routing-Konfiguration f\u00fcr MetalLB im L2-Modus\" src=\"\/wp-content\/uploads\/2020\/05\/6b2f117c2dcddad85190156d566231c8.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Zun\u00e4chst, wie im vorherigen Beispiel, erstellen wir eine zus\u00e4tzliche Routing-Tabelle:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">Beachten Sie, dass wir die Routen in eine separate Routing-Tabelle hinzuf\u00fcgen.<\/code><\/pre>\n<p><\/p>\n<p>Jetzt f\u00fcgen wir einige Regeln in iptables hinzu:<\/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>Diese Regeln werden eingehende Verbindungen an der Schnittstelle markieren, <code>Jetzt m\u00fcssen wir eine einfache Regel hinzuf\u00fcgen:<\/code>, indem sie alle Pakete mit dem Tag <code>0x100<\/code>markieren; auch die Antworten im Rahmen derselben Verbindung werden mit diesem Tag versehen.<\/p>\n<p><\/p>\n<p>Jetzt k\u00f6nnen wir eine Routing-Regel hinzuf\u00fcgen:<\/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>Das hei\u00dft, alle Pakete mit der Quelladresse <code>1.2.3.0\/24<\/code> und dem Tag <code>0x100<\/code> m\u00fcssen unter Verwendung der Tabelle geroutet werden, <code>100<\/code>.<\/p>\n<p><\/p>\n<p>so dass andere Pakete, die an einer anderen Schnittstelle empfangen werden, nicht unter diese Regel fallen, was es ihnen erm\u00f6glicht, mit den Standardmitteln von Kubernetes geroutet zu werden.<\/p>\n<p><\/p>\n<p>Es gibt jedoch ein weiteres Problem: In Linux gibt es den sogenannten Reverse Path Filter, der die gesamte Situation kompliziert und eine einfache \u00dcberpr\u00fcfung durchf\u00fchrt: F\u00fcr alle eingehenden Pakete \u00e4ndert er die Quelladresse des Pakets auf die des Absenders und pr\u00fcft, ob das Paket \u00fcber dieselbe Schnittstelle, \u00fcber die es empfangen wurde, gesendet werden kann. Wenn nicht, wird es herausgefiltert.<\/p>\n<p><\/p>\n<p>Das Problem dabei ist, dass er in unserem Fall nicht korrekt funktioniert, aber wir k\u00f6nnen ihn deaktivieren:<\/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>Bitte beachten Sie, dass der erste Befehl das globale Verhalten des rp_filter steuert. Wenn er nicht deaktiviert wird, hat der zweite Befehl keine Wirkung. Dennoch bleiben die anderen Schnittstellen mit aktiviertem rp_filter.<\/p>\n<p><\/p>\n<p>Um die Funktion des Filters nicht vollst\u00e4ndig einzuschr\u00e4nken, k\u00f6nnen wir die Implementierung von rp_filter f\u00fcr netfilter nutzen. Mit rpfilter als iptables-Modul k\u00f6nnen wir flexiblere Regeln festlegen, zum Beispiel:<\/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>rp_filter auf der Schnittstelle aktivieren <code>Jetzt m\u00fcssen wir eine einfache Regel hinzuf\u00fcgen:<\/code> f\u00fcr alle Adressen au\u00dfer <code>1.2.3.0\/24<\/code>.<\/p>\n<p>Quelle: <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.1.1 - 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\/de\/blog\/administrirovanie\/tonkaya-nastrojka-marshrutizaczii-dlya-metallb-v-rezhime-l2\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"de_DE\" \/>\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\/de\/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\udd47Feinabstimmung der Routingeinstellungen f\u00fcr MetalLB im L2-Modus | ProHoster","description":"Neulich bin ich auf etwas gesto\u00dfen, das ziemlich.","canonical_url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/tonkaya-nastrojka-marshrutizaczii-dlya-metallb-v-rezhime-l2","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"de_DE","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\/de\/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\/de\/wp-json\/wp\/v2\/posts\/81593","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/comments?post=81593"}],"version-history":[{"count":1,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/81593\/revisions"}],"predecessor-version":[{"id":157857,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/81593\/revisions\/157857"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media\/81594"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media?parent=81593"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/categories?post=81593"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/tags?post=81593"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}