NB: Eu sou um noob de rede, então, por favor, suponha que eu não saiba nada e explique as coisas de acordo (ou forneça links para mais informações).
Estou tentando configurar um servidor OpenVPN para que todo o tráfego do cliente (incluindo o tráfego da web) seja roteado pela VPN. Estou seguindo o OpenVPN HOWTO e cheguei até a seção "Roteando todo o tráfego de clientes (incluindo o tráfego da web) através da VPN" ( link ).
Minha configuração é:
-
Servidor OpenVPN (BeagleBone Black (BBB) na rede privada IP 10.240.233.2) conectado ao meu roteador de banda larga em
home (na rede privada IP 10.240.233.1).
-
Cliente (laptop executando o Xubuntu GNU / Linux) conectado a uma rede externa.
Eu posso com sucesso:
-
Inicie o servidor OpenVPN no BBB na inicialização
-
Conecte o cliente à VPN
-
Servidor Ping OpenVPN (10.8.0.1) do cliente (10.8.0.6) e vice-versa
-
Execute o ping do roteador (10.240.233.1) do cliente
O último foi alcançado por:
-
Adicionando a seguinte diretiva ao arquivo de configuração do servidor: push "route 10.240.233.0 255.255.255.0"
-
Habilitando o encaminhamento de IP no servidor OpenVPN editando /etc/sysctl.conf
(Aqui está a edição: # Uncomment the next line to enable packet forwarding for IPv4
net.ipv4.ip_forward=1
, após o qual o comando sudo sysctl net.ipv4.ip_forward
rende net.ipv4.ip_forward = 1
)
-
Ativando o encaminhamento do tun usando os seguintes comandos (deste guia: link ): sudo iptables -A INPUT -i tun+ -j ACCEPT
e sudo iptables -A FORWARD -i tun+ -j ACCEPT
Agora, para o bit de redirecionamento ...
Eu adicionei as seguintes diretivas ao arquivo de configuração do servidor (do HOWTO do OpenVPN):
push "redirect-gateway def1"
push "dhcp-option DNS 10.240.233.1"
NB: O DNS DNS transmitido é o do meu roteador de banda larga, que posso executar ping com êxito do cliente quando conectado à VPN e que o servidor está relatando como servidor de nomes ( cat /etc/resolv.conf
no servidor rende nameserver 10.240.233.1
)
Em seguida, usei o seguinte comando para o tráfego do cliente VPN para a Internet (a partir do HOWTO do OpenVPN):
sudo iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
(Sim, minha conexão do servidor OpenVPN para o roteador de banda larga é reportada pelo servidor como eth0
(usando ifconfig
))
Finalmente, eu fiz os seguintes comandos para salvar o iptables e reiniciar a VPN (do Niki Nuryadin link acima):
sudo iptables-save
sudo /etc/init.d/networking restart
sudo /etc/init.d/openvpn restart
Eu posso acessar com sucesso o www.google.com e o www.bbc.co.uk do servidor OpenVPN. (Eu também posso pingar eles do laptop enquanto não estiver conectado à VPN, obv!). No entanto, quando conectado à VPN, não consigo fazer ping desses sites no cliente.
Normalmente, se você tentar fazer ping em algo que não está disponível (por exemplo, ping 192.168.7.2
), obterá um resultado assim:
PING 192.168.7.2 (192.168.7.2) 56(84) bytes of data.
e, em seguida, apenas trava. No entanto, nesse caso, quando o cliente está conectado ao servidor OpenVPN e tento pingar no Google ou na BBC, não recebo nenhuma saída.
Não consigo encontrar a resposta em nenhum lugar no serverfault.com ou em qualquer outro lugar. A única pista que tenho é que o OpenVPN HOWTO diz:
[Using 'push "dhcp-option DNS 10.240.233.1"] will configure Windows clients (or non-Windows clients with some extra server-side scripting) to use [10.240.233.1] as their DNS server.
Então, eu preciso de algum script extra do lado do servidor? Ou há algum outro problema?
Além disso, quando posso fazer ping em sites e navegar na Internet, como posso verificar se todo o tráfego está realmente passando pelo túnel do OpenVPN e não apenas ignorando-o como antes de eu seguir estas etapas?