Como usar o OpenVPN através de um firewall restritivo?

13

Atualmente, estou na situação de tentar configurar o OpenVPN em um VPS pessoal, para conexão principalmente através de um firewall excessivamente restritivo. Todas as configurações mencionadas abaixo funcionam quando usadas por meio de uma conexão com firewall razoável.

Eu tentei:

  1. OpenVPN em execução na porta padrão
  2. OpenVPN em execução na porta 443 (inicio o OpenVPN manualmente a partir da linha de comando no VPS e vejo que o servidor relata que a conexão foi fechada quase imediatamente, presumo que isso seja resultado de DPI no firewall)
  3. STunnel executando na porta 443 para acessar o OpenVPN e evitar o DPI. Este é o mais bem-sucedido e permite uma conexão e acesso à Internet através da VPN por ~ 10 a 20 segundos, antes que a conexão seja fechada à força.

Existe mais alguma coisa que eu possa tentar?

RL Stine
fonte
1
Caro senhor, que provedor de "VPS pessoal" você tem e que se esforça tanto para impedir que você execute uma VPN ?! Além disso, não está claro se você está tentando usar o VPS como um servidor OpenVPN ou se deseja torná-lo o cliente.
allquixotic
Woops! Eu deveria ter sido mais claro. O provedor VPS é Linode, e eles definitivamente não estão bloqueando nada. ;) O problema é que estou me conectando à VPN a partir de um cliente (meu laptop) cujo acesso à Internet está severamente protegido por firewall.
RL Stine
1
Uma solução VPN em geral será facilmente detectada por qualquer coisa que faça inspeção de pacotes com estado, como você sugeriu. A desconexão forçada pode ser devida a métodos de análise de tráfego que analisam a conexão https do stunnel e dizem "espere um minuto, as conexões padrão de solicitação / resposta HTTP não são tão faladoras!" - em essência você está preso. Você pode tentar um proxy HTTPS; talvez algo onde você passar a solicitação como um corpo HTTP (via SSL) para um servlet e encaminha seu pedido ... o_O
allquixotic
3
Você pode ter em mente que ignorar as restrições implementadas por um firewall da empresa provavelmente é uma violação da política da empresa. Sugiro que você fale com o administrador do firewall sobre o problema.
Ansgar Wiechers

Respostas:

11

As conexões cortadas após um período de tempo às vezes indicam um tipo de limite de bytes por segundo. Tente verificar se a velocidade da conexão VPN está funcionando. Além disso, se você tiver o OpenVPN configurado para UDP, tente o TCP (o 443 UDP pode estar bloqueado, enquanto o 443 TCP pode não ser detectado).

Visite um site conhecido que usa SSL e verifique o certificado. Então faça o mesmo em casa. Se eles não corresponderem, seu local está usando um proxy SSL HTTPS transparente e pode realmente ver seu tráfego HTTPS.

É possível que algo que não seja a porta 443 não seja observado tão de perto. Tente 22.

Pode parecer estúpido, mas tente fazê-lo pela porta 80 e veja o que você recebe. Você também pode tentar configurar um túnel HTTP entre você e o VPS para fazer o tráfego parecer solicitações HTTP.

Se você estiver se sentindo louco, tente iodo .

LawrenceC
fonte
2
+1, mas especialmente para iodo!
0xC0000022L
5

Acho que sei por que o método do stunnel se comporta assim. É porque você net para definir uma "rota estática" para o servidor de stunnel. Deixe-me explicar isso. Quando você se conecta a um servidor openvpn, ele altera sua tabela de roteamento e encaminha todos os seus pacotes através do vpn, exceto os pacotes openvpn. O openvpn adicionará uma rota para o endereço IP do servidor. Mas quando você usa o stunnel para conectar-se ao seu servidor openvpn, conecta o openvpn a uma interface de loopback e não há rota para o servidor fora do seu vpn, portanto, os pacotes de stunnel desejam acessar o servidor e eles vão para os pacotes vpn e vpn. stunnel :)

Portanto, você precisa adicionar uma rota ao ip do servidor que vá para fora do seu VPN (seu roteador doméstico).

E por problemas com a porta 443 do método, posso dizer que talvez o firewall esteja usando SPI ou DPI e possa facilmente criar pacotes openvpn diferentes a partir de pacotes https (ssl). Portanto, a melhor maneira é usar stunnel, ou se o firewall bloquear pacotes SSL, é melhor usar obfsproxy ou fteproxy para ignorá-lo.

(eu sei que a postagem é antiga, mas eu estava procurando uma resposta sobre o mesmo problema por semanas, então eu queria compartilhar o que aprendi sobre isso)

Reza Askari
fonte
Isso não fornece uma resposta para a pergunta. Para criticar ou solicitar esclarecimentos a um autor, deixe um comentário abaixo da postagem - você sempre pode comentar em suas próprias postagens e, quando tiver reputação suficiente , poderá comentar em qualquer post .
Ramhound
3

A resposta de Reza Askari foi exatamente a resposta para a terceira pergunta. Isso está acontecendo no meu computador Linux e no Android.

No computador, antes de conectar-se ao OpenVPN através

sudo openvpn --config configFile.ovpn

Você deve adicionar uma regra para remover o servidor de stunnel do túnel OpenVPN.

sudo /sbin/ip route add stunnel_ip via default_gateway_ip

Em seguida, conecte-se ao seu servidor OpenVPN. Quando terminar, você pode remover essa regra:

sudo /sbin/ip route del stunnel_ip

Para facilitar as coisas, para que você não esqueça, crie um shell script que irá adicionar a regra e executar o OpenVPN. Quando o OpenVPN terminar, a regra será excluída:

sudo /sbin/ip route add stunnel_ip via default_gateway_ip

sudo openvpn --config configFile.ovpn

sudo /sbin/ip route del stunnel_ip

No Android, use o cliente "OpenVPN for Android" de "Arne Schwabe" e "SSLDroid" de "Balint Kovacs".

Em seguida, no cliente OpenVPN, exclua "SSLDroid" do perfil de VPN que passa pelo stunnel.

Eu adoraria aprovar a resposta de Reza ou comentar lá, mas essa regra de pontuação de reputação me impediu.

0x00FE
fonte
1

Eu nunca tentei (então deixe-me saber se funciona!), Mas dê uma chance @ usando o tunelamento ssh acima de 443 e execute seu OpenVPN através do túnel. Você pode precisar de um host remoto extra para ouvir 443, se não tiver um, mas há um exemplo aqui http://www.anonyproz.com/openvpnsshtunnel.pdf para usar o serviço de proxy [Nota do editor: este link da Wayback Machine pode ser mais seguro], mas isso também é Googlable:

https://www.google.com/search?q=ssh%20tunnel%20openvpn .

Também conheci pessoas que usam essa abordagem como proxy, porque seu empregador bloqueou o acesso a sites de empregos, como o dice.com, quando eram populares.

MDMoore313
fonte