De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.

Como conectar "qualquer coisa a qualquer coisa" no Linux usando Socat

Colaboração: Rubens Queiroz de Almeida

Data de Publicação: 16 de janeiro de 2026

O socat (SOcket CAT) é frequentemente chamado de "Netcat com esteroides". Enquanto o Netcat (nc) é a "faca de cozinha" simples e eficiente para redes, o socat é um processador de alimentos industrial: ele faz tudo o que o Netcat faz, mas lida com protocolos e fluxos de dados muito mais complexos.

A ideia central do socat é estabelecer um fluxo de dados bidirecional entre dois endereços (que podem ser arquivos, sockets de rede, portas seriais, ou comandos).

Socat vs. Netcat: O Comparativo

Recurso Netcat (nc) Socat
Complexidade Simples e direto. Curva de aprendizado maior.
Protocolos TCP e UDP. TCP, UDP, SSL/TLS, IPv6, Unix Sockets, Tun/Tap, Portas Seriais.
Multiconexão Geralmente encerra após uma conexão. Suporta o modo fork para aceitar múltiplas conexões.
Manipulação Básica. Avançada (permite mudar permissões, usuários e tratar sinais).
Segurança Tráfego em texto puro (na maioria das versões). Suporte nativo a criptografia SSL/TLS.

Vantagens do Socat

  • Versatilidade Absurda: Conecta quase qualquer coisa a qualquer coisa (ex: uma porta serial a um servidor TCP).
  • Criptografia: Você pode criar túneis seguros com certificados SSL sem precisar de ferramentas extras como o stunnel.
  • Tratamento de PTY: Consegue criar terminais virtuais (pseudo-terminals), o que é vital para criar reverse shells interativas e estáveis.
  • Recuperação de Erros: Opções de log e depuração (-d -d) extremamente detalhadas.

Desvantagens do Socat

  • Sintaxe Intimidante: A estrutura dos comandos é longa e cheia de vírgulas, parâmetros e tipos de endereços.
  • Peso: É um binário maior e menos provável de estar instalado por padrão em sistemas minimalistas do que o nc.

Exemplos Práticos de Uso

1. O básico (Simulando Netcat)

Conectar a um servidor web na porta 80 e enviar dados pelo terminal:

# socat - TCP4:www.google.com:80

(O - representa a entrada padrão/STDIO).

2. Redirecionamento de Porta (Port Forwarding)

Receber tráfego na porta 8080 local e mandar para a porta 80 de outro servidor:

TCP4-LISTEN:8080,fork TCP4:192.168.1.50:80

O parâmetro fork permite que o socat continue ouvindo novos clientes sem fechar.

3. Transferência de Arquivos

No receptor (esperando o arquivo):

-u TCP4-LISTEN:9999,reuseaddr OPEN:arquivo_recebido.txt,creat

No emissor (enviando o arquivo):

-u FILE:arquivo_origem.txt TCP4:192.168.1.10:9999

4. Criando um Túnel SSL Seguro

Lado servidor (escutando com certificado):

SSL-LISTEN:4443,reuseaddr,cert=server.pem,verify=0 STDIO

5. Acesso a Porta Serial via Rede

Compartilhar um dispositivo serial (como um Arduino em /dev/ttyUSB0) pela rede:

TCP4-LISTEN:2000,fork /dev/ttyUSB0,raw,echo=0,b115200

O socat é a ferramenta definitiva quando o netcat não é suficiente, especialmente em tarefas de depuração de sistemas embarcados ou criação de túneis complexos.

Para saber mais sobre o comando socat recomendo assistir o vídeo "Comandos Essenciais para Administração de Servidores Linux: socat".



Veja a relação completa dos artigos de Rubens Queiroz de Almeida