{"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\/sv\/blog\/administrirovanie\/bystryj-routing-i-nat-v-linux","title":{"rendered":"Snabb routing och NAT i Linux","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>I takt med att IPv4-adresserna tar slut har m\u00e5nga teleoperat\u00f6rer st\u00f6tt p\u00e5 behovet av att organisera sina kunders \u00e5tkomst till n\u00e4tet genom adress\u00f6vers\u00e4ttning. I den h\u00e4r artikeln kommer jag att g\u00e5 igenom hur man kan uppn\u00e5 Carrier Grade NAT-prestanda p\u00e5 commodity-servrar.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h3>Lite historia<\/h3>\n<p>\n\u00c4mnet kring utt\u00f6mning av IPv4-adressutrymmet \u00e4r inte nytt. Vid n\u00e5gon tidpunkt uppstod det k\u00f6er i RIPE, och sedan d\u00f6k det upp b\u00f6rser d\u00e4r man handlade med adressblock och ingick avtal om deras uthyrning. Gradvis b\u00f6rjade teleoperat\u00f6rer erbjuda internet\u00e5tkomst genom adress- och port\u00f6vers\u00e4ttning. Vissa hann inte f\u00e5 tillr\u00e4ckligt med adresser f\u00f6r att kunna ge varje abonnent en \"vit\" adress, medan andra b\u00f6rjade spara pengar genom att avst\u00e5 fr\u00e5n att k\u00f6pa adresser p\u00e5 sekund\u00e4rmarknaden. Tillverkare av n\u00e4tverksutrustning st\u00f6dde denna id\u00e9, eftersom denna funktionalitet vanligtvis kr\u00e4ver ytterligare expansionsmoduler eller licenser. Till exempel, hos Juniper i MX-serien av routrar (f\u00f6rutom de senaste MX104 och MX204) kan NAPT utf\u00f6ras p\u00e5 ett separat servicekort MS-MIC, p\u00e5 Cisco ASR1k kr\u00e4vs en licens CGN, och p\u00e5 Cisco ASR9k en separat modul A9K-ISM-100 samt licens A9K-CGN-LIC till denna. Sammanfattningsvis kostar det en hel del.<\/p>\n<h3>IPTables<\/h3>\n<p>\nAtt utf\u00f6ra NAT kr\u00e4ver inga specialiserade ber\u00e4kningsresurser; det kan hanteras av allm\u00e4nna processorer som finns i exempelvis vilken hemrouter som helst. P\u00e5 teleoperat\u00f6rsniv\u00e5 kan denna uppgift l\u00f6sas med commodity-servrar som k\u00f6r FreeBSD (ipfw\/pf) eller GNU\/Linux (iptables). Vi kommer inte att behandla FreeBSD h\u00e4r, eftersom jag f\u00f6r l\u00e4nge sedan slutade anv\u00e4nda detta operativsystem, s\u00e5 vi fokuserar p\u00e5 GNU\/Linux.<\/p>\n<p>Att aktivera adress\u00f6vers\u00e4ttning \u00e4r inte sv\u00e5rt. F\u00f6rst m\u00e5ste du skriva in en regel i iptables i 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 kommer att ladda modulen nf_conntrack, som kommer att \u00f6vervaka alla aktiva anslutningar och utf\u00f6ra n\u00f6dv\u00e4ndiga transformationer. Det finns n\u00e5gra nyanser h\u00e4r. F\u00f6r det f\u00f6rsta, eftersom vi talar om NAT i stor skala av en teleoperat\u00f6r, \u00e4r det n\u00f6dv\u00e4ndigt att justera timeout-v\u00e4rdena, eftersom standardv\u00e4rdena snabbt g\u00f6r att storleken p\u00e5 \u00f6vers\u00e4ttningstabellen v\u00e4xer till katastrofala niv\u00e5er. Nedan \u00e4r ett exempel p\u00e5 inst\u00e4llningarna som jag anv\u00e4nde p\u00e5 mina servrar:<\/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>\nOch f\u00f6r det andra, eftersom standardstorleken p\u00e5 \u00f6vers\u00e4ttningstabellen inte \u00e4r avsedd f\u00f6r anv\u00e4ndning p\u00e5 operat\u00f6rsniv\u00e5, beh\u00f6ver den \u00f6kas:<\/p>\n<pre><code class=\"plaintext\">net.netfilter.nf_conntrack_max = 3145728\n<\/code><\/pre>\n<p>\n Det \u00e4r ocks\u00e5 n\u00f6dv\u00e4ndigt att \u00f6ka antalet buckets f\u00f6r hash-tabellen som lagrar alla \u00f6vers\u00e4ttningar (detta \u00e4r en alternativmodul f\u00f6r nf_conntrack): <\/p>\n<pre><code class=\"plaintext\">options nf_conntrack hashsize=1572864\n<\/code><\/pre>\n<p>\nEfter dessa enkla manipuleringar f\u00e5r man en helt fungerande konstruktion som kan \u00f6vers\u00e4tta ett stort antal klientadresser till en pool av externa. Men prestandan hos den h\u00e4r l\u00f6sningen l\u00e4mnar mycket att \u00f6nska. Under mina f\u00f6rsta f\u00f6rs\u00f6k med att anv\u00e4nda GNU\/Linux f\u00f6r NAT (ungef\u00e4r 2013) fick jag en prestanda p\u00e5 cirka 7 Gbit\/s vid 0,8 Mpps p\u00e5 en server (Xeon E5-1650v2). Sedan dess har m\u00e5nga olika optimeringar gjorts i n\u00e4tverksstacken av k\u00e4rnan GNU\/Linux, och prestandan p\u00e5 en server med samma h\u00e5rdvara har vuxit n\u00e4stan till 18-19 Gbit\/s vid 1,8-1,9 Mpps (detta var gr\u00e4nsv\u00e4rden), men behovet av trafikvolym som hanteras av en server har v\u00e4xt mycket snabbare. S\u00e5 sm\u00e5ningom utvecklades scheman f\u00f6r lastbalansering p\u00e5 olika servrar, men allt detta \u00f6kade komplexiteten i konfigurationen, underh\u00e5llet och kvaliteten p\u00e5 de tillhandah\u00e5llna tj\u00e4nsterna.<\/p>\n<h3>NFTables<\/h3>\n<p>\nJust nu \u00e4r en modeinriktning inom programvaru \"paket\u00f6verf\u00f6ring\" anv\u00e4ndningen av DPDK och XDP. Det har skrivits m\u00e5nga artiklar om detta \u00e4mne, h\u00e5llits olika presentationer, och kommersiella produkter har dykt upp (till exempel SKAT fr\u00e5n VasExperts). Men under f\u00f6rh\u00e5llandena med begr\u00e4nsade resurser hos programmerarna p\u00e5 telekomoperat\u00f6rerna \u00e4r det ganska problematiskt att sj\u00e4lva snickra ihop n\u00e5got \"projekt\" baserat p\u00e5 dessa ramverk. Att driva en s\u00e5dan l\u00f6sning vidare kommer att bli mycket mer komplicerat, s\u00e4rskilt eftersom det m\u00e5ste utvecklas diagnostikverktyg. Till exempel fungerar inte den vanliga tcpdump med DPDK s\u00e5 bra, och paket som skickas tillbaka till kablarna med XDP kommer den inte \"se\". Bland alla diskussioner om nya teknologier f\u00f6r pakethantering i anv\u00e4ndarutrymme har man missat <noindex><a rel=\"nofollow\" href=\"https:\/\/netdevconf.info\/0x13\/session.html?workshop-netfilter-mini\">rapporter<\/a><\/noindex> och <noindex><a rel=\"nofollow\" href=\"https:\/\/lwn.net\/Articles\/738214\/\">artiklar<\/a><\/noindex> Pablo Neira Ayuso, underh\u00e5llare av iptables, om utvecklingen av flow offloading i nftables. L\u00e5t oss granska denna mekanism n\u00e4rmare.<\/p>\n<p>Huvudid\u00e9n \u00e4r att om routern har sl\u00e4ppt igenom paket fr\u00e5n en session i b\u00e5da riktningarna (TCP-sessionen har g\u00e5tt \u00f6ver i tillst\u00e5ndet ESTABLISHED), s\u00e5 finns det ingen anledning att l\u00e5ta de efterf\u00f6ljande paketen fr\u00e5n denna session passera genom alla brandv\u00e4ggsregler, eftersom alla dessa kontroller \u00e4nd\u00e5 kommer att sluta med att paketet skickas vidare till routing. Och valet av rutt beh\u00f6ver egentligen inte g\u00f6ras \u2013 vi vet redan vilket gr\u00e4nssnitt och vilken v\u00e4rd paketen inom denna session ska skickas till. Det \u00e5terst\u00e5r bara att spara denna information och anv\u00e4nda den f\u00f6r routing i ett tidigt skede av paketbehandlingen. N\u00e4r NAT genomf\u00f6rs m\u00e5ste dessutom information om adress- och portf\u00f6r\u00e4ndringar som omvandlats av nf_conntrack-modulen sparas. Ja, i detta fall slutar olika policys och andra informationsstatistiska regler i iptables att fungera, men inom ramen f\u00f6r uppgiften f\u00f6r en separat st\u00e5ende NAT eller till exempel en border \u2013 \u00e4r detta inte s\u00e5 viktigt, eftersom tj\u00e4nsterna \u00e4r distribuerade \u00f6ver enheter.<\/p>\n<h4>Konfiguration<\/h4>\n<p>\nF\u00f6r att anv\u00e4nda denna funktion beh\u00f6ver vi:<\/p>\n<ul>\n<li>Anv\u00e4nda en ny k\u00e4rna. Trots att funktionen f\u00f6rst d\u00f6k upp i k\u00e4rnan 4.16, var den l\u00e4nge ganska \"omogen\" och orsakade regelbundet kernel panic. Allt stabiliserades ungef\u00e4r i december 2019, n\u00e4r LTS-k\u00e4rnorna 4.19.90 och 5.4.5 sl\u00e4pptes.<\/li>\n<li>Omarbetta iptables-regler till nftables-format, med en tillr\u00e4ckligt ny version av nftables. Fungerar exakt i version 0.9.0<\/li>\n<\/ul>\n<p>\nOm det f\u00f6rsta punkten \u00e4r relativt f\u00f6rst\u00e5eligt, kom ih\u00e5g att aktivera modulen i konfigurationen vid kompilering (CONFIG_NFT_FLOW_OFFLOAD=m), s\u00e5 kr\u00e4ver den andra punkten f\u00f6rklaringar. nftables-regler beskrivs p\u00e5 ett helt annat s\u00e4tt \u00e4n i iptables. <noindex><a rel=\"nofollow\" href=\"https:\/\/wiki.nftables.org\/wiki-nftables\/index.php\/Main_Page\">Dokumentation<\/a><\/noindex> t\u00e4cker praktiskt taget alla aspekter, och det finns ocks\u00e5 speciella <noindex><a rel=\"nofollow\" href=\"https:\/\/wiki.nftables.org\/wiki-nftables\/index.php\/Moving_from_iptables_to_nftables\">konverterare<\/a><\/noindex> av regler fr\u00e5n iptables till nftables. D\u00e4rf\u00f6r kommer jag endast att ge ett exempel p\u00e5 konfiguration av NAT och flow offload. En kort legend f\u00f6r exemplet: &lt;i_if&gt;, &lt;o_if&gt; \u2014 dessa \u00e4r n\u00e4tverksgr\u00e4nssnitt genom vilka trafiken passerar, och det kan faktiskt finnas fler \u00e4n tv\u00e5. &lt;pool_addr_start&gt;, &lt;pool_addr_end&gt; \u2014 den f\u00f6rsta och sista adressen i intervallet av \"vita\" adresser.<\/p>\n<p>NAT-konfigurationen \u00e4r mycket 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 \u00e4r lite mer komplicerat, men helt f\u00f6rst\u00e5eligt:<\/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>\nDetta \u00e4r faktiskt hela konfigurationen. Nu kommer all TCP\/UDP-trafik att g\u00e5 till tabellen fastnat och behandlas mycket snabbare.<\/p>\n<h3>Resultat<\/h3>\n<p>\nF\u00f6r att f\u00f6rst\u00e5 hur mycket \"mycket snabbare\" det \u00e4r, kommer jag att bifoga en sk\u00e4rmdump av belastningen p\u00e5 tv\u00e5 verkliga servrar, med samma h\u00e5rdvara (Xeon E5-1650v2), lika konfigurerade, som anv\u00e4nder samma Linux-k\u00e4rna, men utf\u00f6r NAT i iptables (NAT4) respektive i nftables (NAT5).<\/p>\n<p><img decoding=\"async\" alt=\"Snabb routing och NAT i Linux\" src=\"\/wp-content\/uploads\/2020\/05\/94bd3f58bf499ceb9837cd771cc9ef9f.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nI sk\u00e4rmdumpen finns ingen graf \u00f6ver paket per sekund, men i belastningsprofilen f\u00f6r dessa servrar \u00e4r det genomsnittliga paketstorleken cirka 800 byte, s\u00e5 v\u00e4rdena n\u00e5r upp till 1.5Mpps. Som synligt, finns det en stor prestandareserv f\u00f6r servern med nftables. F\u00f6r n\u00e4rvarande hanterar denna server upp till 30Gbit\/s vid 3Mpps och kan tydligt n\u00e5 det fysiska n\u00e4tverksbegr\u00e4nsningen p\u00e5 40Gbps, samtidigt som CPU-resurserna fortfarande \u00e4r lediga.<\/p>\n<p>Jag hoppas att detta material kommer att vara anv\u00e4ndbart f\u00f6r n\u00e4tverksingenj\u00f6rer som f\u00f6rs\u00f6ker f\u00f6rb\u00e4ttra prestandan f\u00f6r sina servrar.<br \/>\n<br \/>K\u00e4lla: <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.4 - 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\/sv\/blog\/administrirovanie\/bystryj-routing-i-nat-v-linux\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.4\" \/>\n\t\t<meta property=\"og:locale\" content=\"sv_SE\" \/>\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\/sv\/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\udd47Snabb routing och NAT i Linux | ProHoster","description":"N\u00e4r IPv4-adresserna tar slut, st\u00e5r m\u00e5nga n\u00e4tverksoperat\u00f6rer inf\u00f6r behovet av att ordna tillg\u00e5ng f\u00f6r sina kunder till n\u00e4tverket genom adress\u00f6vers\u00e4ttning.","canonical_url":"https:\/\/prohoster.info\/sv\/blog\/administrirovanie\/bystryj-routing-i-nat-v-linux","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sv_SE","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\/sv\/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\/sv\/wp-json\/wp\/v2\/posts\/81265","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/comments?post=81265"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts\/81265\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/media\/81266"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/media?parent=81265"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/categories?post=81265"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/tags?post=81265"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}