// // Chicletes para o Cérebro: Proxy
Mostrando postagens com marcador Proxy. Mostrar todas as postagens
Mostrando postagens com marcador Proxy. Mostrar todas as postagens

sábado, 17 de maio de 2025

Como Corrigir o Erro "Undefined code: 1006" no Shell do Proxmox via Proxy Reverso do Synology

Pessoal,


Se você, assim com eu, usa o Proxmox VE para gerenciar máquinas virtuais e configurou um acesso externo por meio de um endereço personalizado, como meuproxmox.seusynology.synology.me, utilizando o proxy reverso do Synology DSM, pode ter se deparado com o temido erro "Undefined code: 1006" ao tentar abrir o shell ou o console do Proxmox. Esse problema impede o acesso interativo ao terminal diretamente pela interface web, o que pode ser frustrante, especialmente se você depende do shell para gerenciar o sistema remotamente. Neste tutorial, vou explicar o que causa esse erro, por que ele acontece e como resolvê-lo de forma prática e definitiva.

O que é um Proxy Reverso?

Um proxy reverso é um servidor que atua como intermediário entre o cliente (seu navegador, por exemplo) e o servidor de destino (no caso, o Proxmox). Ele recebe requisições externas e as redireciona para o servidor interno, geralmente em uma rede local. No Synology DSM, o proxy reverso é configurado no Application Portal e permite que você acesse serviços internos, como o Proxmox, usando um domínio amigável (ex.: meuproxmox.seusynology.synology.me) em vez de um IP e porta (ex.: 192.168.0.15:8006). Além de facilitar o acesso, o proxy reverso pode adicionar segurança com SSL/TLS, balanceamento de carga e filtragem de requisições.

O Papel dos WebSockets

Os WebSockets são um protocolo de comunicação bidirecional que permite uma conexão persistente entre o cliente e o servidor. Diferente do HTTP/HTTPS, que é baseado em requisições e respostas únicas, os WebSockets mantêm um canal aberto, ideal para aplicações interativas, como o shell e o console do Proxmox. No Proxmox, o shell utiliza WebSockets (via protocolo wss://, que é a versão segura) para transmitir comandos e respostas em tempo real. Para que isso funcione, o proxy reverso precisa suportar e encaminhar corretamente essas conexões WebSocket, algo que o Synology DSM não faz por padrão.

Por que o Erro "Undefined code: 1006" Acontece?

O erro "Undefined code: 1006" é um código de fechamento de conexão WebSocket, indicando que a conexão foi interrompida inesperadamente. No contexto do Proxmox, isso ocorre porque o proxy reverso do Synology não está configurado para lidar com as atualizações de protocolo (Upgrade) necessárias para WebSockets. Quando você tenta abrir o shell, o navegador solicita uma conexão WebSocket, mas o proxy reverso bloqueia ou não encaminha essa solicitação corretamente para o Proxmox, resultando no erro. Esse problema é comum em proxies reversos que priorizam tráfego HTTP/HTTPS padrão e não estão ajustados para suportar WebSockets.

Planejamento para Resolver o Problema

Para corrigir o erro, precisamos garantir que o proxy reverso do Synology suporte WebSockets. A abordagem principal é adicionar cabeçalhos HTTP específicos (Upgrade e Connection) que instruem o proxy a manter a conexão WebSocket ativa. Isso pode ser feito diretamente na interface gráfica do Synology, usando a funcionalidade de Custom Headers. Caso isso não seja suficiente, podemos editar manualmente a configuração do Nginx (o servidor usado pelo Synology para o proxy reverso) para incluir diretivas explícitas de suporte a WebSockets. Além disso, é importante verificar os certificados SSL, pois problemas com certificados autoassinados ou inválidos podem agravar o erro, especialmente em navegadores mais rigorosos, como o Safari. Como alternativa, se o Synology continuar apresentando problemas, podemos usar o Nginx Proxy Manager em um contêiner LXC no Proxmox, que oferece suporte nativo a WebSockets.

Bom, vamos ao que interessa:

Passo 1: Adicionar Cabeçalhos no Proxy Reverso

  • No DSM, vá para Control Panel > Application Portal > Reverse Proxy.
  • Edite a regra para seu domínio (ex.: meuproxmox.seusynology.synology.me).
  • Na aba Custom Headers, adicione:
Nome: Upgrade
Valor: $http_upgrade
Nome: Connection
Valor: $connection_upgrade
  • Salve e teste o shell.

Passo 2: Configuração Avançada (Se Necessário)
  • Habilite SSH no Synology (Control Panel > Terminal & SNMP).
  • Edite a configuração do Nginx:
    sudo vi /etc/nginx/conf.d/http_servers.conf
  • Adicione ao bloco server:
location / {
    proxy_pass https://192.168.0.15:8006;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
}
  • Verifique e recarregue:
sudo nginx -t
sudo nginx -s reload

Passo 3: Verificar Certificados SSL
  • Use certificados válidos (ex.: Let’s Encrypt) no Proxmox e Synology.
  • Para o Proxmox:
apt install acme.sh
acme.sh --issue --standalone -d meuproxmox.seusynology.synology.me

Passo 4: Dicas
  • Cheque firewalls e antivírus.
  • Teste em diferentes navegadores.
  • Para clusters:
pvecm updatecerts --force
systemctl restart pveproxy.service pvedaemon.service

Alternativa: Nginx Proxy Manager

Instale o Nginx Proxy Manager em um LXC:

docker run -d --name nginx-proxy-manager -p 80:80 -p 443:443 -p 81:81 -v npm-data:/data -v npm-letsencrypt:/etc/letsencrypt --restart=unless-stopped jc21/nginx-proxy-manager:latest

Configure o proxy host com suporte a WebSocket.


Verificar Logs

Proxmox: journalctl -u pveproxy.service

Synology: sudo cat /var/log/nginx/error.log

Com isso, o shell funcionará perfeitamente pelo proxy reverso, permitindo gerenciar suas máquinas virtuais sem interrupções!


Para reforçar: se resolver no primeiro passo, não precisa ir para os seguintes, ok?


Bom, por enquanto é isso!

Fontes:

domingo, 14 de novembro de 2010

Proxy Internacional

   Quando o Mahmoud Ahmadinejad estava contabilizando seus votos para a reeleição no Irã e a população se rebelou, resultando em pancadaria generalizada nas ruas, o acesso a sites estrangeiros no país foi proibido. Não havia como postar fotos ou vídeos do que estava acontecendo no país se não fosse por canais oficiais.

   Não? Pois é, havia outro jeito. Através de Proxies Internacionais, ou seja, você acessava a rede como se fosse alguém em outro pais acessando a rede. Não, não é complexo, mas não é esse o lugar para explicar a mágica. Só vou postar a dica, pois, agora que a Venezuela é aqui, pode ser útil.

   Você pode acessar estes sites: Proxy Servers, Hide My Ass e Proxy Server List, mas então você terá que contar com a sorte de encontrar um bom link para acesso rápido e tal. Na falta de algo melhor, quebra o galho.

   MAS exitem outras 2 boas opções, bem práticas.

   A primeira delas é Hotspot Shield. É um programinha para Windows e Mac. Você instala, clica e pronto, ele se conecta sozinho com um servidor dos EUA, onde você pode acessar conteúdos proibidos no Brasil :) Tem um detalhe. Ele teima em abrir uns links de propaganda (nada pornográfico, para o caso de algum puritano perguntar). O problema é que, em dispositivos com telas menores, como os netbooks, esses links podem "comer" espaço útil na tela. Além disso, alguns links são sonoros, atrapalhando escutar vídeos ou músicas. Tá, dá para contornar, mas às vezes, simplesmente não é possível achar onde está a "propaganda falante". Não existe almoço grátis!

   Mas há outra opção que é o proXPN, também disponível para Mac e Windows. Ele não mostra "comerciais falantes", mas demora mais para conectar com os proxies estrangeiros. Não existe almoço grátis, lembra?

   Ainda se perguntando pra que raios usar mais um programa no seu computador? Lá vai, então: conhece a Last.fm? Pois é, para você usar no Brasil (e em vários países), você precisa fazer um login. Depois de um determinado número de músicas, você terá que começar a pagar (poucos dólares, é verdade) para o uso. Mas nos EUA, por exemplo, é "de grátis". Daí você se conecta ao proxy americano e voilà...

   Mais um case de sucesso. Conhece o site Hulu? Clique nele aí na sua casa e você verá que ele só funciona nos EUA. Lá tem um monte de séries e filmes disponibilizados pelos próprios canais americanos, para tentar reduzir a pirataria. Enfim, se você entrar nesse site via proxy americano, o que você acha que vai acontecer? Isso mesmo, acesso ILIMITADO!!!!

   Boa diversão.

