Não consigo entender por que minha conexão openvpn não está funcionando. Parece que funciona bem na conexão. Posso me conectar ao meu servidor, mas uma vez conectado, não consigo usar a Internet por meio de VPN.
Este é um servidor VPS rodando em Debian
Aqui está meu arquivo openvpn server.conf
port 1194
proto udp
dev tun
ca ca.crt
cert server.crt
key server.key # This file should be kept secret
dh dh2048.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "redirect-gateway def1"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
keepalive 10 120
comp-lzo
user nobody
group nogroup
persist-key
persist-tun
status openvpn-status.log
log openvpn.log
verb 6
mute 20
E aqui está meu arquivo client.conf
client
dev tun
proto udp
remote server_ip 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert client.crt
key client.key
ns-cert-type server
comp-lzo
verb 3
remote-cert-tls server
Adicionei regras de firewall também para aceitar conexão e rota, mas o estranho é que algumas regras aparecem várias vezes. Aqui está meu arquivo salvo do iptables
# Generated by iptables-save v1.4.8 on Sun Dec 22 04:36:18 2013
*nat
:PREROUTING ACCEPT [53:9749]
:POSTROUTING ACCEPT [9:675]
:OUTPUT ACCEPT [9:675]
-A PREROUTING -d server_ip/32 -p udp -m udp --dport 53 -j REDIRECT --to-ports 1194
-A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
-A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
-A POSTROUTING -s 10.8.0.0/24 -j SNAT --to-source server_ip
-A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
COMMIT
# Completed on Sun Dec 22 04:36:18 2013
# Generated by iptables-save v1.4.8 on Sun Dec 22 04:36:18 2013
*filter
:INPUT ACCEPT [946:112417]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [824:172939]
-A INPUT -i tun0 -p tcp -m tcp --dport 1194 -j ACCEPT
-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -s 10.8.0.0/24 -j ACCEPT
-A FORWARD -j REJECT --reject-with icmp-port-unreachable
-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -s 10.8.0.0/24 -j ACCEPT
-A FORWARD -j REJECT --reject-with icmp-port-unreachable
-A FORWARD -i eth0 -o tun0 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -s 10.8.0.0/24 -o eth0 -j ACCEPT
COMMIT
# Completed on Sun Dec 22 04:36:18 2013
Eu também verifiquei /etc/sysctl.conf para ter certeza de que
net.ipv4.ip_forward=1
eu também tenho
net.ipv6.conf.all.forwarding=1
Então tentei a conexão OpenVPN no meu pc linux e no Virtualbox XP e ambos têm conexão, mas nenhum deles tem acesso à internet depois de conectado.
O mais estranho de tudo isso é que quando faço o traceroute ele mostra a conexão via VPN.
Por exemplo, eu faço traceroute google.com
1 my ip from vpn connection
2 openvpn server ip
3 ...
4 ...
5 ... few hops between server to google
6 and finally google server ip
Portanto, o traceroute mostra que a conexão passa pela VPN, e também quando eu faço ping, o ping aumenta para 100ms de diferença quando não estou conectado à VPN quando o ping é de cerca de 20ms.
Mas quando tento navegar na internet com qualquer programa (firefox, chrome, iexplorer) não consigo nada. Nada será carregado e a conexão expirará.
Não é que meu servidor esteja lento, então as páginas não carregam, o teste de velocidade mostra cerca de 70 mbit de conexão no servidor e eu tenho uma conexão de 6 mbit.
E quando tento me conectar a outra VPN como o cloudnymous, tudo funciona bem. É apenas algo errado na minha configuração do openvpn.
EDIT: Afinal, pensei que finalmente consegui funcionar, depois de mexer em muitas configurações, finalmente consigo me conectar à minha VPN e acessar a Internet a partir daí.
Agora tenho um último problema. Como estou no Linux, poucos programas não funcionam aqui e eu uso o virtualbox com instalação do windows XP, mas quando conectado ao vpn no virtualbox consigo navegar na internet. Mas nenhum programa pode se conectar à internet. Além disso, minha conexão VPN está perdendo internet de vez em quando, e não é minha conexão de internet ou servidor, porque durante esse período, quando perco internet por VPN, ainda posso me conectar com putty via ssh ao servidor e fazer várias coisas.
Responder1
O mascaramento não funciona em um VPS. Você deve usar iptables
Source NAT
:
iptables -t nat -A POSTROUTING -s 10.x.x.x/xx -j SNAT --to-source y.y.y.y
x.x.x.x/x
é a sub-rede VPN - y.y.y.y
é o endereço IP da interface de saída do servidor.
Responder2
Certifique-se /etc/default/ufw
de que o servidor tenha DEFAULT_FORWARD_POLICY="ACCEPT"
em vez de "DROP"
e reinicie o firewall
sudo ufw disable
sudo ufw enable
Responder3
Tive um problema semelhante em que o OpenVPN estava funcionando bem até trocar o roteador. Suspeitei do firewall do roteador, embora tivesse aberto as portas necessárias. No entanto, olhei para rc.local e vi que, quando configurado pela primeira vez, a linha iptables havia sido configurada com o endereço IP real em vez da variável $MY_IP que eu esperava assim:
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j SNAT --to 192.168.0.15
em vez de:
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j SNAT --to $MY_IP
O problema foi mudar o roteador atribuiu um IP diferente ao servidor e acabei de fazer uma reserva para o novo IP e esperava que tudo funcionasse.
Se eu tivesse reservado o mesmo IP para o servidor de antes, poderia ter evitado muita preocupação.