{"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\/it\/blog\/administrirovanie\/tonkaya-nastrojka-marshrutizaczii-dlya-metallb-v-rezhime-l2","title":{"rendered":"Ottimizzazione della routing per MetalLB in modalit\u00e0 L2","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Ottimizzazione della routing per MetalLB in modalit\u00e0 L2\" src=\"\/wp-content\/uploads\/2020\/05\/d03a56702a85f4c8c80a6cac3e489980.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nNon molto tempo fa, mi sono trovato di fronte a un compito piuttosto insolito di configurazione della routazione per MetalLB. Di solito non sono necessarie azioni aggiuntive per MetalLB, ma nel nostro caso abbiamo un cluster abbastanza grande con una configurazione di rete piuttosto semplice.<\/p>\n<p><\/p>\n<p>In questo articolo spiegher\u00f2 come configurare il routing basato su sorgente e policy per la rete esterna del tuo cluster.<\/p>\n<p><\/p>\n<p>Non mi soffermer\u00f2 sui dettagli dell'installazione e configurazione di MetalLB, poich\u00e9 presumo tu abbia gi\u00e0 un po' di esperienza. Passiamo subito al dunque, ovvero la configurazione della routazione. Abbiamo quindi quattro casi:<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h1 id=\"sluchay-1-kogda-nastroyka-ne-trebuetsya\">Caso 1: Quando non \u00e8 necessaria la configurazione<\/h1>\n<p><\/p>\n<p>Analizziamo un caso semplice.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ottimizzazione della routing per MetalLB in modalit\u00e0 L2\" src=\"\/wp-content\/uploads\/2020\/05\/f79cc1169741b899c95e76d5d4cf60fc.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ulteriore configurazione della routazione non \u00e8 necessaria quando gli indirizzi forniti da MetalLB si trovano nella stessa subnet degli indirizzi dei tuoi nodi.<\/p>\n<p><\/p>\n<p>Ad esempio, hai una subnet <code>192.168.1.0\/24<\/code>, c\u2019\u00e8 un router <code>192.168.1.1<\/code>, e i tuoi nodi ricevono indirizzi: <code>192.168.1.10-30<\/code>, allora per MetalLB puoi configurare l'intervallo <code>192.168.1.100-120<\/code> e essere sicuro che funzioner\u00e0 senza alcuna configurazione aggiuntiva.<\/p>\n<p><\/p>\n<p>Perch\u00e9? Perch\u00e9 i tuoi nodi hanno gi\u00e0 delle route 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>E gli indirizzi dello stesso range verranno riutilizzati senza ulteriori complicazioni.<\/p>\n<p><\/p>\n<h1 id=\"sluchay-2-kogda-trebuetsya-dopolnitelnaya-nastroyka\">Caso 2: Quando \u00e8 necessaria una configurazione aggiuntiva<\/h1>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ottimizzazione della routing per MetalLB in modalit\u00e0 L2\" src=\"\/wp-content\/uploads\/2020\/05\/02392fbc3c16bdf52f0c5ddaf5688e7d.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Dovresti configurare ulteriori percorsi ogni volta che le tue nodi non hanno un percorso configurato <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/it\/lir\/ipv4\/\"   title=\"Indirizzi IP\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"666\">Indirizzi IP<\/a> o un percorso nella subnet per la quale MetalLB assegna gli indirizzi.<\/p>\n<p><\/p>\n<p>Spiegher\u00f2 un po' pi\u00f9 nel dettaglio. Ogni volta che MetalLB assegna un indirizzo, questo pu\u00f2 essere paragonato a una semplice assegnazione del tipo:<\/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>Nota bene:<\/p>\n<p><\/p>\n<ul>\n<li><strong>a)<\/strong> L'indirizzo viene assegnato con un prefisso <code>\/32<\/code> quindi il percorso nella subnet per esso non verr\u00e0 aggiunto automaticamente (\u00e8 solo un indirizzo)<\/li>\n<li><strong>b)<\/strong> L'indirizzo \u00e8 assegnato a qualsiasi interfaccia del nodo (ad esempio, loopback). Qui vale la pena menzionare una peculiarit\u00e0 dello stack di rete Linux. Non importa a quale interfaccia aggiungi l'indirizzo, il kernel gestir\u00e0 sempre le richieste ARP e invier\u00e0 risposte ARP su qualsiasi di esse, questo comportamento \u00e8 considerato corretto e, inoltre, \u00e8 abbastanza ampiamente utilizzato in un ambiente dinamico come Kubernetes.<\/li>\n<\/ul>\n<p><\/p>\n<p>Questo comportamento pu\u00f2 essere configurato, ad esempio, abilitando 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>In questo caso, le risposte ARP verranno inviate solo se l'interfaccia contiene esplicitamente un indirizzo IP specifico. Questa impostazione \u00e8 obbligatoria se si prevede di utilizzare MetalLB e se il proprio kube-proxy \u00e8 in modalit\u00e0 IPVS.<\/p>\n<p><\/p>\n<p>Tuttavia, MetalLB non utilizza il kernel per gestire le richieste ARP, ma lo fa autonomamente in user-space; pertanto, questa opzione non influenzer\u00e0 il funzionamento di MetalLB.<\/p>\n<p><\/p>\n<p>Torniamo al nostro compito. Se non esiste una route per gli indirizzi assegnati sui tuoi nodi, aggiungila in anticipo a tutti i nodi:<\/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\">Caso 3: Quando \u00e8 necessario il routing basato sulla sorgente<\/h1>\n<p><\/p>\n<p>Il routing basato sulla sorgente sar\u00e0 necessario configurarlo quando si ricevono pacchetti tramite un gateway separato, diverso da quello impostato per default; quindi, i pacchetti di risposta devono anche uscire tramite lo stesso gateway.<\/p>\n<p><\/p>\n<p>Ad esempio, hai ancora la stessa sottorete <code>192.168.1.0\/24<\/code> dedicata ai tuoi nodi, ma desideri emettere indirizzi esterni utilizzando MetalLB. Supponiamo che tu abbia diversi indirizzi della sottorete <code>1.2.3.0\/24<\/code> che si trovano nella VLAN 100, e desideri utilizzarli per accedere ai servizi Kubernetes dall'esterno.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ottimizzazione della routing per MetalLB in modalit\u00e0 L2\" src=\"\/wp-content\/uploads\/2020\/05\/9360f35c4bfae25b12fc5aab2644b775.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Quando ti colleghi a <code>1.2.3.4<\/code> effettuerai richieste da un'altra sottorete rispetto a <code>1.2.3.0\/24<\/code> e attendere una risposta. Il nodo attualmente designato come master per l'indirizzo MetalLB assegnato <code>1.2.3.4<\/code>, ricever\u00e0 un pacchetto dal router <code>1.2.3.1<\/code>, ma la risposta deve obbligatoriamente seguire lo stesso percorso, attraverso <code>1.2.3.1<\/code>.<\/p>\n<p><\/p>\n<p>Poich\u00e9 il nostro nodo ha gi\u00e0 un gateway predefinito configurato <code>192.168.1.1<\/code>, la risposta andr\u00e0 per impostazione predefinita a lui, e non a <code>1.2.3.1<\/code>, attraverso il quale abbiamo ricevuto il pacchetto.<\/p>\n<p><\/p>\n<p>Come affrontare questa situazione?<\/p>\n<p><\/p>\n<p>In questo caso, \u00e8 necessario preparare tutti i vostri nodi in modo che siano pronti a gestire indirizzi esterni senza configurazioni aggiuntive. Cio\u00e8, per l'esempio sopra, dovete creare in anticipo un'interfaccia VLAN sul nodo:<\/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>E poi aggiungere le rotte:<\/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>Si noti che le rotte vengono aggiunte in una tabella di routing separata <code>100<\/code> che conterr\u00e0 solo due rotte necessarie per inviare il pacchetto di risposta attraverso il gateway <code>1.2.3.1<\/code>, situato dietro l'interfaccia <code>eth0.100<\/code>.<\/p>\n<p><\/p>\n<p>Ora dobbiamo aggiungere una semplice regola:<\/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>che dice esplicitamente: se l'indirizzo di origine del pacchetto si trova in <code>1.2.3.0\/24<\/code>, bisogna utilizzare la tabella di routing <code>100<\/code>. All'interno abbiamo gi\u00e0 descritto un percorso che lo invier\u00e0 attraverso <code>1.2.3.1<\/code><\/p>\n<p><\/p>\n<h1 id=\"sluchay-4-kogda-ponadobitsya-policy-based-routing\">Caso 4: Quando sar\u00e0 necessario il routing basato su policy<\/h1>\n<p><\/p>\n<p>Topologia della rete come nell'esempio precedente, ma supponiamo che tu voglia anche avere la possibilit\u00e0 di accedere a indirizzi esterni del pool <code>1.2.3.0\/24<\/code> dai tuoi pod:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ottimizzazione della routing per MetalLB in modalit\u00e0 L2\" src=\"\/wp-content\/uploads\/2020\/05\/46f1f7c2826d87ec1fe8499862ccdd1a.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>La particolarit\u00e0 \u00e8 che quando si accede a qualsiasi indirizzo in <code>1.2.3.0\/24<\/code>, il pacchetto di risposta, arrivando su un nodo e avendo un indirizzo sorgente nell'intervallo <code>1.2.3.0\/24<\/code> verr\u00e0 obbedientemente inviato a <code>eth0.100<\/code>, ma noi vogliamo che Kubernetes lo reindirizzi al nostro primo pod, che ha generato la richiesta iniziale.<\/p>\n<p><\/p>\n<p>Risolgere questo problema si \u00e8 rivelato non facile, ma \u00e8 stato reso possibile grazie al routing basato su policy:<\/p>\n<p><\/p>\n<p>Per una maggiore comprensione del processo, presenter\u00f2 uno schema a blocchi di netfilter:<br \/>\n<img decoding=\"async\" alt=\"Ottimizzazione della routing per MetalLB in modalit\u00e0 L2\" src=\"\/wp-content\/uploads\/2020\/05\/6b2f117c2dcddad85190156d566231c8.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Per prima cosa, come nell'esempio precedente, creeremo una tabella di routing aggiuntiva:<\/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>Ora aggiungiamo alcune regole in 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>Queste regole contrassegneranno le connessioni in ingresso sull'interfaccia <code>eth0.100<\/code>, contrassegnando tutti i pacchetti con il tag <code>0x100<\/code>, lo stesso tag sar\u00e0 utilizzato anche per le risposte all'interno di una singola connessione.<\/p>\n<p><\/p>\n<p>Ora possiamo aggiungere una regola di routing:<\/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>Cio\u00e8, tutti i pacchetti con indirizzo sorgente <code>1.2.3.0\/24<\/code> e il tag <code>0x100<\/code> devono essere instradati utilizzando la tabella <code>100<\/code>.<\/p>\n<p><\/p>\n<p>In questo modo, altri pacchetti ricevuti su un'altra interfaccia non rientrano in questa regola, permettendo cos\u00ec di essere instradati con i normali mezzi di Kubernetes.<\/p>\n<p><\/p>\n<p>C'\u00e8 per\u00f2 un altro aspetto: in Linux esiste quello che si chiama filtro di percorso inverso, che rovina tutto e svolge un semplice controllo: per tutti i pacchetti in entrata cambia l'indirizzo sorgente del pacchetto con l'indirizzo del mittente e verifica se il pacchetto possa uscire tramite lo stesso interfaccia sulla quale \u00e8 stato ricevuto; se no, lo filtra.<\/p>\n<p><\/p>\n<p>Il problema \u00e8 che nel nostro caso non funzioner\u00e0 correttamente, ma possiamo disabilitarlo:<\/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>Nota che il primo comando controlla il comportamento globale di rp_filter; se non viene disabilitato, il secondo comando non avr\u00e0 alcun effetto. Tuttavia, le altre interfacce rimarranno con rp_filter attivato.<\/p>\n<p><\/p>\n<p>Per non limitare completamente il funzionamento del filtro, possiamo utilizzare l'implementazione di rp_filter per netfilter. Usando rpfilter come modulo iptables, \u00e8 possibile configurare regole abbastanza flessibili, ad esempio:<\/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>attivare rp_filter sull'interfaccia <code>eth0.100<\/code> per tutti gli indirizzi tranne <code>1.2.3.0\/24<\/code>.<\/p>\n<p>Fonte: <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 4.9.10 - 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 \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\" \/>\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\/it\/blog\/administrirovanie\/tonkaya-nastrojka-marshrutizaczii-dlya-metallb-v-rezhime-l2\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\n\t\t<meta property=\"og:locale\" content=\"it_IT\" \/>\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 \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\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/it\/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\udd47Ottimizzazione della routing per MetalLB in modalit\u00e0 L2 | ProHoster","description":"Non molto tempo fa, mi sono imbattuto in un compito piuttosto insolito per configurare la routing per MetalLB. Nulla di complicato, dato che di solito per MetalLB non sono richieste azioni aggiuntive, ma nel nostro caso abbiamo un cluster piuttosto grande con una configurazione di rete piuttosto semplice. In questo articolo, spiegher\u00f2 come configurare la routing basata su sorgente e quella basata su policy per la rete esterna del vostro cluster. Io","canonical_url":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/tonkaya-nastrojka-marshrutizaczii-dlya-metallb-v-rezhime-l2","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"it_IT","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 \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","og:url":"https:\/\/prohoster.info\/it\/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"},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/81593","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/comments?post=81593"}],"version-history":[{"count":1,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/81593\/revisions"}],"predecessor-version":[{"id":157857,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/81593\/revisions\/157857"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media\/81594"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media?parent=81593"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/categories?post=81593"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/tags?post=81593"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}