{"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\/sv\/blog\/administrirovanie\/tonkaya-nastrojka-marshrutizaczii-dlya-metallb-v-rezhime-l2","title":{"rendered":"Finslipa routingen f\u00f6r MetalLB i L2-l\u00e4ge","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Finslipa routingen f\u00f6r MetalLB i L2-l\u00e4ge\" src=\"\/wp-content\/uploads\/2020\/05\/d03a56702a85f4c8c80a6cac3e489980.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nNyligen st\u00f6tte jag p\u00e5 en ganska ovanlig uppgift att st\u00e4lla in routing f\u00f6r MetalLB. Det skulle inte vara n\u00e5got problem, eftersom det vanligtvis inte kr\u00e4vs n\u00e5gra extra \u00e5tg\u00e4rder f\u00f6r MetalLB, men i v\u00e5rt fall har vi en ganska stor kluster med en ganska enkel n\u00e4tverkskonfiguration.<\/p>\n<p><\/p>\n<p>I denna artikel kommer jag att ber\u00e4tta hur man st\u00e4ller in source-based och policy-based routing f\u00f6r det externa n\u00e4tverket i din kluster.<\/p>\n<p><\/p>\n<p>Jag kommer inte att g\u00e5 in p\u00e5 installation och konfiguration av MetalLB i detalj, eftersom jag utg\u00e5r fr\u00e5n att du redan har viss erfarenhet. L\u00e5t oss g\u00e5 direkt till saken, n\u00e4mligen konfigurationen av routingen. S\u00e5 vi har fyra fall:<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h1 id=\"sluchay-1-kogda-nastroyka-ne-trebuetsya\">Fall 1: N\u00e4r ingen konfigurering kr\u00e4vs<\/h1>\n<p><\/p>\n<p>L\u00e5t oss g\u00e5 igenom ett enkelt fall.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Finslipa routingen f\u00f6r MetalLB i L2-l\u00e4ge\" src=\"\/wp-content\/uploads\/2020\/05\/f79cc1169741b899c95e76d5d4cf60fc.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ytterligare routing konfiguration kr\u00e4vs inte n\u00e4r de adresser som MetalLB tillhandah\u00e5ller ligger i samma subnet som adresserna f\u00f6r dina noder.<\/p>\n<p><\/p>\n<p>Till exempel har du ett subnet <code>192.168.1.0\/24<\/code>, det finns en router <code>192.168.1.1<\/code>, och dina noder f\u00e5r adresser: <code>192.168.1.10-30<\/code>, d\u00e5 kan du f\u00f6r MetalLB konfigurera intervallet <code>192.168.1.100-120<\/code> och vara s\u00e4ker p\u00e5 att de kommer att fungera utan n\u00e5gon ytterligare konfiguration.<\/p>\n<p><\/p>\n<p>Varf\u00f6r s\u00e5? F\u00f6r att dina noder redan har konfigurerade rutter:<\/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>Och adresser fr\u00e5n samma intervall kommer att \u00e5teranv\u00e4nda dem utan n\u00e5gra ytterligare \u00e5tg\u00e4rder.<\/p>\n<p><\/p>\n<h1 id=\"sluchay-2-kogda-trebuetsya-dopolnitelnaya-nastroyka\">Fall 2: N\u00e4r ytterligare konfiguration kr\u00e4vs<\/h1>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Finslipa routingen f\u00f6r MetalLB i L2-l\u00e4ge\" src=\"\/wp-content\/uploads\/2020\/05\/02392fbc3c16bdf52f0c5ddaf5688e7d.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Du b\u00f6r st\u00e4lla in ytterligare rutter varje g\u00e5ng dina noder inte har en konfigurerad <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/sv\/lir\/ipv4\/\"   title=\"IP-adresser\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"666\">IP-adresser<\/a> eller rutt till subn\u00e4tet f\u00f6r vilket MetalLB tillhandah\u00e5ller adresser.<\/p>\n<p><\/p>\n<p>L\u00e5t mig f\u00f6rklara lite mer ing\u00e5ende. Varje g\u00e5ng MetalLB tillhandah\u00e5ller en adress kan det liknas vid en enkel tilldelning som:<\/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>Observera att:<\/p>\n<p><\/p>\n<ul>\n<li><strong>a)<\/strong> Adressen tilldelas med prefix <code>\/32<\/code> vilket betyder att rutt till subn\u00e4tet f\u00f6r den automatiskt inte kommer att l\u00e4ggas till (det \u00e4r bara en adress)<\/li>\n<li><strong>b)<\/strong> Adressen kopplas till vilken nodens gr\u00e4nssnitt som helst (till exempel loopback). H\u00e4r \u00e4r det v\u00e4rt att n\u00e4mna hur Linux-n\u00e4tverksstacks funktioner. Det spelar ingen roll vilket gr\u00e4nssnitt du l\u00e4gger till adressen, k\u00e4rnan kommer alltid att hantera arp-f\u00f6rfr\u00e5gningar och skicka arp-svar p\u00e5 vilket som helst av dem, detta beteende anses vara korrekt och dessutom anv\u00e4nds det ganska ofta i en dynamisk milj\u00f6 som Kubernetes.<\/li>\n<\/ul>\n<p><\/p>\n<p>Detta beteende kan konfigureras, till exempel genom att aktivera strikt 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 det h\u00e4r fallet kommer arp-svar endast att skickas om gr\u00e4nssnittet uttryckligen inneh\u00e5ller en specifik IP-adress. Denna inst\u00e4llning \u00e4r obligatorisk om du planerar att anv\u00e4nda MetalLB och din kube-proxy fungerar i IPVS-l\u00e4ge.<\/p>\n<p><\/p>\n<p>MetalLB anv\u00e4nder dock inte k\u00e4rnan f\u00f6r att bearbeta arp-f\u00f6rfr\u00e5gningar, utan g\u00f6r det sj\u00e4lv i anv\u00e4ndarl\u00e4get, s\u00e5 denna alternativ kommer inte att p\u00e5verka MetalLB:s funktion.<\/p>\n<p><\/p>\n<p>L\u00e5t oss \u00e5terv\u00e4nda till v\u00e5r uppgift. Om det inte finns n\u00e5gon rutt f\u00f6r de tilldelade adresserna p\u00e5 dina noder, l\u00e4gg till den i f\u00f6rv\u00e4g p\u00e5 alla 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\">Fall 3: N\u00e4r du beh\u00f6ver source-based routing<\/h1>\n<p><\/p>\n<p>Source-based routing beh\u00f6ver du konfigurera n\u00e4r du tar emot paket genom en separat gateway, inte den som \u00e4r inst\u00e4lld som standard, s\u00e5 att svarspaketen ocks\u00e5 m\u00e5ste g\u00e5 genom denna gateway.<\/p>\n<p><\/p>\n<p>Till exempel har du samma subnet <code>192.168.1.0\/24<\/code> tilldelat f\u00f6r dina noder, men du vill tilldela externa adresser med hj\u00e4lp av MetalLB. Anta att du har flera adresser fr\u00e5n subnettet <code>1.2.3.0\/24<\/code> som ligger i VLAN 100, och du vill anv\u00e4nda dem f\u00f6r att f\u00e5 \u00e5tkomst till Kubernetes-tj\u00e4nster utifr\u00e5n.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Finslipa routingen f\u00f6r MetalLB i L2-l\u00e4ge\" src=\"\/wp-content\/uploads\/2020\/05\/9360f35c4bfae25b12fc5aab2644b775.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>N\u00e4r du g\u00f6r en f\u00f6rfr\u00e5gan till <code>1.2.3.4<\/code> g\u00f6r du f\u00f6rfr\u00e5gningar fr\u00e5n ett annat subnet \u00e4n <code>1.2.3.0\/24<\/code> och v\u00e4ntar p\u00e5 svar. Den nod som f\u00f6r tillf\u00e4llet \u00e4r master f\u00f6r den tilldelade MetalLB-adressen <code>1.2.3.4<\/code>, kommer att ta emot paket fr\u00e5n routern <code>1.2.3.1<\/code>, men svaret m\u00e5ste n\u00f6dv\u00e4ndigtvis skickas tillbaka samma v\u00e4g, genom <code>1.2.3.1<\/code>.<\/p>\n<p><\/p>\n<p>Eftersom v\u00e5r nod redan har en inst\u00e4lld default gateway <code>192.168.1.1<\/code>, s\u00e5 kommer svaret som standard att g\u00e5 dit, och inte till <code>1.2.3.1<\/code>, genom vilken vi tog emot paketet.<\/p>\n<p><\/p>\n<p>Hur hanterar vi denna situation?<\/p>\n<p><\/p>\n<p>I det h\u00e4r fallet m\u00e5ste du f\u00f6rbereda alla dina noder s\u00e5 att de \u00e4r redo att hantera externa adresser utan ytterligare konfiguration. Det vill s\u00e4ga f\u00f6r det ovanst\u00e5ende exemplet m\u00e5ste du i f\u00f6rv\u00e4g skapa ett VLAN-gr\u00e4nssnitt p\u00e5 noden:<\/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>Och sedan l\u00e4gga till rutter:<\/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>Observera att rutter vi l\u00e4gger till i en separat routingtabell <code>100<\/code> den kommer endast att inneh\u00e5lla tv\u00e5 rutter som \u00e4r n\u00f6dv\u00e4ndiga f\u00f6r att skicka svarspaketet genom gateway <code>1.2.3.1<\/code>, som ligger bakom gr\u00e4nssnittet <code>eth0.100<\/code>.<\/p>\n<p><\/p>\n<p>Nu beh\u00f6ver vi l\u00e4gga till en enkel 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 tydligt s\u00e4ger: om k\u00e4lladressen f\u00f6r paketet ligger i <code>1.2.3.0\/24<\/code>, d\u00e5 ska routingtabellen anv\u00e4ndas <code>100<\/code>. I den har vi redan beskrivit en v\u00e4g som skickar den genom <code>1.2.3.1<\/code><\/p>\n<p><\/p>\n<h1 id=\"sluchay-4-kogda-ponadobitsya-policy-based-routing\">Fall 4: N\u00e4r policy-baserad routing beh\u00f6vs<\/h1>\n<p><\/p>\n<p>N\u00e4tverks Topologi som i det f\u00f6reg\u00e5ende exemplet, men l\u00e5t oss s\u00e4ga att du ocks\u00e5 vill ha m\u00f6jligheten att komma \u00e5t externa adresser i poolen <code>1.2.3.0\/24<\/code> fr\u00e5n dina pods:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Finslipa routingen f\u00f6r MetalLB i L2-l\u00e4ge\" src=\"\/wp-content\/uploads\/2020\/05\/46f1f7c2826d87ec1fe8499862ccdd1a.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Det unika \u00e4r att n\u00e4r man kontaktar en adress i <code>1.2.3.0\/24<\/code>, kommer svaret att n\u00e5 noden och ha k\u00e4llaadressen inom omr\u00e5det <code>1.2.3.0\/24<\/code> och kommer lydigt att skickas till <code>eth0.100<\/code>, men vi vill att Kubernetes ska omdirigera det till v\u00e5r f\u00f6rsta podd som initialt genererade f\u00f6rfr\u00e5gan.<\/p>\n<p><\/p>\n<p>Att l\u00f6sa detta problem visade sig vara utmanande, men det blev m\u00f6jligt tack vare policy-baserad routing:<\/p>\n<p><\/p>\n<p>F\u00f6r att b\u00e4ttre f\u00f6rst\u00e5 processen, l\u00e5t mig ge dig ett fl\u00f6desschema f\u00f6r netfilter:<br \/>\n<img decoding=\"async\" alt=\"Finslipa routingen f\u00f6r MetalLB i L2-l\u00e4ge\" src=\"\/wp-content\/uploads\/2020\/05\/6b2f117c2dcddad85190156d566231c8.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>F\u00f6rst, som i det f\u00f6reg\u00e5ende exemplet, l\u00e5t oss skapa en extra routingtabell:<\/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 l\u00e4gger vi till n\u00e5gra 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>Dessa regler kommer att m\u00e4rka inkommande anslutningar p\u00e5 gr\u00e4nssnittet <code>eth0.100<\/code>, m\u00e4rkning av alla paket med taggen <code>0x100<\/code>, samma tagg kommer ocks\u00e5 att anv\u00e4ndas f\u00f6r svaren inom en och samma anslutning.<\/p>\n<p><\/p>\n<p>Nu kan vi l\u00e4gga till 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 vill s\u00e4ga alla paket med k\u00e4llaadressen <code>1.2.3.0\/24<\/code> och taggen <code>0x100<\/code> ska routas med hj\u00e4lp av tabellen <code>100<\/code>.<\/p>\n<p><\/p>\n<p>S\u00e5ledes kommer andra paket som tas emot p\u00e5 ett annat gr\u00e4nssnitt inte att omfattas av denna regel, vilket till\u00e5ter dem att routas med standardmetoderna i Kubernetes.<\/p>\n<p><\/p>\n<p>Det finns en annan aspekt, i Linux finns det s\u00e5 kallad reverse path filter som st\u00e4ller till det genom att utf\u00f6ra en enkel kontroll: f\u00f6r alla inkommande paket \u00e4ndrar den k\u00e4llaadressen i paketet med avs\u00e4ndarens adress och kontrollerar om paketet kan skickas ut genom samma gr\u00e4nssnitt som det mottogs p\u00e5, om inte, filtreras det.<\/p>\n<p><\/p>\n<p>Problemet \u00e4r att det i v\u00e5rt fall kommer att fungera inkorrekt, men vi kan st\u00e4nga av 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>Observera att det f\u00f6rsta kommandot kontrollerar det globala beteendet hos rp_filter, om det inte st\u00e4ngs av, kommer det andra kommandot inte att ha n\u00e5gon effekt. \u00c4nd\u00e5 kommer de andra gr\u00e4nssnitten att f\u00f6rbli med rp_filter aktiverat.<\/p>\n<p><\/p>\n<p>F\u00f6r att inte helt begr\u00e4nsa fungerar filtret kan vi anv\u00e4nda implementeringen rp_filter f\u00f6r netfilter. Genom att anv\u00e4nda rpfilter som en iptables-modul kan man st\u00e4lla in ganska flexibla regler, till exempel:<\/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>aktivera rp_filter p\u00e5 gr\u00e4nssnittet <code>eth0.100<\/code> f\u00f6r alla adresser utom <code>1.2.3.0\/24<\/code>.<\/p>\n<p>K\u00e4lla: <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.4 - 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\/sv\/blog\/administrirovanie\/tonkaya-nastrojka-marshrutizaczii-dlya-metallb-v-rezhime-l2\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.4\" \/>\n\t\t<meta property=\"og:locale\" content=\"sv_SE\" \/>\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\/sv\/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 av routing f\u00f6r MetalLB i L2-l\u00e4ge | ProHoster","description":"Nyligen st\u00f6tte jag p\u00e5 n\u00e5got intressant.","canonical_url":"https:\/\/prohoster.info\/sv\/blog\/administrirovanie\/tonkaya-nastrojka-marshrutizaczii-dlya-metallb-v-rezhime-l2","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sv_SE","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\/sv\/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\/sv\/wp-json\/wp\/v2\/posts\/81593","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/comments?post=81593"}],"version-history":[{"count":1,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts\/81593\/revisions"}],"predecessor-version":[{"id":157857,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts\/81593\/revisions\/157857"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/media\/81594"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/media?parent=81593"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/categories?post=81593"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/tags?post=81593"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}