{"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\/ro\/blog\/administrirovanie\/tonkaya-nastrojka-marshrutizaczii-dlya-metallb-v-rezhime-l2","title":{"rendered":"Configurarea fin\u0103 a rut\u0103rii pentru MetalLB \u00een modul L2","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Configurarea fin\u0103 a rut\u0103rii pentru MetalLB \u00een modul L2\" src=\"\/wp-content\/uploads\/2020\/05\/d03a56702a85f4c8c80a6cac3e489980.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nNu cu mult timp \u00een urm\u0103, m-am confruntat cu o sarcin\u0103 destul de neobi\u0219nuit\u0103 de configurare a rut\u0103rii pentru MetalLB. Nimic neobi\u0219nuit p\u00e2n\u0103 acum, deoarece \u00een mod normal nu sunt necesare ac\u021biuni suplimentare pentru MetalLB, dar \u00een cazul nostru avem un cluster destul de mare cu o configura\u021bie de re\u021bea destul de simpl\u0103.<\/p>\n<p><\/p>\n<p>\u00cen acest articol, voi descrie cum s\u0103 configura\u021bi rutarea bazat\u0103 pe surs\u0103 \u0219i rutarea bazat\u0103 pe politici pentru re\u021beaua extern\u0103 a clusterului dumneavoastr\u0103.<\/p>\n<p><\/p>\n<p>Nu voi intra \u00een detalii despre instalarea \u0219i configurarea MetalLB, deoarece presupun c\u0103 deja ave\u021bi o experien\u021b\u0103 anterioar\u0103. Propun s\u0103 trecem direct la subiect, \u0219i anume la configurarea rut\u0103rii. A\u0219adar, avem patru cazuri:<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h1 id=\"sluchay-1-kogda-nastroyka-ne-trebuetsya\">Cazul 1: C\u00e2nd configurarea nu este necesar\u0103<\/h1>\n<p><\/p>\n<p>S\u0103 analiz\u0103m un caz simplu.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Configurarea fin\u0103 a rut\u0103rii pentru MetalLB \u00een modul L2\" src=\"\/wp-content\/uploads\/2020\/05\/f79cc1169741b899c95e76d5d4cf60fc.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Configurarea suplimentar\u0103 a rut\u0103rii nu este necesar\u0103 atunci c\u00e2nd adresele emise de MetalLB se afl\u0103 \u00een aceea\u0219i subre\u021bea cu adresele nodurilor dumneavoastr\u0103.<\/p>\n<p><\/p>\n<p>De exemplu, ave\u021bi o subre\u021bea <code>192.168.1.0\/24<\/code>, \u00een care exist\u0103 un router <code>192.168.1.1<\/code>, iar nodurile dumneavoastr\u0103 primesc adrese: <code>192.168.1.10-30<\/code>, atunci pentru MetalLB pute\u021bi s\u0103 configura\u021bi intervalul <code>192.168.1.100-120<\/code> \u0219i s\u0103 fi\u021bi sigur c\u0103 acestea vor func\u021biona f\u0103r\u0103 vreo configurare suplimentar\u0103.<\/p>\n<p><\/p>\n<p>De ce a\u0219a? Pentru c\u0103 nodurile dumneavoastr\u0103 au deja rutele configurate:<\/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>\u0218i adresele din acela\u0219i interval vor fi reutilizate f\u0103r\u0103 a necesita alte ac\u021biuni suplimentare.<\/p>\n<p><\/p>\n<h1 id=\"sluchay-2-kogda-trebuetsya-dopolnitelnaya-nastroyka\">Cazul 2: C\u00e2nd este necesar\u0103 o configurare suplimentar\u0103<\/h1>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Configurarea fin\u0103 a rut\u0103rii pentru MetalLB \u00een modul L2\" src=\"\/wp-content\/uploads\/2020\/05\/02392fbc3c16bdf52f0c5ddaf5688e7d.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Trebuie s\u0103 configura\u021bi rute suplimentare de fiecare dat\u0103 c\u00e2nd nodurile dumneavoastr\u0103 nu au ruta configurat\u0103 <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/ro\/lir\/ipv4\/\"   title=\"adrese IP\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"666\">adrese IP<\/a> sau ruta \u00een subre\u021beaua pentru care MetalLB emite adrese.<\/p>\n<p><\/p>\n<p>Voi explica pu\u021bin mai \u00een detaliu. De fiecare dat\u0103 c\u00e2nd MetalLB emite o adres\u0103, aceasta poate fi comparat\u0103 cu o simpl\u0103 atribu\u021bie de tip:<\/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>Observa\u021bi, pe:<\/p>\n<p><\/p>\n<ul>\n<li><strong>a)<\/strong> Adresa este atribuit\u0103 cu un prefix <code>\/32<\/code> deci ruta \u00een subre\u021bea pentru aceasta nu va fi ad\u0103ugat\u0103 automat (aceasta este pur \u0219i simplu o adres\u0103)<\/li>\n<li><strong>b)<\/strong> Adresa este ata\u0219at\u0103 la orice interfa\u021b\u0103 a nodului (de exemplu, loopback). Aici merit\u0103 men\u021bionat\u0103 o particularitate a stivei de re\u021bea Linux. Nu conteaz\u0103 pe ce interfa\u021b\u0103 ad\u0103uga\u021bi adresa, kernelul va procesa \u00eentotdeauna solicit\u0103rile arp \u0219i va trimite r\u0103spunsurile arp pe oricare dintre acestea, acest comportament este considerat corect \u0219i, \u00een plus, este destul de utilizat \u00eentr-un mediu dinamic precum Kubernetes.<\/li>\n<\/ul>\n<p><\/p>\n<p>Acest comportament poate fi configurat, de exemplu, activ\u00e2nd 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>\u00cen acest caz, r\u0103spunsurile ARP vor fi trimise doar dac\u0103 interfa\u021ba con\u021bine \u00een mod explicit o adres\u0103 IP specific\u0103. Aceast\u0103 setare este obligatorie dac\u0103 inten\u021biona\u021bi s\u0103 utiliza\u021bi MetalLB \u0219i kube-proxy-ul dvs. func\u021bioneaz\u0103 \u00een modul IPVS.<\/p>\n<p><\/p>\n<p>Cu toate acestea, MetalLB nu folose\u0219te nucleul pentru a procesa cererile ARP, ci o face singur\u0103 \u00een spa\u021biul utilizatorului, astfel c\u0103 aceast\u0103 op\u021biune nu va afecta func\u021bionarea MetalLB.<\/p>\n<p><\/p>\n<p>S\u0103 ne \u00eentoarcem la sarcina noastr\u0103. Dac\u0103 nu exist\u0103 o rut\u0103 pentru adresele emise pe nodurile dvs., ad\u0103uga\u021bi-o \u00een prealabil pe toate nodurile:<\/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\">Cazul 3: C\u00e2nd este necesar routing-ul bazat pe surs\u0103<\/h1>\n<p><\/p>\n<p>Routing-ul bazat pe surs\u0103 trebuie s\u0103 fie configurat atunci c\u00e2nd primi\u021bi pachete printr-un gateway separat, diferit de cel configurat implicit, prin urmare pachetele de r\u0103spuns trebuie s\u0103 p\u0103r\u0103seasc\u0103 de asemenea prin acest gateway.<\/p>\n<p><\/p>\n<p>De exemplu, ave\u021bi aceea\u0219i subre\u021bea <code>192.168.1.0\/24<\/code> dedicat\u0103 nodurilor dvs., dar dori\u021bi s\u0103 emite\u021bi adrese externe folosind MetalLB. S\u0103 presupunem c\u0103 ave\u021bi c\u00e2teva adrese din subre\u021beaua <code>1.2.3.0\/24<\/code> aflate \u00een VLAN 100, \u0219i dori\u021bi s\u0103 le utiliza\u021bi pentru accesul la serviciile Kubernetes din exterior.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Configurarea fin\u0103 a rut\u0103rii pentru MetalLB \u00een modul L2\" src=\"\/wp-content\/uploads\/2020\/05\/9360f35c4bfae25b12fc5aab2644b775.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>C\u00e2nd accesa\u021bi <code>1.2.3.4<\/code> ve\u021bi face cereri dintr-o alt\u0103 subre\u021bea dec\u00e2t <code>1.2.3.0\/24<\/code> \u0219i a\u0219tepta\u021bi un r\u0103spuns. Nodul care este \u00een prezent maestru pentru adresa MetalLB emis\u0103 <code>1.2.3.4<\/code>, va primi pachetul de la router <code>1.2.3.1<\/code>, dar r\u0103spunsul pentru acesta trebuie neap\u0103rat s\u0103 plece prin aceea\u0219i rut\u0103, prin <code>1.2.3.1<\/code>.<\/p>\n<p><\/p>\n<p>Deoarece nodul nostru are deja configurat un gateway implicit <code>192.168.1.1<\/code>, prin urmare, r\u0103spunsul va merge implicit c\u0103tre acesta, nu c\u0103tre <code>1.2.3.1<\/code>, prin care am primit pachetul.<\/p>\n<p><\/p>\n<p>Cum putem gestiona aceast\u0103 situa\u021bie?<\/p>\n<p><\/p>\n<p>\u00cen acest caz, este necesar s\u0103 preg\u0103ti\u021bi toate nodurile astfel \u00eenc\u00e2t s\u0103 fie capabile s\u0103 gestioneze adrese externe f\u0103r\u0103 configur\u0103ri suplimentare. Cu alte cuvinte, pentru exemplul de mai sus, trebuie s\u0103 crea\u021bi \u00een prealabil o interfa\u021b\u0103 VLAN pe nod:<\/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>Apoi, ad\u0103uga\u021bi rutele:<\/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>Re\u021bine\u021bi c\u0103 rutele sunt ad\u0103ugate \u00eentr-o tabel\u0103 de rutare separat\u0103 <code>100<\/code> aceasta va con\u021bine doar dou\u0103 rute necesare pentru a trimite pachetul de r\u0103spuns prin gateway <code>1.2.3.1<\/code>, care se afl\u0103 dup\u0103 interfa\u021ba <code>eth0.100<\/code>.<\/p>\n<p><\/p>\n<p>Acum trebuie s\u0103 ad\u0103ug\u0103m o regul\u0103 simpl\u0103:<\/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>care spune \u00een mod explicit: dac\u0103 adresa surs\u0103 a pachetului se afl\u0103 \u00een <code>1.2.3.0\/24<\/code>, atunci trebuie folosit tabelul de rutare. <code>100<\/code>. \u00cen aceasta avem deja descris traseul care \u00eel va trimite prin <code>1.2.3.1<\/code><\/p>\n<p><\/p>\n<h1 id=\"sluchay-4-kogda-ponadobitsya-policy-based-routing\">Caz 4: C\u00e2nd este necesar\u0103 rutarea bazat\u0103 pe politici<\/h1>\n<p><\/p>\n<p>Topologia re\u021belei este ca \u00een exemplul anterior, dar s\u0103 presupunem c\u0103 dori\u021bi de asemenea s\u0103 ave\u021bi posibilitatea de a accesa adrese externe din pool-ul <code>1.2.3.0\/24<\/code> din podurile dvs.:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Configurarea fin\u0103 a rut\u0103rii pentru MetalLB \u00een modul L2\" src=\"\/wp-content\/uploads\/2020\/05\/46f1f7c2826d87ec1fe8499862ccdd1a.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Particularitatea const\u0103 \u00een faptul c\u0103, atunci c\u00e2nd accesa\u021bi orice adres\u0103 \u00een <code>1.2.3.0\/24<\/code>, pachetul de r\u0103spuns ajung\u00e2nd pe nod \u0219i av\u00e2nd adresa surs\u0103 \u00een intervalul <code>1.2.3.0\/24<\/code> va fi trimis cu docilitate \u00een <code>eth0.100<\/code>, dar noi vrem ca Kubernetes s\u0103-l redirec\u021bioneze c\u0103tre primul nostru pod, care a generat ini\u021bial cererea.<\/p>\n<p><\/p>\n<p>Rezolvarea acestei probleme s-a dovedit a fi complicat\u0103, dar a devenit posibil\u0103 datorit\u0103 ruterii bazate pe politici:<\/p>\n<p><\/p>\n<p>Pentru o mai bun\u0103 \u00een\u021belegere a procesului, voi prezenta un bloc schematic netfilter:<br \/>\n<img decoding=\"async\" alt=\"Configurarea fin\u0103 a rut\u0103rii pentru MetalLB \u00een modul L2\" src=\"\/wp-content\/uploads\/2020\/05\/6b2f117c2dcddad85190156d566231c8.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Mai \u00eent\u00e2i, ca \u0219i \u00een exemplul anterior, vom crea o tabel\u0103 suplimentar\u0103 de rutare:<\/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>Acum vom ad\u0103uga c\u00e2teva reguli \u00een 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>Aceste reguli vor marca conexiunile de intrare pe interfa\u021b\u0103 <code>eth0.100<\/code>, marc\u00e2nd toate pachetele cu eticheta <code>0x100<\/code>, aceea\u0219i etichet\u0103 va fi aplicat\u0103 \u0219i r\u0103spunsurilor \u00een cadrul acelea\u0219i conexiuni.<\/p>\n<p><\/p>\n<p>Acum putem ad\u0103uga o regul\u0103 de rutare:<\/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>Adic\u0103, toate pachetele cu adresa surs\u0103 <code>1.2.3.0\/24<\/code> \u0219i eticheta <code>0x100<\/code> trebuie s\u0103 fie rutate folosind tabela <code>100<\/code>.<\/p>\n<p><\/p>\n<p>Astfel, alte pachete primite pe o alt\u0103 interfa\u021b\u0103 nu se \u00eencadreaz\u0103 \u00een aceast\u0103 regul\u0103, ceea ce le va permite s\u0103 fie rutate prin metode standard Kubernetes.<\/p>\n<p><\/p>\n<p>Exist\u0103 totu\u0219i o problem\u0103: \u00een Linux exist\u0103 a\u0219a-numitul filtru de cale invers\u0103 care stric\u0103 totul, efectueaz\u0103 o simpl\u0103 verificare: pentru toate pachetele de intrare, schimb\u0103 adresa surs\u0103 a pachetului cu adresa expeditorului \u0219i verific\u0103 dac\u0103 pachetul poate pleca prin aceea\u0219i interfa\u021b\u0103 pe care a fost primit, dac\u0103 nu, \u00eel filtreaz\u0103.<\/p>\n<p><\/p>\n<p>Problema este c\u0103, \u00een cazul nostru, acesta va func\u021biona incorect, dar \u00eel putem dezactiva:<\/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>Re\u021bine\u021bi, prima comand\u0103 controleaz\u0103 comportamentul global al rp_filter, dac\u0103 nu este dezactivat, a doua comand\u0103 nu va avea niciun efect. Cu toate acestea, celelalte interfe\u021be vor r\u0103m\u00e2ne cu rp_filter activat.<\/p>\n<p><\/p>\n<p>Pentru a nu restric\u021biona complet func\u021bionarea filtrului, putem utiliza implementarea rp_filter pentru netfilter. Folosind rpfilter ca modul iptables, putem configura reguli destul de flexibile, de exemplu:<\/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>activeaz\u0103 rp_filter pe interfa\u021b\u0103 <code>eth0.100<\/code> pentru toate adresele, mai pu\u021bin <code>1.2.3.0\/24<\/code>.<\/p>\n<p>Sursa: <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.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\/ro\/blog\/administrirovanie\/tonkaya-nastrojka-marshrutizaczii-dlya-metallb-v-rezhime-l2\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"ro_RO\" \/>\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\/ro\/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\udd47Configurarea fin\u0103 a rut\u0103rii pentru MetalLB \u00een modul L2 | ProHoster","description":"Nu cu mult timp \u00een urm\u0103, m-am confruntat cu o situa\u021bie destul de.","canonical_url":"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/tonkaya-nastrojka-marshrutizaczii-dlya-metallb-v-rezhime-l2","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"ro_RO","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\/ro\/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\/ro\/wp-json\/wp\/v2\/posts\/81593","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/comments?post=81593"}],"version-history":[{"count":1,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts\/81593\/revisions"}],"predecessor-version":[{"id":157857,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts\/81593\/revisions\/157857"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media\/81594"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media?parent=81593"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/categories?post=81593"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/tags?post=81593"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}