{"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\/da\/blog\/administrirovanie\/tonkaya-nastrojka-marshrutizaczii-dlya-metallb-v-rezhime-l2","title":{"rendered":"Finetuning routing for MetalLB in L2 mode","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Finetuning routing for MetalLB in L2 mode\" src=\"\/wp-content\/uploads\/2020\/05\/d03a56702a85f4c8c80a6cac3e489980.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nFor ikke s\u00e5 l\u00e6nge siden st\u00f8dte jeg p\u00e5 en temmelig us\u00e6dvanlig opgave med at konfigurere routing for MetalLB. Der var ikke noget problem, da MetalLB normalt ikke kr\u00e6ver yderligere handlinger, men i vores tilf\u00e6lde har vi et ret stort cluster med en ret enkel netv\u00e6rkskonfiguration.<\/p>\n<p><\/p>\n<p>I denne artikel vil jeg fort\u00e6lle, hvordan du kan konfigurere source-based og policy-based routing for et eksternt netv\u00e6rk i dit cluster.<\/p>\n<p><\/p>\n<p>Jeg vil ikke g\u00e5 ind i detaljerne omkring installation og ops\u00e6tning af MetalLB, da jeg foruds\u00e6tter, at du allerede har en vis erfaring. Lad os springe direkte til sagen, nemlig ops\u00e6tningen af routing. S\u00e5 vi har fire tilf\u00e6lde:<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h1 id=\"sluchay-1-kogda-nastroyka-ne-trebuetsya\">Case 1: N\u00e5r ops\u00e6tning ikke er n\u00f8dvendig<\/h1>\n<p><\/p>\n<p>Lad os tage et simpelt tilf\u00e6lde.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Finetuning routing for MetalLB in L2 mode\" src=\"\/wp-content\/uploads\/2020\/05\/f79cc1169741b899c95e76d5d4cf60fc.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Yderligere routing-konfiguration er ikke n\u00f8dvendig, n\u00e5r de IP-adresser, som MetalLB tildeler, ligger i samme subnet som dine node-adresser.<\/p>\n<p><\/p>\n<p>For eksempel har du et subnet <code>192.168.1.0\/24<\/code>, der har en router <code>192.168.1.1<\/code>, og dine noder f\u00e5r adresserne: <code>192.168.1.10-30<\/code>, s\u00e5 for MetalLB kan du konfigurere et interval <code>192.168.1.100-120<\/code> og v\u00e6re sikker p\u00e5, at de vil fungere uden nogen yderligere ops\u00e6tning.<\/p>\n<p><\/p>\n<p>Hvorfor er det s\u00e5dan? Fordi dine noder allerede har konfigurerede ruter:<\/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>Og adresserne fra det samme interval vil genbruge dem uden nogen yderligere tiltag.<\/p>\n<p><\/p>\n<h1 id=\"sluchay-2-kogda-trebuetsya-dopolnitelnaya-nastroyka\">Case 2: N\u00e5r der kr\u00e6ves yderligere ops\u00e6tning<\/h1>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Finetuning routing for MetalLB in L2 mode\" src=\"\/wp-content\/uploads\/2020\/05\/02392fbc3c16bdf52f0c5ddaf5688e7d.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Du skal konfigurere yderligere ruter hver gang dine noder ikke har en konfigureret <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/da\/lir\/ipv4\/\"   title=\"IP-adresser\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"666\">IP-adresser<\/a> eller rute til subnettet, som MetalLB tildeler adresser til.<\/p>\n<p><\/p>\n<p>Lad mig forklare lidt n\u00e6rmere. Hver gang MetalLB tildeler en adresse, kan det sammenlignes med en simpel tildeling:<\/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>Bem\u00e6rk, at:<\/p>\n<p><\/p>\n<ul>\n<li><strong>a)<\/strong> Adressen tildeles med en pr\u00e6fiks, <code>\/32<\/code> som betyder, at ruten til subnettet automatisk ikke tilf\u00f8jes (det er bare en adresse).<\/li>\n<li><strong>b)<\/strong> Adressen knyttes til hvilken som helst node-interface (f.eks. loopback). Her skal det n\u00e6vnes, at det er en s\u00e6rlig egenskab ved Linux-netv\u00e6rksstakken. Uanset hvilket interface du tilf\u00f8jer adressen til, vil kernen altid h\u00e5ndtere arp-foresp\u00f8rgsler og sende arp-svar tilbage til hvilket som helst af dem; denne opf\u00f8rsel anses for korrekt og er desuden ganske almindelig i et dynamisk milj\u00f8 som Kubernetes.<\/li>\n<\/ul>\n<p><\/p>\n<p>Denne opf\u00f8rsel kan konfigureres ved f.eks. at aktivere strict arp:<\/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>I dette tilf\u00e6lde vil arp-svar kun blive sendt, hvis interfacet tydeligt indeholder en specifik IP-adresse. Denne indstilling er obligatorisk, hvis du planl\u00e6gger at bruge MetalLB, og din kube-proxy k\u00f8rer i IPVS-tilstand.<\/p>\n<p><\/p>\n<p>MetalLB bruger dog ikke kernen til at h\u00e5ndtere arp-anmodninger, men g\u00f8r det selv i user-space, s\u00e5 denne mulighed vil ikke p\u00e5virke MetalLB's funktion.<\/p>\n<p><\/p>\n<p>Lad os vende tilbage til vores opgave. Hvis der ikke eksisterer nogen rute for de udleverede adresser p\u00e5 dine noder, skal du tilf\u00f8je den p\u00e5 forh\u00e5nd til alle noder:<\/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\">Sagsnummer 3: N\u00e5r source-based routing er n\u00f8dvendig<\/h1>\n<p><\/p>\n<p>Source-based routing skal du konfigurere, n\u00e5r du modtager pakker via en separat gateway, som ikke er den, der er indstillet som standard, og derfor skal de svarende pakker ogs\u00e5 sendes via denne samme gateway.<\/p>\n<p><\/p>\n<p>For eksempel har du stadig den samme subnet <code>192.168.1.0\/24<\/code> dedikeret til dine noder, men du \u00f8nsker at udlevere eksterne adresser ved hj\u00e6lp af MetalLB. Antag, at du har flere adresser fra subnettet <code>1.2.3.0\/24<\/code> der findes i VLAN 100, og du vil bruge dem til at f\u00e5 adgang til Kubernetes-tjenester udefra.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Finetuning routing for MetalLB in L2 mode\" src=\"\/wp-content\/uploads\/2020\/05\/9360f35c4bfae25b12fc5aab2644b775.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>N\u00e5r du ringer til <code>1.2.3.4<\/code> vil du sende anmodninger fra et andet subnet end <code>1.2.3.0\/24<\/code> og forvente et svar. Den node, der i \u00f8jeblikket er master for den udleverede MetalLB-adresse <code>1.2.3.4<\/code>, vil modtage pakken fra routeren <code>1.2.3.1<\/code>, men svaret til den skal n\u00f8dvendigvis sendes samme vej, gennem <code>1.2.3.1<\/code>.<\/p>\n<p><\/p>\n<p>Da vores node allerede har en konfigureret default gateway <code>192.168.1.1<\/code>, vil svaret som standard g\u00e5 til den, og ikke til <code>1.2.3.1<\/code>, gennem hvilken vi modtog pakken.<\/p>\n<p><\/p>\n<p>Hvordan h\u00e5ndterer vi denne situation?<\/p>\n<p><\/p>\n<p>I dette tilf\u00e6lde skal du forberede alle dine noder, s\u00e5 de er klar til at betjene eksterne adresser uden yderligere konfiguration. Det vil sige, at du i det ovenn\u00e6vnte eksempel skal oprette en VLAN-interface p\u00e5 noden p\u00e5 forh\u00e5nd:<\/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>Og s\u00e5 tilf\u00f8je ruter:<\/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>Bem\u00e6rk, at vi tilf\u00f8jer ruter til en separat routetabel <code>100<\/code> den vil kun indeholde de to ruter, der er n\u00f8dvendige for at sende svaret gennem gatewayen <code>1.2.3.1<\/code>, der findes bag interfacet <code>eth0.100<\/code>.<\/p>\n<p><\/p>\n<p>Nu skal vi tilf\u00f8je en simpel regel:<\/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>som tydeligt siger: hvis kildens IP-adresse for pakken findes i <code>1.2.3.0\/24<\/code>, skal routetabellen bruges <code>100<\/code>. I den har vi allerede beskrevet en rute, der sender den gennem <code>1.2.3.1<\/code><\/p>\n<p><\/p>\n<h1 id=\"sluchay-4-kogda-ponadobitsya-policy-based-routing\">Case 4: N\u00e5r policy-baseret routing er n\u00f8dvendig<\/h1>\n<p><\/p>\n<p>Netv\u00e6rkstopologien er som i det foreg\u00e5ende eksempel, men lad os antage, at du ogs\u00e5 vil have muligheden for at henvende dig til eksterne adresser i puljen <code>1.2.3.0\/24<\/code> fra dine pods:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Finetuning routing for MetalLB in L2 mode\" src=\"\/wp-content\/uploads\/2020\/05\/46f1f7c2826d87ec1fe8499862ccdd1a.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Funktionen ligger i, at n\u00e5r man adresserer en hvilken som helst adresse i <code>1.2.3.0\/24<\/code>, vil det svarende pakke, n\u00e5r det n\u00e5r noden og har en kildeadresse i intervallet <code>1.2.3.0\/24<\/code> , blive sendt i overensstemmelse med <code>eth0.100<\/code>, men vi vil have, at Kubernetes omdirigerer det til vores f\u00f8rste pod, som genererede den oprindelige anmodning.<\/p>\n<p><\/p>\n<p>Det viste sig at v\u00e6re vanskeligt at l\u00f8se dette problem, men det blev muligt takket v\u00e6re policy-baseret routing:<\/p>\n<p><\/p>\n<p>For bedre at forst\u00e5 processen vil jeg give et blokdiagram af netfilter:<br \/>\n<img decoding=\"async\" alt=\"Finetuning routing for MetalLB in L2 mode\" src=\"\/wp-content\/uploads\/2020\/05\/6b2f117c2dcddad85190156d566231c8.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>For at starte, som i det foreg\u00e5ende eksempel, lad os oprette en yderligere routingtabel:<\/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>Nu skal vi tilf\u00f8je et par regler i 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>Disse regler vil m\u00e6rke indg\u00e5ende forbindelser p\u00e5 interfacet <code>eth0.100<\/code>, idet alle pakker f\u00e5r et tag <code>0x100<\/code>, dette samme tag vil ogs\u00e5 blive brugt til svarene inden for en enkelt forbindelse.<\/p>\n<p><\/p>\n<p>Nu kan vi tilf\u00f8je en routingregel:<\/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>Det vil sige, at alle pakker med en kildeadresse <code>1.2.3.0\/24<\/code> og tag <code>0x100<\/code> skal ruttes ved brug af tabellen <code>100<\/code>.<\/p>\n<p><\/p>\n<p>Dermed vil andre pakker, der modtages p\u00e5 en anden gr\u00e6nseflade, ikke falde ind under denne regel, hvilket vil g\u00f8re det muligt for dem at blive rutet ved hj\u00e6lp af de standardv\u00e6rkt\u00f8jer, som Kubernetes tilbyder.<\/p>\n<p><\/p>\n<p>Der er dog en anden ting; i Linux findes der s\u00e5kaldt reverse path filter, som \u00f8del\u00e6gger alt ved at udf\u00f8re en simpel kontrol: For alle indg\u00e5ende pakker \u00e6ndrer den kildeadressen til afsenderens adresse og tjekker, om pakken kan sendes tilbage via den samme gr\u00e6nseflade, som den blev modtaget p\u00e5; hvis ikke, s\u00e5 filtreres den fra.<\/p>\n<p><\/p>\n<p>Problemet er, at i vores tilf\u00e6lde vil det fungere forkert, men vi kan deaktivere det:<\/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>Bem\u00e6rk, at det f\u00f8rste kommando styrer den globale adf\u00e6rd af rp_filter; hvis det ikke deaktiveres, vil den anden kommando ikke have nogen effekt. Ikke desto mindre forbliver de \u00f8vrige gr\u00e6nseflader aktiveret med rp_filter.<\/p>\n<p><\/p>\n<p>For ikke at begr\u00e6nse filterets funktionalitet fuldst\u00e6ndigt kan vi anvende implementeringen af rp_filter til netfilter. Ved at bruge rpfilter som en iptables-modul kan der ops\u00e6ttes ret fleksible regler, for eksempel:<\/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>aktiverer rp_filter p\u00e5 interfacing <code>eth0.100<\/code> for alle adresser undtagen <code>1.2.3.0\/24<\/code>.<\/p>\n<p>Kilde: <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.3 - 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\/da\/blog\/administrirovanie\/tonkaya-nastrojka-marshrutizaczii-dlya-metallb-v-rezhime-l2\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"da_DK\" \/>\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\/da\/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\udd47Finjustering af routering for MetalLB i L2-tilstand | ProHoster","description":"For nylig st\u00f8dte jeg p\u00e5 noget ret interessant.","canonical_url":"https:\/\/prohoster.info\/da\/blog\/administrirovanie\/tonkaya-nastrojka-marshrutizaczii-dlya-metallb-v-rezhime-l2","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"da_DK","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\/da\/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\/da\/wp-json\/wp\/v2\/posts\/81593","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/comments?post=81593"}],"version-history":[{"count":1,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts\/81593\/revisions"}],"predecessor-version":[{"id":157857,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts\/81593\/revisions\/157857"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/media\/81594"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/media?parent=81593"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/categories?post=81593"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/tags?post=81593"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}