{"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\/nl\/blog\/administrirovanie\/tonkaya-nastrojka-marshrutizaczii-dlya-metallb-v-rezhime-l2","title":{"rendered":"Fijne afstemming van routering voor MetalLB in L2-modus.","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Fijne afstemming van routering voor MetalLB in L2-modus.\" src=\"\/wp-content\/uploads\/2020\/05\/d03a56702a85f4c8c80a6cac3e489980.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nNiet zo lang geleden kwam ik voor een vrij ongebruikelijke taak te staan bij het configureren van routing voor MetalLB. Normaal gesproken zijn er geen extra acties voor MetalLB nodig, maar in ons geval hebben we een behoorlijk grote cluster met een vrij eenvoudige netwerkconfiguratie.<\/p>\n<p><\/p>\n<p>In dit artikel zal ik uitleggen hoe je source-based en policy-based routing voor het externe netwerk van je cluster kunt instellen.<\/p>\n<p><\/p>\n<p>Ik zal niet in detail ingaan op de installatie en configuratie van MetalLB, omdat ik ervan uitga dat je al enige ervaring hebt. Laten we meteen aan de slag gaan met de configuratie van de routing. We hebben vier cases:<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h1 id=\"sluchay-1-kogda-nastroyka-ne-trebuetsya\">Case 1: Wanneer geen configuratie nodig is<\/h1>\n<p><\/p>\n<p>Laten we een eenvoudige case doornemen.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Fijne afstemming van routering voor MetalLB in L2-modus.\" src=\"\/wp-content\/uploads\/2020\/05\/f79cc1169741b899c95e76d5d4cf60fc.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Extra routingconfiguratie is niet nodig wanneer de door MetalLB toegewezen adressen zich in hetzelfde subnet bevinden als de adressen van je nodes.<\/p>\n<p><\/p>\n<p>Bijvoorbeeld, je hebt een subnet <code>192.168.1.0\/24<\/code>, daarin is een router <code>192.168.1.1<\/code>, en je nodes krijgen adressen: <code>192.168.1.10-30<\/code>, dan kun je voor MetalLB het bereik instellen <code>192.168.1.100-120<\/code> en er zeker van zijn dat ze zonder enige extra configuratie zullen werken.<\/p>\n<p><\/p>\n<p>Waarom is dat zo? Omdat je nodes al routes hebben ingesteld:<\/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>En adressen uit hetzelfde bereik zullen hun routes hergebruiken zonder enige extra moeite.<\/p>\n<p><\/p>\n<h1 id=\"sluchay-2-kogda-trebuetsya-dopolnitelnaya-nastroyka\">Case 2: Wanneer extra configuratie nodig is<\/h1>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Fijne afstemming van routering voor MetalLB in L2-modus.\" src=\"\/wp-content\/uploads\/2020\/05\/02392fbc3c16bdf52f0c5ddaf5688e7d.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Je moet extra routes instellen telkens wanneer je nodes geen ingesteld hebben <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/nl\/lir\/ipv4\/\"   title=\"IP-adressen\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"666\">IP-adressen<\/a> of geen route naar het subnet waarvoor MetalLB adressen toewijst.<\/p>\n<p><\/p>\n<p>Ik zal het iets uitgebreider uitleggen. Telkens wanneer MetalLB een adres toewijst, kun je dit vergelijken met een eenvoudige toewijzing zoals:<\/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>Let op:<\/p>\n<p><\/p>\n<ul>\n<li><strong>a)<\/strong> Het adres wordt toegewezen met een prefix <code>\/32<\/code> dat wil zeggen dat er automatisch geen route naar het subnet voor wordt toegevoegd (dit is gewoon een adres)<\/li>\n<li><strong>b) Het adres wordt aan elke interface van de node toegewezen (bijvoorbeeld loopback). Hier moet ik het hebben over de eigenaardigheden van de netwerkstack van Linux. Het maakt niet uit op welke interface je het adres toevoegt; de kernel zal altijd arp-verzoeken verwerken en arp-antwoorden naar elke interface sturen, dit gedrag wordt als correct beschouwd en is bovendien vrij algemeen gebruikt in een dynamische omgeving zoals Kubernetes.<\/strong> Dit gedrag kan worden geconfigureerd, bijvoorbeeld door strict arp in te schakelen:<\/li>\n<\/ul>\n<p><\/p>\n<p>echo 1 &gt; \/proc\/sys\/net\/ipv4\/conf\/all\/arp_ignore\necho 2 &gt; \/proc\/sys\/net\/ipv4\/conf\/all\/arp_announce<\/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 dit geval worden arp-antwoorden alleen verstuurd als de interface expliciet een specifiek IP-adres bevat. Deze instelling is verplicht als je van plan bent MetalLB te gebruiken en je kube-proxy draait in IPVS-modus.<\/p>\n<p><\/p>\n<p>Desondanks gebruikt MetalLB de kernel niet voor het verwerken van arp-verzoeken, maar doet dit zelf in de user-space, waardoor deze optie geen invloed heeft op de werking van MetalLB.<\/p>\n<p><\/p>\n<p>Laten we terugkomen op onze taak. Als er geen route is voor de uitgedeelde adressen op je knooppunten, voeg deze dan vooraf toe aan alle knooppunten:<\/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\">Case 3: Wanneer source-based routing nodig is<\/h1>\n<p><\/p>\n<p>Source-based routing moet worden ingesteld wanneer je pakketten ontvangt via een aparte gateway, niet de standaard gateway die je hebt ingesteld, en dus moeten ook de antwoordpakketten via dezezelfde gateway worden verstuurd.<\/p>\n<p><\/p>\n<p>Bijvoorbeeld, je hebt hetzelfde subnet <code>192.168.1.0\/24<\/code> toegewezen aan je knooppunten, maar je wilt externe adressen via MetalLB uitgeven. Stel dat je meerdere adressen uit het subnet <code>1.2.3.0\/24<\/code> hebt die zich in VLAN 100 bevinden, en je wilt deze gebruiken voor toegang tot Kubernetes-diensten van buitenaf.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Fijne afstemming van routering voor MetalLB in L2-modus.\" src=\"\/wp-content\/uploads\/2020\/05\/9360f35c4bfae25b12fc5aab2644b775.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Bij een verzoek naar <code>1.2.3.4<\/code> doe je aanvragen vanuit een ander subnet dan <code>1.2.3.0\/24<\/code> en verwacht je een reactie. Het knooppunt dat momenteel de master is voor het uitgegeven MetalLB-adres <code>1.2.3.4<\/code>, ontvangt een pakket van de router <code>1.2.3.1<\/code>, maar de reactie moet per se via dezelfde route, door <code>1.2.3.1<\/code>.<\/p>\n<p><\/p>\n<p>gaan. Aangezien ons knooppunt al een standaard gateway heeft ingesteld <code>192.168.1.1<\/code>, gaat de reactie standaard naar hem toe en niet naar <code>1.2.3.1<\/code>, via welke we het pakket hebben ontvangen.<\/p>\n<p><\/p>\n<p>Hoe gaan we met deze situatie om?<\/p>\n<p><\/p>\n<p>In dit geval moet je al je knooppunten zo voorbereiden dat ze in staat zijn om externe adressen te bedienen zonder extra configuratie. Dit betekent dat je voor het bovenstaande voorbeeld vooraf een VLAN-interface op het knooppunt moet maken:<\/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>En voeg vervolgens de routes toe:<\/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>Let op dat we de routes toevoegen in een aparte routeringstabel <code>100<\/code> deze zal alleen de twee routes bevatten die nodig zijn om het antwoordpakket via de gateway te versturen <code>1.2.3.1<\/code>, die zich achter de interface bevindt <code>eth0.100<\/code>.<\/p>\n<p><\/p>\n<p>Nu moeten we een eenvoudige regel toevoegen:<\/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>die expliciet zegt: als het bronadres van het pakket zich bevindt in <code>1.2.3.0\/24<\/code>, gebruik dan de routeringstabel. <code>100<\/code>. We hebben al een route beschreven die het zal verzenden via <code>1.2.3.1<\/code><\/p>\n<p><\/p>\n<h1 id=\"sluchay-4-kogda-ponadobitsya-policy-based-routing\">Geval 4: Wanneer policy-based routing nodig is<\/h1>\n<p><\/p>\n<p>Netwerk topologie zoals in het vorige voorbeeld, maar stel dat je ook de mogelijkheid wilt hebben om externe adressen van de pool aan te spreken <code>1.2.3.0\/24<\/code> vanuit jouw pods:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Fijne afstemming van routering voor MetalLB in L2-modus.\" src=\"\/wp-content\/uploads\/2020\/05\/46f1f7c2826d87ec1fe8499862ccdd1a.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Het kenmerk is dat wanneer je een adres aanspreekt in <code>1.2.3.0\/24<\/code>, het antwoordpakket dat binnenkomt op de node en het bronadres in het bereik heeft <code>1.2.3.0\/24<\/code> voortvarend zal worden verzonden naar <code>eth0.100<\/code>, maar we willen dat Kubernetes het omleidt naar onze eerste pod, die het oorspronkelijke verzoek heeft gegenereerd.<\/p>\n<p><\/p>\n<p>Deze uitdaging bleek niet eenvoudig te zijn, maar het werd mogelijk dankzij policy-based routing:<\/p>\n<p><\/p>\n<p>Voor een beter begrip van het proces geef ik een blokschema van netfilter:<br \/>\n<img decoding=\"async\" alt=\"Fijne afstemming van routering voor MetalLB in L2-modus.\" src=\"\/wp-content\/uploads\/2020\/05\/6b2f117c2dcddad85190156d566231c8.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Laten we, net als in het vorige voorbeeld, een extra routeringtabel cre\u00ebren:<\/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>Voeg nu een paar regels toe 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>Deze regels zullen de inkomende verbindingen op de interface markeren <code>eth0.100<\/code>, waarbij alle pakketten worden gemarkeerd met het label <code>0x100<\/code>, hetzelfde label zal ook worden toegepast op de antwoorden binnen dezelfde verbinding.<\/p>\n<p><\/p>\n<p>Nu kunnen we een routeringsregel toevoegen:<\/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>Dat betekent dat alle pakketten met het bronadres <code>1.2.3.0\/24<\/code> en het label <code>0x100<\/code> gemarkeerd moeten worden volgens de tabel <code>100<\/code>.<\/p>\n<p><\/p>\n<p>Op deze manier zullen andere pakketten die op een andere interface zijn ontvangen, niet onder deze regel vallen, wat hen in staat stelt om met de standaardmethoden van Kubernetes te worden gerouteerd.<\/p>\n<p><\/p>\n<p>Er is echter nog een probleem, in Linux bestaat er een zogenaamde reverse path filter die het hele proces verstoort door een eenvoudige controle uit te voeren: voor alle binnenkomende pakketten wijzigt hij het bronadres van het pakket met het adres van de afzender en controleert hij of het pakket via dezelfde interface kan worden verzonden als de interface waarlangs het werd ontvangen, zo niet, dan wordt het gefilterd.<\/p>\n<p><\/p>\n<p>Het probleem is dat het in ons geval niet correct zal functioneren, maar we kunnen het uitschakelen:<\/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>Let op, het eerste commando controleert het globale gedrag van rp_filter; als het niet wordt uitgeschakeld, heeft het tweede commando geen effect. Desalniettemin blijven de andere interfaces met ingeschakeld rp_filter.<\/p>\n<p><\/p>\n<p>Om de werking van de filter niet volledig te beperken, kunnen we gebruikmaken van de implementatie van rp_filter voor netfilter. Door rpfilter als een iptables-module te gebruiken, kunnen we vrij flexibele regels instellen, bijvoorbeeld:<\/p>\n<p><\/p>\n<pre><code class=\"bash\">iptables -t raw -A PREROUTING -i eth0.100 -d 1.2.3.0\/24 -j RETURN\niptables -t raw -A PREROUTING -i eth0.100 -m rpfilter --invert -j DROP<\/code><\/pre>\n<p><\/p>\n<p>rp_filter inschakelen op de interface <code>eth0.100<\/code> voor alle adressen behalve <code>1.2.3.0\/24<\/code>.<\/p>\n<p>Bron: <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\/nl\/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=\"nl_NL\" \/>\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\/nl\/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\udd47Fijne afstemming van routering voor MetalLB in L2-modus | ProHoster","description":"Niet zo lang geleden kwam ik een vrij interessante situatie tegen.","canonical_url":"https:\/\/prohoster.info\/nl\/blog\/administrirovanie\/tonkaya-nastrojka-marshrutizaczii-dlya-metallb-v-rezhime-l2","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"nl_NL","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\/nl\/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\/nl\/wp-json\/wp\/v2\/posts\/81593","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/comments?post=81593"}],"version-history":[{"count":1,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/posts\/81593\/revisions"}],"predecessor-version":[{"id":157857,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/posts\/81593\/revisions\/157857"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/media\/81594"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/media?parent=81593"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/categories?post=81593"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/tags?post=81593"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}