Mais extensões para o Google Chrome

   Como já disse (escrevi) antes, uso o Google Chrome como navegador. Rápido, estável, simples e cheio de extensões, permitindo que você o deixe com a sua cara...

   Vou postar aqui algumas das que eu uso. Acho essas muito seguras, confiáveis e úteis.

   A primeira delas é o Chromed Bird, que integra o Twitter ao Chrome. Uma beleza só :) Dá para postar, seguir seus contatos, criar listas, reduzir links, etc.
                                                

   Outra é o Proxy Switch. Muito útil para rápida conexão em proxies fechados. Um clique, selecione o proxy que focê deseja (previamente configurado) e pronto. Foi o mais simples e prático que encontrei. Sem estresse.

   Speed Dial também é ótimo. Permite que você configure alguns links para serem mostrados na hora de abrir uma nova página no navegador. Coloco lá os links que mais acesso normalmente (UOL, Gmail, Folha de São Paulo, etc). Também existe para FF. O Opera tem algo semelhante nativamente (de onde tiraram a idéia para criar esta extensão).
                                          

   O Search Preview também é bem útil. Ao acessar o Google e fazer alguma pesquisa, o site mostrará pequenas miniaturas da página. Bem útil na hora de encontrar "aquela página que eu não sei o nome mas lembro mais ou menos como ela era!".
                                     

   Sabe quando você clica em algum link do Youtube e ele começa a abrir, para para carregar, abre de novo, carrega mais um pouco? Irritante, não? Tá, você pode apertar no Pause e esperar carregar tudo primeiro, mas pra que fazer isso se uma extensão pode fazer isso por você? Com o Stop Autoplay for Youtube (http://goo.gl/0Dg3) seus problemas acabaram :) . É só clicar no link do Youtube e esperar o vídeo carregar todo. Depois aperte no botão para iniciar.

   A Internet está cheia coisas para fazer download, né? Os sites mais comuns para downloads são o RapidShare e Megaupload, mas é um saco ficar esperando aquele reloginho marcar todo o tempo para você clicar e começar o download. Ainda, se você resolve olhar outras páginas e esquece aquela, dali a pouco o link não vale mais, e lá vai você, de novo, esperar uns 90 segundos. Um porre, certo? Então use o Rapidshare Downloadhelper (http://goo.gl/6ZIs) e o MegaUpload Downloadhelper (http://goo.gl/tNL9). Ao clicar num link para esses sites, o download iniciará automaticamente assim que acabar o tempo de espera. Mais fácil, não?
                                                     

   É isso aí! Assim que eu achar alguma novidade, coloco aqui.