{"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\/pt\/blog\/administrirovanie\/bystryj-routing-i-nat-v-linux","title":{"rendered":"Roteamento r\u00e1pido e NAT no Linux","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Com a escassez de endere\u00e7os IPv4, muitos provedores de telecomunica\u00e7\u00f5es se viram na necessidade de organizar o acesso de seus clientes \u00e0 rede por meio de tradu\u00e7\u00e3o de endere\u00e7os. Neste artigo, vou explicar como obter um desempenho de n\u00edvel Carrier Grade NAT em servidores comuns.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h3>Um pouco de hist\u00f3ria<\/h3>\n<p>\nA quest\u00e3o da escassez do espa\u00e7o de endere\u00e7os IPv4 j\u00e1 n\u00e3o \u00e9 nova. Em algum momento, surgiram filas de espera na RIPE, depois surgiram mercados onde blocos de endere\u00e7os eram negociados e contratos de aluguel eram firmados. Gradualmente, os provedores de telecomunica\u00e7\u00f5es come\u00e7aram a oferecer servi\u00e7os de acesso \u00e0 Internet por meio de tradu\u00e7\u00e3o de endere\u00e7os e portas. Alguns n\u00e3o conseguiram obter endere\u00e7os suficientes para atribuir um endere\u00e7o 'p\u00fablico' a cada assinante, enquanto outros come\u00e7aram a economizar, desistindo da compra de endere\u00e7os no mercado secund\u00e1rio. Os fabricantes de equipamentos de rede apoiaram essa ideia, pois essa funcionalidade geralmente requer m\u00f3dulos de expans\u00e3o ou licen\u00e7as adicionais. Por exemplo, a Juniper, em sua linha de roteadores MX (exceto os mais recentes MX104 e MX204), pode executar NAPT em um cart\u00e3o de servi\u00e7o MS-MIC separado, no Cisco ASR1k \u00e9 necess\u00e1ria uma licen\u00e7a CGN, e no Cisco ASR9k \u2014 um m\u00f3dulo A9K-ISM-100 separado com a licen\u00e7a A9K-CGN-LIC correspondente. Em resumo, o prazer custa caro.<\/p>\n<h3>IPTables<\/h3>\n<p>\nA tarefa de realizar NAT n\u00e3o requer recursos computacionais especializados, podendo ser realizada por processadores de uso geral, como os que est\u00e3o instalados, por exemplo, em qualquer roteador dom\u00e9stico. Em escala de provedores de telecomunica\u00e7\u00f5es, essa tarefa pode ser resolvida utilizando servidores comuns rodando FreeBSD (ipfw\/pf) ou GNU\/Linux (iptables). N\u00e3o vamos considerar o FreeBSD, pois h\u00e1 bastante tempo desisti de usar esse SO, por isso vamos nos concentrar no GNU\/Linux.<\/p>\n<p>Ativar a tradu\u00e7\u00e3o de endere\u00e7os n\u00e3o \u00e9 dif\u00edcil. Para come\u00e7ar, \u00e9 necess\u00e1rio adicionar uma regra ao iptables na tabela 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>\nO sistema operacional carregar\u00e1 o m\u00f3dulo nf_conntrack, que monitorar\u00e1 todas as conex\u00f5es ativas e realizar\u00e1 as transforma\u00e7\u00f5es necess\u00e1rias. Existem algumas sutilezas aqui. Primeiro, uma vez que se trata de NAT em larga escala de um provedor de servi\u00e7os, \u00e9 preciso ajustar os timeouts, pois com os valores padr\u00e3o, o tamanho da tabela de tradu\u00e7\u00f5es crescer\u00e1 rapidamente para valores catastr\u00f3ficos. Abaixo est\u00e1 um exemplo das configura\u00e7\u00f5es que utilizei em meus servidores:<\/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>\nE em segundo lugar, uma vez que o tamanho da tabela de tradu\u00e7\u00f5es por padr\u00e3o n\u00e3o \u00e9 projetado para opera\u00e7\u00e3o em um ambiente de operadora, ele precisa ser aumentado:<\/p>\n<pre><code class=\"plaintext\">net.netfilter.nf_conntrack_max = 3145728\n<\/code><\/pre>\n<p>\n Tamb\u00e9m \u00e9 necess\u00e1rio aumentar o n\u00famero de buckets para a tabela de hash que armazena todas as tradu\u00e7\u00f5es (esta \u00e9 uma op\u00e7\u00e3o do m\u00f3dulo nf_conntrack): <\/p>\n<pre><code class=\"plaintext\">options nf_conntrack hashsize=1572864\n<\/code><\/pre>\n<p>\nAp\u00f3s essas simples manobras, obtemos uma estrutura funcionando completamente capaz de traduzir um grande n\u00famero de endere\u00e7os de clientes para um pool externo. No entanto, o desempenho desta solu\u00e7\u00e3o deixa a desejar. Em minhas primeiras tentativas de usar GNU\/Linux para NAT (cerca de 2013), consegui obter um desempenho de cerca de 7 Gbit\/s a 0,8 Mpps em um \u00fanico servidor (Xeon E5-1650v2). Desde ent\u00e3o, muitas otimiza\u00e7\u00f5es foram feitas no stack de rede do kernel GNU\/Linux; o desempenho de um servidor com o mesmo hardware cresceu praticamente para 18-19 Gbit\/s a 1,8-1,9 Mpps (valores m\u00e1ximos), mas a demanda por volume de tr\u00e1fego processado por um \u00fanico servidor cresceu muito mais rapidamente. Como resultado, esquemas de balanceamento de carga para diferentes servidores foram desenvolvidos, mas tudo isso aumentou a complexidade da configura\u00e7\u00e3o, manuten\u00e7\u00e3o e qualidade dos servi\u00e7os prestados.<\/p>\n<h3>NFTables<\/h3>\n<p>\nAtualmente, uma tend\u00eancia popular no \"empilhamento de pacotes\" \u00e9 o uso de DPDK e XDP. Muitos artigos foram escritos sobre o tema, diversas apresenta\u00e7\u00f5es foram feitas e produtos comerciais est\u00e3o surgindo (como SKAT da VasExperts). No entanto, devido \u00e0 escassez de programadores nas operadoras de telecomunica\u00e7\u00f5es, desenvolver uma solu\u00e7\u00e3o pr\u00f3pria baseada nesses frameworks \u00e9 bastante problem\u00e1tico. A utiliza\u00e7\u00e3o subsequente de tal solu\u00e7\u00e3o ser\u00e1 muito mais complexa, pois ser\u00e1 necess\u00e1rio desenvolver ferramentas de diagn\u00f3stico. Por exemplo, o tcpdump padr\u00e3o n\u00e3o funcionar\u00e1 com DPDK, e os pacotes enviados de volta pelos cabos usando XDP n\u00e3o ser\u00e3o \"vistos\" por ele. Entre todas as discuss\u00f5es sobre novas tecnologias de encaminhamento de pacotes para o espa\u00e7o do usu\u00e1rio, ficaram sem aten\u00e7\u00e3o. <noindex><a rel=\"nofollow\" href=\"https:\/\/netdevconf.info\/0x13\/session.html?workshop-netfilter-mini\">apresenta\u00e7\u00f5es<\/a><\/noindex> e <noindex><a rel=\"nofollow\" href=\"https:\/\/lwn.net\/Articles\/738214\/\">artigo<\/a><\/noindex> Pablo Neira Ayuso, mantenedor do iptables, sobre o desenvolvimento do flow offloading no nftables. Vamos examinar esse mecanismo mais detalhadamente.<\/p>\n<p>A ideia principal \u00e9 que, se um roteador passou pacotes de uma sess\u00e3o em ambas as dire\u00e7\u00f5es do fluxo (a sess\u00e3o TCP passou para o estado ESTABLISHED), n\u00e3o h\u00e1 necessidade de passar os pacotes subsequentes dessa sess\u00e3o por todas as regras do firewall, pois todas essas verifica\u00e7\u00f5es acabar\u00e3o resultando na transmiss\u00e3o do pacote para o roteamento. E tamb\u00e9m n\u00e3o \u00e9 necess\u00e1rio escolher a rota \u2014 j\u00e1 sabemos para qual interface e qual host devemos encaminhar os pacotes dentro dessa sess\u00e3o. Apenas \u00e9 necess\u00e1rio salvar essas informa\u00e7\u00f5es e utiliz\u00e1-las para o roteamento na fase inicial de processamento do pacote. Ao realizar NAT, \u00e9 necess\u00e1rio tamb\u00e9m preservar informa\u00e7\u00f5es sobre as mudan\u00e7as de endere\u00e7os e portas, que foram transformadas pelo m\u00f3dulo nf_conntrack. Sim, claro, nesse caso diversas pol\u00edticas e outras regras informativas-estat\u00edsticas no iptables deixam de funcionar, mas para a tarefa de um NAT isolado ou, por exemplo, na borda, isso n\u00e3o \u00e9 t\u00e3o importante, pois os servi\u00e7os est\u00e3o distribu\u00eddos entre os dispositivos.<\/p>\n<h4>Configura\u00e7\u00e3o<\/h4>\n<p>\nPara aproveitar essa funcionalidade, precisamos:<\/p>\n<ul>\n<li>Usar um n\u00facleo recente. Apesar de o recurso ter surgido no n\u00facleo 4.16, ele permaneceu muito \"imaturado\" por um bom tempo e frequentemente causava kernel panic. A estabiliza\u00e7\u00e3o ocorreu por volta de dezembro de 2019, quando os n\u00facleos LTS 4.19.90 e 5.4.5 foram lan\u00e7ados.<\/li>\n<li>Reescrever as regras do iptables no formato do nftables, usando uma vers\u00e3o relativamente recente do nftables. Funciona corretamente na vers\u00e3o 0.9.0.<\/li>\n<\/ul>\n<p>\nSe o primeiro ponto est\u00e1 basicamente claro, o principal \u00e9 n\u00e3o esquecer de incluir o m\u00f3dulo na configura\u00e7\u00e3o durante a compila\u00e7\u00e3o (CONFIG_NFT_FLOW_OFFLOAD=m), o segundo ponto requer algumas explica\u00e7\u00f5es. As regras do nftables s\u00e3o descritas de maneira completamente diferente das do iptables. <noindex><a rel=\"nofollow\" href=\"https:\/\/wiki.nftables.org\/wiki-nftables\/index.php\/Main_Page\">Documenta\u00e7\u00e3o<\/a><\/noindex> cobre praticamente todos os aspectos, tamb\u00e9m existem conversores especiais <noindex><a rel=\"nofollow\" href=\"https:\/\/wiki.nftables.org\/wiki-nftables\/index.php\/Moving_from_iptables_to_nftables\">de regras do iptables para nftables. Portanto, eu vou fornecer apenas um exemplo de configura\u00e7\u00e3o de NAT e flow offload. Uma pequena legenda para o exemplo: <i>,  \u2014 s\u00e3o as interfaces de rede pelas quais o tr\u00e1fego passa, pode haver realmente mais de duas. ,  \u2014 endere\u00e7o inicial e final do intervalo de endere\u00e7os \"brancos\".<\/a><\/noindex> A configura\u00e7\u00e3o do NAT \u00e9 muito simples:<\/p>\n<p>Com flow offload \u00e9 um pouco mais complicado, mas ainda compreens\u00edvel:<\/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>\nAqui est\u00e1 toda a configura\u00e7\u00e3o. Agora todo o tr\u00e1fego TCP\/UDP ir\u00e1 para a tabela fastnat e ser\u00e1 processado muito mais 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>\nPara entender o quanto isso \u00e9 \"muito mais r\u00e1pido\", vou anexar uma captura de tela da carga em dois servidores reais, com a mesma configura\u00e7\u00e3o (Xeon E5-1650v2), configurados da mesma forma, utilizando o mesmo n\u00facleo do Linux, mas realizando NAT no iptables (NAT4) e no nftables (NAT5).<\/p>\n<h3>Resultados<\/h3>\n<p>\nNa captura de tela n\u00e3o h\u00e1 gr\u00e1fico de pacotes por segundo, mas no perfil de carga desses servidores, o tamanho m\u00e9dio do pacote est\u00e1 em torno de 800 bytes, portanto, os valores chegam a 1.5Mpps. Como pode ser visto, a margem de desempenho do servidor com nftables \u00e9 enorme. Atualmente, esse servidor processa at\u00e9 30Gbit\/s com 3Mpps e claramente pode atingir o limite f\u00edsico da rede de 40Gbps, mantendo recursos de CPU livres.<\/p>\n<p><img decoding=\"async\" alt=\"Roteamento r\u00e1pido e NAT no Linux\" src=\"\/wp-content\/uploads\/2020\/05\/94bd3f58bf499ceb9837cd771cc9ef9f.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEspero que este material seja \u00fatil para engenheiros de redes que est\u00e3o tentando melhorar o desempenho de seus servidores.<\/p>\n<p>\u00c0 medida que os endere\u00e7os IPv4 se esgotam, muitos provedores de servi\u00e7os est\u00e3o enfrentando a necessidade de organizar o acesso de seus clientes \u00e0 rede por meio da tradu\u00e7\u00e3o de endere\u00e7os.<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.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\/pt\/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=\"pt_PT\" \/>\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\/pt\/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\udd47 Roteamento r\u00e1pido e NAT no Linux | ProHoster","description":"\ud83e\udd47 Roteamento r\u00e1pido e NAT no Linux | ProHoster","canonical_url":"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/bystryj-routing-i-nat-v-linux","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"pt_PT","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\/pt\/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\/pt\/wp-json\/wp\/v2\/posts\/81265","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/comments?post=81265"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts\/81265\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media\/81266"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media?parent=81265"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/categories?post=81265"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/tags?post=81265"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}