{"id":4359,"date":"2026-05-04T21:26:17","date_gmt":"2026-05-04T18:26:17","guid":{"rendered":"https:\/\/demensdeum.com\/blog\/2026\/05\/04\/port-forwarding-chisel\/"},"modified":"2026-05-04T21:48:08","modified_gmt":"2026-05-04T18:48:08","slug":"port-forwarding-chisel","status":"publish","type":"post","link":"https:\/\/demensdeum.com\/blog\/pt\/2026\/05\/04\/port-forwarding-chisel\/","title":{"rendered":"Encaminhamento de porta entre clientes via Chisel: um t\u00fanel simplificado sem L3"},"content":{"rendered":"<p>Quando dois dispositivos est\u00e3o protegidos por NAT ou firewalls r\u00edgidos e n\u00e3o podem \u201cver\u201d um ao outro diretamente, uma VPN parece ser a solu\u00e7\u00e3o padr\u00e3o. Mas um t\u00fanel L3 completo (como WireGuard ou OpenVPN) \u00e9 muitas vezes redundante: requer direitos de root, configura\u00e7\u00e3o de interfaces virtuais e pode entrar em conflito com rotas existentes.<\/p>\n<p>Nesses casos, \u00e9 conveniente usar <b>Chisel<\/b> &#8211; um t\u00fanel TCP\/UDP que roda sobre HTTP e usa WebSockets para transfer\u00eancia de dados. Nesta nota mostrarei como \u201cencaminhar\u201d uma porta de um cliente para outro atrav\u00e9s de um servidor intermedi\u00e1rio.<\/p>\n<h2>Como funciona?<\/h2>\n<p>Imagine a situa\u00e7\u00e3o: voc\u00ea tem o <b>Cliente A<\/b> (por exemplo, seu servidor dom\u00e9stico), o <b>Cliente B<\/b> (seu laptop de trabalho) e um <b>VPS<\/b> com endere\u00e7o IP p\u00fablico. Os clientes A e B podem acessar o VPS, mas n\u00e3o um ao outro.<\/p>\n<p>O esquema de encaminhamento ficar\u00e1 assim:<br \/>\n1. O <b>Cliente A<\/b> conecta-se ao VPS e abre uma porta \u201creversa\u201d no servidor. Agora tudo que chega na porta X do servidor vai para a porta Y do Cliente A.<br \/>\n2. O <b>Cliente B<\/b> conecta-se ao VPS e encaminha a porta Z de sua m\u00e1quina local para a porta X do servidor.<br \/>\n3. Como resultado, o Cliente B acessa <b>localhost:Z<\/b> e termina em <b>Cliente A:Y<\/b>.<\/p>\n<p>Esta abordagem \u00e9 uma das solu\u00e7\u00f5es nos casos em que a comunica\u00e7\u00e3o com um VPS n\u00e3o implementa a camada L3 ou n\u00e3o h\u00e1 capacidade de configurar o roteamento entre clientes. Trabalhamos exclusivamente a n\u00edvel de aplica\u00e7\u00e3o e porto.<\/p>\n<h2>Etapa 1: iniciar o servidor<\/h2>\n<p>No seu VPS, basta executar o Chisel no modo servidor. O sinalizador <code>--reverse<\/code> \u00e9 necess\u00e1rio para permitir que os clientes abram portas no lado do servidor.<\/p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism line-numbers lang-unknown\" data-lang=\"unknown\"><code>chisel server --port 8080 --reverse\n<\/code><\/pre>\n<\/div>\n<h2>Etapa 2: Conectando o Cliente A (Fonte)<\/h2>\n<p>Digamos que o Cliente A queira abrir o acesso ao seu servidor web local na porta 3000. Ele se conecta ao VPS e diz: \u201creserve a porta 2000 no servidor e encaminhe para mim para 3000\u201d.<\/p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism line-numbers lang-unknown\" data-lang=\"unknown\"><code>chisel client vps-ip:8080 R:2000:127.0.0.1:3000\n<\/code><\/pre>\n<\/div>\n<p>Agora a porta 2000 no VPS (na interface de loopback) leva ao Cliente A.<\/p>\n<h2>Etapa 3: Conectando o Cliente B (Consumidor)<\/h2>\n<p>Agora o Cliente B deseja acessar este recurso. Ele se conecta ao mesmo VPS e encaminha sua porta local 8080 para a porta 2000 do servidor.<\/p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism line-numbers lang-unknown\" data-lang=\"unknown\"><code>chisel client vps-ip:8080 8080:127.0.0.1:2000\n<\/code><\/pre>\n<\/div>\n<p>Preparar! Agora, ao abrir <code>http:\/\/localhost:8080<\/code> no Cliente B, voc\u00ea ver\u00e1 o servi\u00e7o em execu\u00e7\u00e3o no Cliente A.<\/p>\n<h2>Seguran\u00e7a e nuances<\/h2>\n<p>Chisel suporta autentica\u00e7\u00e3o atrav\u00e9s do sinalizador <code>--auth<\/code>, que \u00e9 altamente recomendado ao trabalhar atrav\u00e9s de servidores p\u00fablicos. Voc\u00ea tamb\u00e9m pode usar certificados TLS para criptografar o tr\u00e1fego.<\/p>\n<p>A principal vantagem desta abordagem \u00e9 que n\u00e3o h\u00e1 necessidade de dispositivos TUN\/TAP e tabelas de roteamento complexas. Este \u00e9 um t\u00fanel simplificado que faz exatamente uma coisa: vincula portas por meio de uma conex\u00e3o WebSocket. Isso funciona at\u00e9 mesmo por meio de proxies corporativos se voc\u00ea configurar o Chisel para funcionar pela porta 443.<\/p>\n<h2>Sa\u00edda<\/h2>\n<p>Chisel \u00e9 um utilit\u00e1rio para tarefas espec\u00edficas de rede. Quando voc\u00ea precisa encaminhar portas entre n\u00f3s isolados sem configurar uma VPN completa, uma combina\u00e7\u00e3o de t\u00faneis de encaminhamento e reverso atrav\u00e9s de um servidor de retransmiss\u00e3o acaba sendo uma solu\u00e7\u00e3o completamente vi\u00e1vel.<\/p>\n<h2>Links<\/h2>\n<p><a href=\"https:\/\/github.com\/jpillora\/chisel\" rel=\"noopener\" target=\"_blank\">https:\/\/github.com\/jpillora\/chisel<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Quando dois dispositivos est\u00e3o protegidos por NAT ou firewalls r\u00edgidos e n\u00e3o podem \u201cver\u201d um ao outro diretamente, uma VPN parece ser a solu\u00e7\u00e3o padr\u00e3o. Mas um t\u00fanel L3 completo (como WireGuard ou OpenVPN) \u00e9 muitas vezes redundante: requer direitos de root, configura\u00e7\u00e3o de interfaces virtuais e pode entrar em conflito com rotas existentes. Nesses<a class=\"more-link\" href=\"https:\/\/demensdeum.com\/blog\/pt\/2026\/05\/04\/port-forwarding-chisel\/\">Continue reading <span class=\"screen-reader-text\">&#8220;Encaminhamento de porta entre clientes via Chisel: um t\u00fanel simplificado sem L3&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[61],"tags":[],"class_list":["post-4359","post","type-post","status-publish","format-standard","hentry","category-techie","entry"],"translation":{"provider":"WPGlobus","version":"3.0.2","language":"pt","enabled_languages":["en","ru","zh","de","fr","ja","pt","hi"],"languages":{"en":{"title":true,"content":true,"excerpt":false},"ru":{"title":true,"content":true,"excerpt":false},"zh":{"title":true,"content":true,"excerpt":false},"de":{"title":true,"content":true,"excerpt":false},"fr":{"title":true,"content":true,"excerpt":false},"ja":{"title":true,"content":true,"excerpt":false},"pt":{"title":true,"content":true,"excerpt":false},"hi":{"title":true,"content":true,"excerpt":false}}},"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/demensdeum.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/4359","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/demensdeum.com\/blog\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/demensdeum.com\/blog\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/demensdeum.com\/blog\/pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/demensdeum.com\/blog\/pt\/wp-json\/wp\/v2\/comments?post=4359"}],"version-history":[{"count":1,"href":"https:\/\/demensdeum.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/4359\/revisions"}],"predecessor-version":[{"id":4360,"href":"https:\/\/demensdeum.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/4359\/revisions\/4360"}],"wp:attachment":[{"href":"https:\/\/demensdeum.com\/blog\/pt\/wp-json\/wp\/v2\/media?parent=4359"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/demensdeum.com\/blog\/pt\/wp-json\/wp\/v2\/categories?post=4359"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/demensdeum.com\/blog\/pt\/wp-json\/wp\/v2\/tags?post=4359"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}