{"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\/it\/blog\/administrirovanie\/bystryj-routing-i-nat-v-linux","title":{"rendered":"Routing veloce e NAT in Linux","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Con l'esaurirsi degli indirizzi IPv4, molti operatori di telecomunicazioni si sono trovati nella necessit\u00e0 di organizzare l'accesso alla rete dei propri clienti attraverso la traduzione degli indirizzi. In questo articolo spiegher\u00f2 come ottenere prestazioni di livello Carrier Grade NAT su server commodity.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h3>Un po' di storia<\/h3>\n<p>\nIl tema dell'esaurimento dello spazio degli indirizzi IPv4 non \u00e8 nuovo. A un certo punto, in RIPE, sono apparse liste d'attesa, poi sono nate borse in cui si scambiavano blocchi di indirizzi e si stipulavano contratti di affitto. Gradualmente, gli operatori di telecomunicazioni hanno iniziato a fornire servizi di accesso a Internet attraverso la traduzione di indirizzi e porte. Alcuni non sono riusciti a ottenere un numero sufficiente di indirizzi per assegnare un indirizzo 'pubblico' a ciascun utente, mentre altri hanno iniziato a risparmiare denaro rifiutandosi di acquistare indirizzi sul mercato secondario. I produttori di apparecchiature di rete hanno sostenuto questa idea, poich\u00e9 questa funzionalit\u00e0 richiede solitamente moduli di espansione o licenze aggiuntive. Ad esempio, per Juniper nella serie di router MX (eccetto i pi\u00f9 recenti MX104 e MX204), eseguire NAPT \u00e8 possibile su una scheda di servizio separata MS-MIC, su Cisco ASR1k \u00e8 necessaria la licenza CGN, mentre su Cisco ASR9k \u00e8 necessario un modulo separato A9K-ISM-100 e la licenza A9K-CGN-LIC. In generale, il divertimento ha un costo considerevole.<\/p>\n<h3>IPTables<\/h3>\n<p>\nIl compito di eseguire NAT non richiede risorse computazionali specializzate; pu\u00f2 essere gestito da processori generici, come quelli installati in qualsiasi router domestico. A livello di un operatore di telecomunicazioni, questo compito pu\u00f2 essere affrontato utilizzando server commodity con FreeBSD (ipfw\/pf) o GNU\/Linux (iptables). Non considereremo FreeBSD, dato che ho smesso di usare questo sistema operativo da un bel po', quindi ci concentreremo su GNU\/Linux.<\/p>\n<p>Abilitare la traduzione degli indirizzi non \u00e8 affatto complicato. Per iniziare, \u00e8 necessario scrivere una regola in iptables nella tabella nat:<\/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>\nIl sistema operativo caricher\u00e0 il modulo nf_conntrack, che monitorer\u00e0 tutte le connessioni attive ed eseguir\u00e0 le necessarie trasformazioni. Ci sono alcune particolarit\u00e0. In primo luogo, poich\u00e9 si tratta di NAT su larga scala per un operatore di telecomunicazioni, \u00e8 necessario regolare i timeout, perch\u00e9 con i valori predefiniti la dimensione della tabella delle traduzioni crescer\u00e0 rapidamente a valori catastrofici. Di seguito un esempio delle impostazioni che ho utilizzato sui miei server:<\/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>\nIn secondo luogo, poich\u00e9 per impostazione predefinita la dimensione della tabella di traduzione non \u00e8 progettata per l'uso da parte di un operatore di comunicazione, deve essere aumentata:<\/p>\n<pre><code class=\"plaintext\">net.netfilter.nf_conntrack_max = 3145728\n<\/code><\/pre>\n<p>\n \u00c8 anche necessario aumentare il numero di buckets per la tabella hash che memorizza tutte le traduzioni (questa \u00e8 un'opzione del modulo nf_conntrack): <\/p>\n<pre><code class=\"plaintext\">options nf_conntrack hashsize=1572864\n<\/code><\/pre>\n<p>\nDopo queste semplici manipolazioni, si ottiene una configurazione perfettamente funzionante in grado di tradurre un gran numero di indirizzi client in un pool di indirizzi esterni. Tuttavia, le prestazioni di questa soluzione lasciano a desiderare. Nei miei primi tentativi di utilizzare GNU\/Linux per NAT (circa nel 2013), sono riuscito a raggiungere prestazioni di circa 7Gbit\/s con 0.8Mpps su un server (Xeon E5-1650v2). Da allora, nel stack di rete del kernel GNU\/Linux sono state implementate molte diverse ottimizzazioni, e le prestazioni di un singolo server con la stessa configurazione sono praticamente aumentate fino a 18-19 Gbit\/s con 1.8-1.9 Mpps (questi erano i valori massimi), ma la domanda sul volume del traffico trattato da un singolo server \u00e8 cresciuta molto pi\u00f9 rapidamente. Di conseguenza, sono stati sviluppati schemi di bilanciamento del carico su pi\u00f9 server, ma tutto ci\u00f2 ha aumentato la complessit\u00e0 della configurazione, della manutenzione e del mantenimento della qualit\u00e0 dei servizi erogati.<\/p>\n<h3>NFTables<\/h3>\n<p>\nAttualmente, la tendenza nel 'riassegnare pacchetti' nei programmi \u00e8 l'uso di DPDK e XDP. Sono stati scritti numerosi articoli su questo argomento, ci sono state molte presentazioni diverse e sono nati prodotti commerciali (ad esempio, SKAT di VasExperts). Tuttavia, nel contesto delle risorse limitate dei programmatori nei fornitori di servizi di telecomunicazione, sviluppare autonomamente un 'oggetto' basato su questi framework \u00e8 piuttosto problematico. Sfruttare tale soluzione in seguito sar\u00e0 molto pi\u00f9 difficile, in particolare, sar\u00e0 necessario sviluppare strumenti di diagnostica. Ad esempio, il classico tcpdump con DPDK non funzioner\u00e0 semplicemente, e nemmeno i pacchetti inviati di nuovo nei cavi tramite XDP saranno 'visibili'. Tra tutte le chiacchiere sulle nuove tecnologie di invio del forwarding dei pacchetti nello user-space, sono passati inosservati <noindex><a rel=\"nofollow\" href=\"https:\/\/netdevconf.info\/0x13\/session.html?workshop-netfilter-mini\">relazioni<\/a><\/noindex> e <noindex><a rel=\"nofollow\" href=\"https:\/\/lwn.net\/Articles\/738214\/\">sul CommunityHelpWiki (sullo stesso dominio<\/a><\/noindex> Pablo Neira Ayuso, mantenitore di iptables, sulla progettazione del flow offloading in nftables. Esaminiamo questo meccanismo pi\u00f9 nel dettaglio.<\/p>\n<p>L'idea principale \u00e8 che se il router ha fatto passare pacchetti di una sessione in entrambe le direzioni del flusso (la sessione TCP \u00e8 passata allo stato ESTABLISHED), non \u00e8 necessario far passare i pacchetti successivi di quella sessione attraverso tutte le regole del firewall, poich\u00e9 tutti questi controlli si concluderanno comunque con la trasmissione del pacchetto nel routing. Inoltre, non c'\u00e8 bisogno di eseguire anche la scelta del percorso \u2014 sappiamo gi\u00e0 in quale interfaccia e a quale host inviare i pacchetti all'interno di questa sessione. Rimane solo da salvare queste informazioni e utilizzarle per il routing nelle fasi iniziali del trattamento del pacchetto. Durante l'esecuzione del NAT, \u00e8 necessario conservare ulteriormente le informazioni sulle modifiche degli indirizzi e delle porte, trasformate dal modulo nf_conntrack. Certo, in questo caso smettono di funzionare vari polizieri e altre regole statistiche informative in iptables, ma nel contesto della funzione di un NAT singolo o, ad esempio, di un bordo, non \u00e8 cos\u00ec rilevante, perch\u00e9 i servizi sono distribuiti su pi\u00f9 dispositivi.<\/p>\n<h4>Configurazione<\/h4>\n<p>\nPer utilizzare questa funzione dobbiamo:<\/p>\n<ul>\n<li>Utilizzare un kernel recente. Sebbene la funzionalit\u00e0 stessa sia apparsa gi\u00e0 nel kernel 4.16, \u00e8 rimasta per molto tempo piuttosto 'grezza' e ha regolarmente causato panic del kernel. Tutto si \u00e8 stabilizzato circa a dicembre 2019, quando sono stati rilasciati i kernel LTS 4.19.90 e 5.4.5.<\/li>\n<li>Riscrivere le regole di iptables nel formato nftables, utilizzando una versione abbastanza recente di nftables. Funziona perfettamente nella versione 0.9.0<\/li>\n<\/ul>\n<p>\nSe il primo punto \u00e8 in linea di massima chiaro, l'importante \u00e8 non dimenticare di includere il modulo nella configurazione durante la compilazione (CONFIG_NFT_FLOW_OFFLOAD=m), il secondo punto richiede delle spiegazioni. Le regole di nftables sono descritte in modo completamente diverso rispetto a iptables. <noindex><a rel=\"nofollow\" href=\"https:\/\/wiki.nftables.org\/wiki-nftables\/index.php\/Main_Page\">Documentazione<\/a><\/noindex> copre praticamente tutti gli aspetti, ci sono anche convertitori <noindex><a rel=\"nofollow\" href=\"https:\/\/wiki.nftables.org\/wiki-nftables\/index.php\/Moving_from_iptables_to_nftables\">di regole da iptables a nftables. Pertanto, fornir\u00f2 solo un esempio di configurazione NAT e flow offload. Una piccola leggenda per l'esempio: <i>,  \u2014 sono le interfacce di rete attraverso cui passa il traffico, in realt\u00e0 possono essercene pi\u00f9 di due. , \u2014 l'indirizzo iniziale e finale dell'intervallo di indirizzi \"pubblici\".<\/a><\/noindex> La configurazione NAT \u00e8 molto semplice:<\/p>\n<p>Con flow offload \u00e8 un po' pi\u00f9 complicato, ma del tutto comprensibile:<\/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>\nEcco, insomma, tutta la configurazione. Ora tutto il traffico TCP\/UDP verr\u00e0 instradato nella tabella fastnat e elaborato molto pi\u00f9 rapidamente.<\/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>\nPer comprendere quanto sia \"molto pi\u00f9 veloce\", allegher\u00f2 uno screenshot del carico su due server reali, con la stessa configurazione (Xeon E5-1650v2), impostati in modo identico, utilizzando lo stesso kernel Linux, ma che eseguono NAT in iptables (NAT4) e in nftables (NAT5).<\/p>\n<h3>Risultati<\/h3>\n<p>\nNello screenshot non c'\u00e8 il grafico dei pacchetti al secondo, ma nel profilo di carico di questi server la dimensione media del pacchetto \u00e8 di circa 800 byte, quindi i valori arrivano fino a 1.5Mpps. Come si pu\u00f2 vedere, la capacit\u00e0 di prestazione del server con nftables \u00e8 enorme. In questo momento, questo server gestisce fino a 30Gbit\/s a 3Mpps e ha chiaramente il potenziale per raggiungere il limite fisico della rete di 40Gbps, avendo al contempo risorse CPU disponibili.<\/p>\n<p><img decoding=\"async\" alt=\"Routing veloce e NAT in Linux\" src=\"\/wp-content\/uploads\/2020\/05\/94bd3f58bf499ceb9837cd771cc9ef9f.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSpero che questo materiale sia utile agli ingegneri di rete che cercano di migliorare le prestazioni dei loro server.<\/p>\n<p>Con l'esaurimento degli indirizzi IPv4, molti operatori di telecomunicazioni si sono trovati a dover organizzare l'accesso dei propri clienti alla rete tramite la traduzione degli indirizzi.<br \/>\n<br \/>Fonte: <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.1.1 - 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\/it\/blog\/administrirovanie\/bystryj-routing-i-nat-v-linux\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"it_IT\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\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\/it\/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\udd47Routing rapido e NAT in Linux | ProHoster","description":"\ud83e\udd47Routing rapido e NAT in Linux | ProHoster","canonical_url":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/bystryj-routing-i-nat-v-linux","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"it_IT","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\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\/it\/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\/it\/wp-json\/wp\/v2\/posts\/81265","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/comments?post=81265"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/81265\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media\/81266"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media?parent=81265"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/categories?post=81265"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/tags?post=81265"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}