{"id":81265,"date":"2020-05-12T01:42:43","date_gmt":"2020-05-11T23:42:43","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/bystryj-routing-i-nat-v-linux"},"modified":"2020-05-12T01:42:43","modified_gmt":"2020-05-11T23:42:43","slug":"bystryj-routing-i-nat-v-linux","status":"publish","type":"post","link":"https:\/\/prohoster.info\/nl\/blog\/administrirovanie\/bystryj-routing-i-nat-v-linux","title":{"rendered":"Snelle routering en NAT in Linux","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Naarmate IPv4-adressen opraken, zijn veel telecomoperators geconfronteerd met de noodzaak om hun klanten toegang tot het netwerk te bieden via adresvertaling. In dit artikel zal ik uitleggen hoe je Carrier Grade NAT-prestaties kunt behalen op commodity-servers.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h3>Een beetje geschiedenis<\/h3>\n<p>\nHet onderwerp van de uitputting van het IPv4-adresblok is al geruime tijd niet nieuw. Op een gegeven moment verschenen er wachtlijsten bij RIPE, en er ontstonden markten waar blokken adressen werden verhandeld en overeenkomsten voor verhuur werden gesloten. Geleidelijk aan begonnen telecomoperators internettoegang te bieden via adres- en poortvertaling. Sommigen hebben niet genoeg adressen gekregen om elke abonnee een \u2018wit\u2019 adres te geven, terwijl anderen begonnen met besparen en geen adressen op de secundaire markt wilden kopen. Fabrikanten van netwerkapparatuur steunden dit idee, omdat deze functionaliteit vaak extra uitbreidingsmodules of licenties vereist. Bijvoorbeeld, bij Juniper kan NAPT uitgevoerd worden op een aparte servicekaart MS-MIC in de MX-routerlijn (behalve de laatste MX104 en MX204), bij Cisco ASR1k is een CGN-licentie vereist, en bij Cisco ASR9k een aparte module A9K-ISM-100 met de licentie A9K-CGN-LIC. Over het algemeen kost dit geen kleine som.<\/p>\n<h3>IPTables<\/h3>\n<p>\nDe taak van NAT vereist geen gespecialiseerde rekencapaciteit, dit kan worden opgelost met standaard processors die bijvoorbeeld in elke thuisrouter zijn ge\u00efnstalleerd. Op het niveau van telecomoperators kan deze taak worden uitgevoerd met commodity-servers die draaien op FreeBSD (ipfw\/pf) of GNU\/Linux (iptables). We zullen FreeBSD niet beschouwen, omdat ik deze OS al geruime tijd niet meer gebruik, dus concentreren we ons op GNU\/Linux.<\/p>\n<p>Adresvertaling inschakelen is helemaal niet moeilijk. Begin met het toevoegen van een regel in iptables in de nat-tabel:<\/p>\n<pre><code class=\"bash\">iptables -t nat -A POSTROUTING -s 100.64.0.0\/10 -j SNAT --to - --persistent\n<\/code><\/pre>\n<p>\nHet besturingssysteem laadt de nf_conntrack-module, die alle actieve verbindingen zal volgen en de nodige transformaties zal uitvoeren. Er zijn verschillende nuances. Ten eerste, omdat het gaat om NAT op operatorniveau, moeten de time-outs worden aangepast, omdat de standaardwaarden ervoor zorgen dat de grootte van de vertaalgegevens al snel tot catastrofale waarden groeit. Hieronder een voorbeeld van de instellingen die ik op mijn servers heb gebruikt:<\/p>\n<pre><code class=\"bash\">net.ipv4.ip_forward = 1\nnet.ipv4.ip_local_port_range = 8192 65535\n\nnet.netfilter.nf_conntrack_generic_timeout = 300\nnet.netfilter.nf_conntrack_tcp_timeout_syn_sent = 60\nnet.netfilter.nf_conntrack_tcp_timeout_syn_recv = 60\nnet.netfilter.nf_conntrack_tcp_timeout_established = 600\nnet.netfilter.nf_conntrack_tcp_timeout_fin_wait = 60\nnet.netfilter.nf_conntrack_tcp_timeout_close_wait = 45\nnet.netfilter.nf_conntrack_tcp_timeout_last_ack = 30\nnet.netfilter.nf_conntrack_tcp_timeout_time_wait = 120\nnet.netfilter.nf_conntrack_tcp_timeout_close = 10\nnet.netfilter.nf_conntrack_tcp_timeout_max_retrans = 300\nnet.netfilter.nf_conntrack_tcp_timeout_unacknowledged = 300\nnet.netfilter.nf_conntrack_udp_timeout = 30\nnet.netfilter.nf_conntrack_udp_timeout_stream = 60\nnet.netfilter.nf_conntrack_icmpv6_timeout = 30\nnet.netfilter.nf_conntrack_icmp_timeout = 30\nnet.netfilter.nf_conntrack_events_retry_timeout = 15\nnet.netfilter.nf_conntrack_checksum=0\n<\/code><\/pre>\n<p>\nEn ten tweede, omdat de standaardgrootte van de vertaaltafel niet is ontworpen voor gebruik in een telecomomgeving, moet deze worden vergroot:<\/p>\n<pre><code class=\"plaintext\">net.netfilter.nf_conntrack_max = 3145728\n<\/code><\/pre>\n<p>\n Het aantal buckets voor de hash-tabel die alle vertalingen opslaat moet ook worden vergroot (dit is een optie van de nf_conntrack-module): <\/p>\n<pre><code class=\"plaintext\">options nf_conntrack hashsize=1572864\n<\/code><\/pre>\n<p>\nNa deze eenvoudige aanpassingen is er een volledig functionele opstelling ontstaan die een groot aantal cli\u00ebntadressen kan vertalen naar een pool van externe adressen. Echter, de prestaties van deze oplossing zijn niet optimaal. In mijn eerste pogingen om GNU\/Linux voor NAT te gebruiken (ongeveer 2013) kon ik prestaties halen van ongeveer 7Gbit\/s bij 0.8Mpps op \u00e9\u00e9n server (Xeon E5-1650v2). Sindsdien zijn er vele optimalisaties in de netwerkstack van de GNU\/Linux-kernel aangebracht, en de prestaties van \u00e9\u00e9n server met dezelfde hardware zijn praktisch gestegen naar 18-19 Gbit\/s bij 1.8-1.9 Mpps (dit waren de maximale waarden), maar de behoefte aan het volume dat door \u00e9\u00e9n server moest worden verwerkt, groeide veel sneller. Uiteindelijk werden er schema\u2019s ontwikkeld voor load balancing over verschillende servers, maar dit verhoogde de complexiteit van de configuratie, onderhoud en de kwaliteit van de geleverde diensten.<\/p>\n<h3>NFTables<\/h3>\n<p>\nMomenteel is een populaire trend in het programmeren van \"pakketten doorschuiven\" het gebruik van DPDK en XDP. Over dit onderwerp zijn talloze artikelen geschreven, zijn er verschillende presentaties gegeven en verschijnen er commerci\u00eble producten (bijvoorbeeld SKAT van VasExperts). Maar onder de omstandigheden van beperkte middelen bij programmeurs van telecomoperators is het behoorlijk problematisch om zelf een soort \"project\" op basis van deze frameworks te ontwikkelen. Het is namelijk veel moeilijker om een dergelijke oplossing verder te exploiteren, met name omdat er diagnose-instrumenten ontwikkeld moeten worden. Bijvoorbeeld, de standaard tcpdump werkt niet zomaar met DPDK, en de pakketten die via XDP terug de kabels in worden gestuurd, zullen niet \"zichtbaar\" zijn voor deze tool. Tegen de achtergrond van alle gesprekken over nieuwe technologie\u00ebn voor het doorsturen van pakketten in de gebruikersruimte zijn de <noindex><a rel=\"nofollow\" href=\"https:\/\/netdevconf.info\/0x13\/session.html?workshop-netfilter-mini\">presentaties<\/a><\/noindex> en <noindex><a rel=\"nofollow\" href=\"https:\/\/lwn.net\/Articles\/738214\/\">artikel<\/a><\/noindex> Pablo Neira Ayuso, maintainer van iptables, over de ontwikkeling van flow offloading in nftables. Laten we dit mechanisme nader bekijken.<\/p>\n<p>Het basisidee is dat als de router pakketten van \u00e9\u00e9n sessie in beide richtingen van de stroom (TCP-sessie is in de toestand ESTABLISHED gegaan) heeft doorgelaten, er geen noodzaak is om de volgende pakketten van deze sessie door alle firewall-regels te laten gaan, aangezien al deze controles uiteindelijk toch zullen resulteren in de doorgifte van het pakket voor verdere routing. Bovendien is het kiezen van een route niet nodig \u2014 we weten al naar welke interface en aan welk host we de pakketten binnen deze sessie moeten doorsturen. Het blijft alleen om deze informatie op te slaan en te gebruiken voor routing in een vroeg stadium van de pakketverwerking. Bij het uitvoeren van NAT moet bovendien informatie over de wijzigingen in adressen en poorten, die door de nf_conntrack-module zijn omgezet, worden opgeslagen. Ja, natuurlijk, in dit geval werken verschillende policers en andere informatief-statistische regels in iptables niet meer, maar binnen de context van de taak van een afzonderlijke NAT-implementatie of bijvoorbeeld een border is dat niet zo belangrijk, omdat de services over apparaten verspreid zijn.<\/p>\n<h4>Configuratie<\/h4>\n<p>\nOm gebruik te maken van deze functie moeten we:<\/p>\n<ul>\n<li>Een recente kernel gebruiken. Hoewel de functionaliteit al in kernel 4.16 is verschenen, was deze een tijdlang erg \"ruw\" en veroorzaakte regelmatig kernel panics. Het stabiliseerde ongeveer in december 2019, toen de LTS-kernels 4.19.90 en 5.4.5 uitkwamen.<\/li>\n<li>Herformuleer de iptables-regels naar het nftables-formaat met behulp van een redelijk recente versie van nftables. Dit werkt perfect in versie 0.9.0.<\/li>\n<\/ul>\n<p>\nAls het eerste punt in principe duidelijk is, vergeet dan niet om de module in de configuratie op te nemen bij het bouwen (CONFIG_NFT_FLOW_OFFLOAD=m), vereist het tweede punt enige toelichting. De nftables-regels worden heel anders beschreven dan in iptables. <noindex><a rel=\"nofollow\" href=\"https:\/\/wiki.nftables.org\/wiki-nftables\/index.php\/Main_Page\">Documentation<\/a><\/noindex> legt vrijwel alle aspecten bloot, er zijn ook speciale <noindex><a rel=\"nofollow\" href=\"https:\/\/wiki.nftables.org\/wiki-nftables\/index.php\/Moving_from_iptables_to_nftables\">converters<\/a><\/noindex> voor regels van iptables naar nftables. Daarom geef ik alleen een voorbeeld van de NAT-instelling en flow offload. Een kleine legende voor het voorbeeld: &lt;i_if&gt;, &lt;o_if&gt; \u2014 dit zijn de netwerkinterfaces waar het verkeer doorheen gaat, er kunnen in werkelijkheid meer dan twee zijn. &lt;pool_addr_start&gt;, &lt;pool_addr_end&gt; \u2014 het start- en eindadres van het 'witte' adresbereik.<\/p>\n<p>De NAT-configuratie is heel eenvoudig:<\/p>\n<pre><code class=\"bash\">#! \/usr\/sbin\/nft -f\n\ntable nat {\n        chain postrouting {\n                type nat hook postrouting priority 100;\n                oif &lt;o_if&gt; snat to &lt;pool_addr_start&gt;-&lt;pool_addr_end&gt; persistent\n        }\n}\n<\/code><\/pre>\n<p>\nMet flow offload is het iets ingewikkelder, maar nog steeds begrijpelijk:<\/p>\n<pre><code class=\"bash\">#! \/usr\/sbin\/nft -f\n\ntable inet filter {\n        flowtable fastnat {\n                hook ingress priority 0\n                devices = { &lt;i_if&gt;, &lt;o_if&gt; }\n        }\n\n        chain forward {\n                type filter hook forward priority 0; policy accept;\n                ip protocol { tcp , udp } flow offload @fastnat;\n        }\n}\n<\/code><\/pre>\n<p>\nDit is dus de hele configuratie. Nu zal al het TCP\/UDP-verkeer in de fastnat-tabel komen en veel sneller worden verwerkt.<\/p>\n<h3>Resultaten<\/h3>\n<p>\nOm duidelijk te maken hoezeer dit 'veel sneller' is, voeg ik een screenshot toe van de belasting op twee echte servers, met dezelfde specificaties (Xeon E5-1650v2), evenzo geconfigureerd, met hetzelfde Linux-kernel, maar die NAT uitvoeren in iptables (NAT4) en in nftables (NAT5).<\/p>\n<p><img decoding=\"async\" alt=\"Snelle routering en NAT in Linux\" src=\"\/wp-content\/uploads\/2020\/05\/94bd3f58bf499ceb9837cd771cc9ef9f.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nOp de screenshot is er geen grafiek van pakketten per seconde, maar in het belastingprofiel van deze servers ligt de gemiddelde pakketgrootte rond de 800 bytes, waardoor de waarden oplopen tot 1.5Mpps. Zoals te zien is, heeft de server met nftables een enorme prestatiecapaciteit. Op dit moment verwerkt deze server tot 30Gbit\/s bij 3Mpps en is duidelijk in staat om tegen de fysieke netwerkbeperking van 40Gbps aan te lopen, met nog vrije CPU-resources.<\/p>\n<p>Ik hoop dat dit materiaal nuttig zal zijn voor netwerkingenieurs die proberen de prestaties van hun servers te verbeteren.<br \/>\n<br \/>Bron: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/501234\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u043e \u043c\u0435\u0440\u0435 \u0438\u0441\u0447\u0435\u0440\u043f\u0430\u043d\u0438\u044f \u0430\u0434\u0440\u0435\u0441\u043e\u0432 IPv4, \u043c\u043d\u043e\u0433\u0438\u0435 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u044b \u0441\u0432\u044f\u0437\u0438 \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0438\u0441\u044c \u0441 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c\u044e \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u0441\u0432\u043e\u0438\u0445 \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432 \u0432 \u0441\u0435\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0442\u0440\u0430\u043d\u0441\u043b\u044f\u0446\u0438\u0438 \u0430\u0434\u0440\u0435\u0441\u043e\u0432. \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443, \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0443\u0440\u043e\u0432\u043d\u044f Carrier Grade NAT \u043d\u0430 commodity \u0441\u0435\u0440\u0432\u0435\u0440\u0430\u0445. \u041d\u0435\u043c\u043d\u043e\u0433\u043e \u0438\u0441\u0442\u043e\u0440\u0438\u0438 \u0422\u0435\u043c\u0430 \u0438\u0441\u0447\u0435\u0440\u043f\u0430\u043d\u0438\u044f \u0430\u0434\u0440\u0435\u0441\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430 IPv4 \u0443\u0436\u0435 \u043d\u0435 \u043d\u043e\u0432\u0430. \u0412 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043c\u043e\u043c\u0435\u043d\u0442 \u0432 RIPE \u043f\u043e\u044f\u0432\u0438\u043b\u0438\u0441\u044c \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u044f [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":81266,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-81265","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=\"\u041f\u043e \u043c\u0435\u0440\u0435 \u0438\u0441\u0447\u0435\u0440\u043f\u0430\u043d\u0438\u044f \u0430\u0434\u0440\u0435\u0441\u043e\u0432 IPv4, \u043c\u043d\u043e\u0433\u0438\u0435 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u044b \u0441\u0432\u044f\u0437\u0438 \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0438\u0441\u044c \u0441 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c\u044e \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u0441\u0432\u043e\u0438\u0445 \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432 \u0432 \u0441\u0435\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0442\u0440\u0430\u043d\u0441\u043b\u044f\u0446\u0438\u0438 \u0430\u0434\u0440\u0435\u0441\u043e\u0432.\" \/>\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\/bystryj-routing-i-nat-v-linux\" \/>\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\u0411\u044b\u0441\u0442\u0440\u044b\u0439 \u0440\u043e\u0443\u0442\u0438\u043d\u0433 \u0438 NAT \u0432 Linux | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u043e \u043c\u0435\u0440\u0435 \u0438\u0441\u0447\u0435\u0440\u043f\u0430\u043d\u0438\u044f \u0430\u0434\u0440\u0435\u0441\u043e\u0432 IPv4, \u043c\u043d\u043e\u0433\u0438\u0435 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u044b \u0441\u0432\u044f\u0437\u0438 \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0438\u0441\u044c \u0441 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c\u044e \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u0441\u0432\u043e\u0438\u0445 \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432 \u0432 \u0441\u0435\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0442\u0440\u0430\u043d\u0441\u043b\u044f\u0446\u0438\u0438 \u0430\u0434\u0440\u0435\u0441\u043e\u0432.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/nl\/blog\/administrirovanie\/bystryj-routing-i-nat-v-linux\" \/>\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-11T23:42:43+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-05-11T23:42:43+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\udd47Snelle routing en NAT in Linux | ProHoster","description":"Naarmate de IPv4-adressen opraken, zijn veel telecomoperators geconfronteerd met de noodzaak om toegang voor hun klanten tot het netwerk te organiseren door middel van adresvertaling.","canonical_url":"https:\/\/prohoster.info\/nl\/blog\/administrirovanie\/bystryj-routing-i-nat-v-linux","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\u0411\u044b\u0441\u0442\u0440\u044b\u0439 \u0440\u043e\u0443\u0442\u0438\u043d\u0433 \u0438 NAT \u0432 Linux | ProHoster","og:description":"\u041f\u043e \u043c\u0435\u0440\u0435 \u0438\u0441\u0447\u0435\u0440\u043f\u0430\u043d\u0438\u044f \u0430\u0434\u0440\u0435\u0441\u043e\u0432 IPv4, \u043c\u043d\u043e\u0433\u0438\u0435 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u044b \u0441\u0432\u044f\u0437\u0438 \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0438\u0441\u044c \u0441 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c\u044e \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u0441\u0432\u043e\u0438\u0445 \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432 \u0432 \u0441\u0435\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0442\u0440\u0430\u043d\u0441\u043b\u044f\u0446\u0438\u0438 \u0430\u0434\u0440\u0435\u0441\u043e\u0432.","og:url":"https:\/\/prohoster.info\/nl\/blog\/administrirovanie\/bystryj-routing-i-nat-v-linux","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-11T23:42:43+00:00","article:modified_time":"2020-05-11T23:42:43+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"81265","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 16:01:23","updated":"2022-09-28 04:47:17","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\/81265","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=81265"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/posts\/81265\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/media\/81266"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/media?parent=81265"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/categories?post=81265"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/tags?post=81265"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}