Conexão OpenVPN através do túnel SSH

0

Atualmente estou visitando a China, então tenho algumas opções para VPNs configuradas. No entanto, meus servidores VPN têm o hábito de desaparecer repentinamente da rede depois de usá-los por um tempo.

Eu pensei que poderia ser uma opção para usar um túnel SSH para outro servidor e conectar a VPN por meio disso, para evitar que o tráfego da VPN fosse detectado. Dessa forma, presumivelmente, o tráfego é lido apenas como uma conexão SSH com o provedor.

Por isso, conecto-me a um servidor como este:

ssh peter@some-server -L 4444:vpn-server:1194 -N

Em seguida, adicione isso à minha configuração do cliente openvpn:

remote localhost 1194

Infelizmente, isso não funciona. A conexão é autenticada, mas depois não consigo me conectar ao interior da VPN ( ping 10.8.0.1 ) ou do lado de fora ( ping 8.8.8.8 ). Isso deve funcionar ou estou entendendo mal alguma coisa?

Existe alguma regra nat do iptables que devo adicionar? A única regra nat que eu adicionei até agora é:

-A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
    
por Peter 08.09.2018 / 05:40

1 resposta

1

A abordagem simplista para configurar sua conexão VPN por meio de um túnel SSH não funcionará. Primeiro problema: você está apenas tunelando a conexão com o próprio servidor VPN, que não permite que todo o outro tráfego seja roteado através do servidor VPN OVER da ssh connection (ofuscando assim a conexão). A correção para isso é usar um proxy SOCKS [5] dinâmico e informar ao OpenVPN para se conectar através desse proxy. Adicione ao seu arquivo de configuração do OpenVPN:

socks-proxy localhost 6886
socks-proxy-retry

Em seguida, inicie sua sessão ssh com um proxy SOCKS dinâmico:

ssh -D 6886 -N REMOTE

Então você pode iniciar sua conexão OpenVPN. No entanto, isso ainda tem mais uma falha, pelo menos supondo que você deseja redirecionar todo o tráfego através da VPN (diretiva redirect-gateway def1 do OpenVPN). Para que isso funcione, você precisa manter uma rota para o ponto final do proxy SOCKS que não é mascarado pelas rotas adicionadas pelo cliente OpenVPN. Para fazer isso, adicione outra diretiva à sua configuração do OpenVPN que se pareça com isto:

route REMOTE-IP 255.255.255.255 net_gateway default

Você pode conseguir usar o nome do host REMOTE nessa diretiva, mas talvez seja necessário resolvê-lo para um endereço IP manualmente.

Isso deve funcionar, pelo menos para o tráfego IPv4. Uma rápida pesquisa no google esta postagem do blog que faz essencialmente a mesma coisa, tem boas descrições do que está acontecendo, mas parece ser mais complicado na solução (usando um script de conexão)

Alternativamente, você também pode procurar usar obfs4proxy (ex. this e isto ou empacotado para o Ubuntu )

    
por 10.09.2018 / 20:30