Desconexões intermitentes ao usar o OpenVPN sobre o túnel SSH; possível problema iptables?

1

Eu configurei recentemente um servidor Debian Wheezy com o OpenVPN para ajudar alguns amigos em áreas onde a censura na Internet é um problema (incluindo o bloqueio do tráfego de VPN em geral). Para superar isso, os clientes primeiro criam um túnel SSH para o servidor e, em seguida, conectam-se à VPN sobre isso.

O servidor uma porta SSH aberta 40001 e a porta 40002 para um servidor OpenVPN com o protocolo TCP. Ambos parecem estar configurados corretamente no roteador.

Eu dou aos meus clientes um script que tunnels seu localhost: 8080 para myserver: 40001, em seguida, se conecta à VPN. A configuração de seu cliente OpenVPN tem 'remote' configurado para 'localhost 8080' de forma que a conexão VPN seja direcionada por este túnel SSH.

Meu problema é que este túnel parece funcionar às vezes (aparentemente em momentos aleatórios), mas muitas vezes não consegue manter uma conexão. Também o vi trabalhando simultaneamente em alguns computadores (principalmente o meu), mas não em outros. Quando falhar, o cliente se conectará à VPN, mas não poderá acessar a Internet e, após cerca de 30 a 40 segundos, o processo de encapsulamento SSH simplesmente terminará (a abertura do encapsulamento gera apenas "Erro de gravação: duto quebrado") quando morre). Não consigo encontrar nada em qualquer servidor ou logs do cliente para sugerir por que isso está acontecendo ou o que está matando o túnel.

Eu sei que não é uma falha da própria conexão VPN, porque se eu alterar o IP remoto de localhost: 8080 para o endereço público real e a porta OpenVPN do meu servidor, ele funcionará de forma consistente.

Minha suspeita é que minhas regras iptables são tais que as conexões de entrada diretamente para a VPN são acomodadas, mas as conexões para a VPN vindas de dentro do próprio servidor (devido ao túnel SSH) são tratadas de forma diferente. No entanto, se este fosse o caso, não vejo por que funcionaria apenas ocasionalmente. O que mais poderia estar causando essas quedas de conexão? Não consigo encontrar nada relevante em /var/log/auth.log, /etc/openvpn/openvpn.log ou em qualquer registro de cliente.

Meu /etc/iptables/rules.v4 é o seguinte:

*nat
:PREROUTING ACCEPT [211:13875]
:INPUT ACCEPT [3:371]
:OUTPUT ACCEPT [5:348]
:POSTROUTING ACCEPT [5:348]
-A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
COMMIT

*filter
:INPUT ACCEPT [7937:9042429]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [10987:15593548]
:fail2ban-ssh - [0:0]
-A FORWARD -i eth0 -o tun0 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i tun0 -o eth0 -j ACCEPT
-A INPUT -p tcp -d localhost --destination-port 40001 -j ACCEPT
COMMIT

EDIT: Eu encontrei o que está causando o problema, mas eu não sei como consertar isso ainda. Quando o cliente executa a VPN, todo o tráfego - inclusive o do próprio túnel SSH - é roteado por ele. Isso é circular, é claro, e trava o túnel. Eu só preciso de alguma forma excluir o túnel SSH do roteamento do OpenVPN ...

    
por user3145309 23.07.2014 / 05:54

0 respostas