{"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\/no\/blog\/administrirovanie\/bystryj-routing-i-nat-v-linux","title":{"rendered":"Rask ruting og NAT i Linux","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Etter hvert som IPv4-adressene tar slutt, har mange telekommunikasjonsoperat\u00f8rer m\u00e5ttet organisere tilgangen til nettet for kundene sine ved hjelp av adresseoversettelse. I denne artikkelen vil jeg forklare hvordan man kan oppn\u00e5 Carrier Grade NAT-ytelse p\u00e5 commodity-servere.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h3>Litt historie<\/h3>\n<p>\nTemaet med utmattelse av IPv4-adresseomr\u00e5det er ikke nytt. P\u00e5 et tidspunkt dukket det opp ventelister (waiting list) i RIPE, deretter oppstod det markedsplasser hvor adresseblokker ble handlet, og avtaler for utleie ble inng\u00e5tt. Gradvis begynte telekommunikasjonsoperat\u00f8rer \u00e5 tilby internettjenester ved hjelp av adresse- og portoversettelse. Noen rakk ikke \u00e5 skaffe nok adresser til \u00e5 tildele en \"hvit\" adresse til hver abonnent, mens andre begynte \u00e5 spare midler ved \u00e5 unng\u00e5 \u00e5 kj\u00f8pe adresser p\u00e5 det sekund\u00e6re markedet. Produsenter av nettverksutstyr st\u00f8ttet denne ideen, ettersom denne funksjonaliteten vanligvis krever ekstra utvidelseskort eller lisenser. For eksempel krever det \u00e5 utf\u00f8re NAPT p\u00e5 Junipers MX-rutere (bortsett fra de nyeste MX104 og MX204) et eget tjenestekort MS-MIC, p\u00e5 Cisco ASR1k kreves CGN-lisens, mens det p\u00e5 Cisco ASR9k kreves et eget modul A9K-ISM-100 og lisens A9K-CGN-LIC for dette. Generelt sett er det ikke billig.<\/p>\n<h3>IPTables<\/h3>\n<p>\n\u00c5 utf\u00f8re NAT krever ikke spesialiserte beregningsressurser; prosessorer av generell utforming, som de som brukes i enhver hjemme-ruter, kan h\u00e5ndtere dette. P\u00e5 niv\u00e5et til telekommunikasjonsoperat\u00f8rer kan denne oppgaven l\u00f8ses ved hjelp av commodity-servere drevet av FreeBSD (ipfw\/pf) eller GNU\/Linux (iptables). Vi vil ikke vurdere FreeBSD, da jeg for lengst har sluttet \u00e5 bruke dette operativsystemet, s\u00e5 vi vil fokusere p\u00e5 GNU\/Linux.<\/p>\n<p>Det er ikke vanskelig \u00e5 aktivere adresseoversettelse. F\u00f8rst m\u00e5 du skrive en regel i iptables til nat-tabellen:<\/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>\nOperativsystemen vil laste inn nf_conntrack-modulen, som vil overv\u00e5ke alle aktive forbindelser og utf\u00f8re n\u00f8dvendige transformasjoner. Det er noen nyanser her. For det f\u00f8rste, siden vi snakker om NAT p\u00e5 niv\u00e5 med en teleoperat\u00f8r, m\u00e5 timeout-ene justeres, fordi med standardverdier vil st\u00f8rrelsen p\u00e5 oversettelsestabellen raskt vokse til katastrofale niv\u00e5er. Under er et eksempel p\u00e5 innstillinger jeg har brukt p\u00e5 mine servere:<\/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>\nFor det andre, siden st\u00f8rrelsen p\u00e5 oversettelsestabellen som standard ikke er beregnet for drift p\u00e5 teleoperat\u00f8rniv\u00e5, m\u00e5 den \u00f8kes:<\/p>\n<pre><code class=\"plaintext\">net.netfilter.nf_conntrack_max = 3145728\n<\/code><\/pre>\n<p>\n Det er ogs\u00e5 n\u00f8dvendig \u00e5 \u00f8ke antallet buckets for hash-tabellen som lagrer alle oversettelser (dette er en innstilling i modulen nf_conntrack): <\/p>\n<pre><code class=\"plaintext\">options nf_conntrack hashsize=1572864\n<\/code><\/pre>\n<p>\nEtter disse enkle manipuleringene f\u00e5r man en fullt fungerende konstruksjon som kan oversette et stort antall klientadresser til en pool av eksterne. Imidlertid etterlater ytelsen til denne l\u00f8sningen mye \u00e5 \u00f8nske. I mine f\u00f8rste fors\u00f8k p\u00e5 \u00e5 bruke GNU\/Linux for NAT (rundt 2013) klarte jeg \u00e5 oppn\u00e5 en ytelse p\u00e5 omtrent 7Gbit\/s ved 0.8Mpps p\u00e5 \u00e9n server (Xeon E5-1650v2). Siden den gang har det blitt gjort mange forskjellige optimaliseringer i nettverksstakken i GNU\/Linux-kjernen, og ytelsen til \u00e9n server med samme maskinvare har \u00f8kt til nesten 18-19 Gbit\/s ved 1.8-1.9 Mpps (dette var grenseverdiene), men behovet for mengden av trafikk som behandles av \u00e9n server har vokst mye raskere. Til slutt ble det utviklet lastbalanseringsordninger p\u00e5 forskjellige servere, men alt dette har \u00f8kt kompleksiteten i konfigurasjonene, vedlikeholdet og opprettholdelsen av kvaliteten p\u00e5 tjenestene som tilbys.<\/p>\n<h3>NFTables<\/h3>\n<p>\nN\u00e5 er den trendy retningen innen programmering av \"pakkeoverf\u00f8ring\" bruken av DPDK og XDP. Det er skrevet mange artikler om dette emnet, gjort mange forskjellige presentasjoner, og kommersielle produkter dukker opp (for eksempel SKAT fra VasExperts). Men med begrensede ressurser blant programmererne hos teleoperat\u00f8rer, er det ganske problematisk \u00e5 utvikle et eller annet \"prosjekt\" basert p\u00e5 disse rammeverkene. \u00c5 drifte en slik l\u00f8sning videre vil v\u00e6re mye vanskeligere, spesielt m\u00e5 man utvikle diagnoseverkt\u00f8y. For eksempel, standard tcpdump vil ikke fungere med DPDK, og pakker som sendes tilbake i kablene ved hjelp av XDP, vil den ikke \"se\". I lys av alt snakket om nye teknologier for \u00e5 flytte pakkeforvaltning til user-space, har <noindex><a rel=\"nofollow\" href=\"https:\/\/netdevconf.info\/0x13\/session.html?workshop-netfilter-mini\">presentasjoner<\/a><\/noindex> og <noindex><a rel=\"nofollow\" href=\"https:\/\/lwn.net\/Articles\/738214\/\">artikkel<\/a><\/noindex> Pablo Neira Ayuso, vedlikeholderen av iptables, om utviklingen av flow offloading i nftables. La oss se n\u00e6rmere p\u00e5 denne mekanismen.<\/p>\n<p>Hovedideen er at hvis ruteren har sluppet gjennom pakker fra \u00e9n \u00f8kt i begge retninger av str\u00f8mmen (TCP-\u00f8kten har g\u00e5tt inn i ESTABLISHED-tilstand), er det ikke n\u00f8dvendig \u00e5 sende de p\u00e5f\u00f8lgende pakkene fra denne \u00f8kten gjennom alle brannmurregler, ettersom alle disse kontrollene uansett vil ende med \u00e5 sende pakken videre til ruting. I tillegg er det ikke n\u00f8dvendig \u00e5 bestemme ruten \u2014 vi vet allerede hvilken grensesnitt og hvilken vert vi skal sende pakkene til innenfor denne \u00f8kten. Det er bare \u00e5 lagre denne informasjonen og bruke den til ruting tidlig i prosesseringen av pakken. N\u00e5r NAT utf\u00f8res, m\u00e5 ogs\u00e5 informasjon om endringer i adresser og porter, som er omformet av modulen nf_conntrack, lagres. Ja, i dette tilfellet slutter ulike policy- og statistikkregler i iptables \u00e5 fungere, men i konteksten av oppgaven til en enkeltst\u00e5ende NAT eller for eksempel en border \u2014 er dette ikke s\u00e5 viktig, fordi tjenestene er distribuert over enhetene.<\/p>\n<h4>Konfigurasjon<\/h4>\n<p>\nFor \u00e5 dra nytte av denne funksjonen m\u00e5 vi:<\/p>\n<ul>\n<li>Bruke et nytt kjerne. Selv om funksjonaliteten kom til kjernene fra versjon 4.16, var den ganske \"r\u00e5\" i lang tid og for\u00e5rsaket regelmessig kernel panic. Alt stabiliserte seg omtrent i desember 2019, da LTS-kjernene 4.19.90 og 5.4.5 ble utgitt.<\/li>\n<li>Skrive om iptables-regler til nftables-format, ved \u00e5 bruke en tilstrekkelig oppdatert versjon av nftables. Det fungerer perfekt i versjon 0.9.0.<\/li>\n<\/ul>\n<p>\nHvis det f\u00f8rste punktet er forst\u00e5elig, er det viktig \u00e5 ikke glemme \u00e5 aktivere modulen i konfigurasjonen under kompilering (CONFIG_NFT_FLOW_OFFLOAD=m), s\u00e5 krever det andre punktet forklaringer. Regler for nftables beskrives p\u00e5 en helt annen m\u00e5te enn i iptables. <noindex><a rel=\"nofollow\" href=\"https:\/\/wiki.nftables.org\/wiki-nftables\/index.php\/Main_Page\">Dokumentasjon<\/a><\/noindex> dekker praktisk talt alle aspekter, det finnes ogs\u00e5 spesielle <noindex><a rel=\"nofollow\" href=\"https:\/\/wiki.nftables.org\/wiki-nftables\/index.php\/Moving_from_iptables_to_nftables\">konverterere<\/a><\/noindex> for regler fra iptables til nftables. Derfor vil jeg bare gi et eksempel p\u00e5 NAT-konfigurasjon og flow offload. En liten legende for eksemplet: &lt;i_if&gt;, &lt;o_if&gt; \u2014 dette er nettverksgrensesnitt som trafikk str\u00f8mmer gjennom, det kan i virkeligheten v\u00e6re mer enn to. &lt;pool_addr_start&gt;,&lt;pool_addr_end&gt; \u2014 start- og sluttadresse for omr\u00e5det med 'hvite' adresser.<\/p>\n<p>NAT-konfigurasjonen er veldig enkel:<\/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>\nFlow offload er litt mer komplisert, men ganske forst\u00e5elig:<\/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>\nDet er derfor hele oppsettet. N\u00e5 vil all TCP\/UDP-trafikk havne i fastnat-tabellen og bli behandlet mye raskere.<\/p>\n<h3>Resultater<\/h3>\n<p>\nFor \u00e5 gj\u00f8re det klart hvor mye 'mye raskere' er, vil jeg legge ved et skjermbilde av belastningen p\u00e5 to faktiske servere, med identisk maskinvare (Xeon E5-1650v2), med identisk konfigurasjon, som bruker samme Linux-kjerne, men som utf\u00f8rer NAT i iptables (NAT4) og i nftables (NAT5).<\/p>\n<p><img decoding=\"async\" alt=\"Rask ruting og NAT i Linux\" src=\"\/wp-content\/uploads\/2020\/05\/94bd3f58bf499ceb9837cd771cc9ef9f.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nI skjermbildet er det ingen graf over pakker per sekund, men i belastningsprofilene til disse serverne er den gjennomsnittlige pakke st\u00f8rrelsen rundt 800 byte, s\u00e5 verdiene n\u00e5r opp til 1.5Mpps. Som vist, har serveren med nftables enorm ytelsesreserve. For \u00f8yeblikket behandler denne serveren opptil 30Gbit\/s ved 3Mpps og er tydelig i stand til \u00e5 n\u00e5 det fysiske nettverksbegrensningen p\u00e5 40Gbps, samtidig som den har ledige CPU-ressurser.<\/p>\n<p>Jeg h\u00e5per at dette materialet vil v\u00e6re nyttig for nettverksingeni\u00f8rer som pr\u00f8ver \u00e5 forbedre ytelsen til serverne sine.<br \/>\n<br \/>Kilde: <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.5 - 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\/no\/blog\/administrirovanie\/bystryj-routing-i-nat-v-linux\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.5\" \/>\n\t\t<meta property=\"og:locale\" content=\"nn_NO\" \/>\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\/no\/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\udd47Rask ruting og NAT i Linux | ProHoster","description":"Etter hvert som IPv4-adressene g\u00e5r tomme, har mange tjenesteleverand\u00f8rer opplevd behovet for \u00e5 organisere sine kunders tilgang til nettet ved hjelp av adresseoversettelse.","canonical_url":"https:\/\/prohoster.info\/no\/blog\/administrirovanie\/bystryj-routing-i-nat-v-linux","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"nn_NO","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\/no\/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\/no\/wp-json\/wp\/v2\/posts\/81265","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/comments?post=81265"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/posts\/81265\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/media\/81266"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/media?parent=81265"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/categories?post=81265"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/tags?post=81265"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}