Estabelecer uma conexão com o OpenVPN em Raspbian

2

Estou tentando estabelecer uma conexão VPN em um Raspberry Pi 3 com Raspbian. Mas eu não posso fazer isso funcionar.

Estou usando o VPNBook e baixei o arquivo .ovpn para usar o OpenVPN.

Aqui está o conteúdo do arquivo .ovpn:

client
dev tun3
proto tcp
remote 176.126.237.217 80
remote euro217.vpnbook.com 80
resolv-retry infinite
nobind
persist-key
persist-tun
auth-user-pass pass.txt
comp-lzo
verb 3
cipher AES-128-CBC
fast-io
pull
redirect-gateway
script-security 2

Aqui está a saída que recebo:

pi@raspberrypi:/etc/openvpn/vpnbook $ sudo openvpn --config vpnbook-euro1-tcp80.ovpn
Wed Feb  8 00:07:45 2017 OpenVPN 2.3.4 arm-unknown-linux-gnueabihf [SSL (OpenSSL)] [LZO] [EPOLL] [PKCS11] [MH] [IPv6] built on Jan 23 2016
Wed Feb  8 00:07:45 2017 library versions: OpenSSL 1.0.1t  3 May 2016, LZO 2.08
Wed Feb  8 00:07:45 2017 WARNING: file 'pass.txt' is group or others accessible
Wed Feb  8 00:07:45 2017 WARNING: No server certificate verification method has been enabled.  See http://openvpn.net/howto.html#mitm for more info.
Wed Feb  8 00:07:45 2017 NOTE: --fast-io is disabled since we are not using UDP
Wed Feb  8 00:07:45 2017 Socket Buffers: R=[87380->131072] S=[16384->131072]
Wed Feb  8 00:07:45 2017 Attempting to establish TCP connection with [AF_INET]176.126.237.217:80 [nonblock]
Wed Feb  8 00:07:46 2017 TCP connection established with [AF_INET]176.126.237.217:80
Wed Feb  8 00:07:46 2017 TCPv4_CLIENT link local: [undef]
Wed Feb  8 00:07:46 2017 TCPv4_CLIENT link remote: [AF_INET]176.126.237.217:80
Wed Feb  8 00:07:46 2017 TLS: Initial packet from [AF_INET]176.126.237.217:80, sid=f8773375 a8e3c418
Wed Feb  8 00:07:46 2017 WARNING: this configuration may cache passwords in memory -- use the auth-nocache option to prevent this
Wed Feb  8 00:07:47 2017 VERIFY OK: depth=1, C=CH, ST=Zurich, L=Zurich, O=vpnbook.com, OU=IT, CN=vpnbook.com, name=vpnbook.com, [email protected]
Wed Feb  8 00:07:47 2017 VERIFY OK: depth=0, C=CH, ST=Zurich, L=Zurich, O=vpnbook.com, OU=IT, CN=vpnbook.com, name=vpnbook.com, [email protected]
Wed Feb  8 00:07:48 2017 Data Channel Encrypt: Cipher 'AES-128-CBC' initialized with 128 bit key
Wed Feb  8 00:07:48 2017 Data Channel Encrypt: Using 160 bit message hash 'SHA1' for HMAC authentication
Wed Feb  8 00:07:48 2017 Data Channel Decrypt: Cipher 'AES-128-CBC' initialized with 128 bit key
Wed Feb  8 00:07:48 2017 Data Channel Decrypt: Using 160 bit message hash 'SHA1' for HMAC authentication
Wed Feb  8 00:07:48 2017 Control Channel: TLSv1, cipher TLSv1/SSLv3 DHE-RSA-AES256-SHA, 1024 bit RSA
Wed Feb  8 00:07:48 2017 [vpnbook.com] Peer Connection Initiated with [AF_INET]176.126.237.217:80
Wed Feb  8 00:07:50 2017 SENT CONTROL [vpnbook.com]: 'PUSH_REQUEST' (status=1)
Wed Feb  8 00:07:50 2017 PUSH: Received control message: 'PUSH_REPLY,redirect-gateway def1,dhcp-option DNS  89.233.43.71,dhcp-option DNS  91.239.100.100,route 10.12.0.1,topology net30,ping 5,ping-restart 30,ifconfig 10.12.0.6 10.12.0.5'
Wed Feb  8 00:07:50 2017 OPTIONS IMPORT: timers and/or timeouts modified
Wed Feb  8 00:07:50 2017 OPTIONS IMPORT: --ifconfig/up options modified
Wed Feb  8 00:07:50 2017 OPTIONS IMPORT: route options modified
Wed Feb  8 00:07:50 2017 OPTIONS IMPORT: --ip-win32 and/or --dhcp-option options modified
Wed Feb  8 00:07:50 2017 ROUTE_GATEWAY 192.168.0.1/255.255.255.0 IFACE=wlan0 HWADDR=b8:27:eb:e3:f8:56
Wed Feb  8 00:07:50 2017 TUN/TAP device tun3 opened
Wed Feb  8 00:07:50 2017 TUN/TAP TX queue length set to 100
Wed Feb  8 00:07:50 2017 do_ifconfig, tt->ipv6=0, tt->did_ifconfig_ipv6_setup=0
Wed Feb  8 00:07:50 2017 /sbin/ip link set dev tun3 up mtu 1500
Wed Feb  8 00:07:50 2017 /sbin/ip addr add dev tun3 local 10.12.0.6 peer 10.12.0.5
Wed Feb  8 00:07:50 2017 /sbin/ip route add 176.126.237.217/32 via 192.168.0.1
Wed Feb  8 00:07:50 2017 /sbin/ip route add 0.0.0.0/1 via 10.12.0.5
Wed Feb  8 00:07:50 2017 /sbin/ip route add 128.0.0.0/1 via 10.12.0.5
Wed Feb  8 00:07:50 2017 /sbin/ip route add 10.12.0.1/32 via 10.12.0.5
Wed Feb  8 00:07:50 2017 Initialization Sequence Completed

Neste ponto, não consigo acessar nenhum site (colocando nome ou endereço IP). No entanto, posso fazer ping em alguns endereços IP como 216.58.212.99, mas não em nomes de host como www.google.fr.

Eu pensei que era um problema de DNS, tentei procurá-lo e atualizei meu arquivo .ovpn com as seguintes linhas:

up /etc/openvpn/update-resolv-conf
down /etc/openvpn/update-resolv-conf

Isso não mudou nada.

[EDITAR] Como não consigo pingar nomes de host, acho que ainda tenho um problema de DNS. Eu tentei coisas diferentes do fórum que vi na internet, mas nenhuma delas funcionou. Há uma primeira coisa a ser vista para entender por que meu DNS não está funcionando? Na verdade, por que as solicitações de DNS não estão passando pelo túnel e enviadas pelo servidor VPN? [/ EDIT]

Eu também tentei com outra VPN (VPNGate), mas tenho o mesmo comportamento.

Tudo na rede é dolorosamente lento assim que o openvpn é iniciado. E nem sei se o túnel está funcionando.

[EDIT] Eu realmente acho que o túnel está funcionando, mas como ter certeza sem poder carregar um único site? Tudo é muito lento e não sei porque. Ele provavelmente vem da minha configuração porque eu acho que não sou o único usando o VPNBook, e também tentei com outro provedor de VPN com o mesmo resultado. [/ EDIT]

[2º EDIT]

Ainda estou preso a este problema, estou lendo um tutorial para entender completamente como uma rede está funcionando. Pelo que posso dizer no momento, vejo duas coisas estranhas na minha configuração quando a VPN é ativada.

Primeiro, na interface "tun3" criada para a conexão com a VPN, o endereço MAC está cheio de 0. Não deveria ser o mesmo da minha outra interface?

tun3      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
          inet addr:10.12.0.170  P-t-P:10.12.0.169  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
          RX packets:126 errors:0 dropped:0 overruns:0 frame:0
          TX packets:358 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100
          RX bytes:16864 (16.4 KiB)  TX bytes:35559 (34.7 KiB)

wlan0     Link encap:Ethernet  HWaddr b8:27:eb:e3:f8:56
          inet addr:192.168.0.17  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: fe80::6dfb:5d45:2ae7:fe43/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:24791 errors:0 dropped:7790 overruns:0 frame:0
          TX packets:19963 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:4974169 (4.7 MiB)  TX bytes:2843776 (2.7 MiB)

Em segundo lugar, a tabela de rotas (que é exibida muito lentamente quando a VPN está ativada):

Sem VPN:

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         192.168.0.1     0.0.0.0         UG    303    0        0 wlan0
192.168.0.0     *               255.255.255.0   U     303    0        0 wlan0

Com VPN:

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         10.12.0.169     128.0.0.0       UG    0      0        0 tun3
default         192.168.0.1     0.0.0.0         UG    303    0        0 wlan0
10.12.0.1       10.12.0.169     255.255.255.255 UGH   0      0        0 tun3
10.12.0.169     *               255.255.255.255 UH    0      0        0 tun3
128.0.0.0       10.12.0.169     128.0.0.0       UG    0      0        0 tun3
176.126.237.217 192.168.0.1     255.255.255.255 UGH   0      0        0 wlan0
192.168.0.0     *               255.255.255.0   U     303    0        0 wlan0

Aqui há 1 gateaway que eu não consigo nem pingar: 10.12.0.169. Na verdade, nem entendo por que tenho esse novo endereço IP completamente diferente do resto da minha rede. Não deveria "tun3" também ter um endereço IP como 192.168.0.xxx? De onde vem esse endereço IP 10.12.0.170? Além disso, com exceção da rota em direção à minha própria rede local, o gateway não deveria ser 192.168.0.1 (meu provedor de internet) para todos os destinos?

Estas são as coisas que acho estranhas no momento, mas ainda estou lendo o tutorial da rede e voltarei com as respostas se tiver algumas.

[/ 2nd EDIT]

    
por artouf06 12.02.2017 / 22:57

3 respostas

2

Consegui fazê-lo funcionar instalando o pacote resolvconf e fazendo uma atualização e atualização. O estranho é que eu não tinha nenhuma mensagem dizendo que resolvconf estava faltando. Em resolvconf installation, ele diz que precisou de uninstall openresolv , por isso provavelmente estava usando este em vez de resolvconf .

De qualquer forma, isso funcionou na época e funcionou depois de uma reinicialização. Depois disso, fecho meu dispositivo e, agora, sem ter feito nenhuma alteração, não consigo resolver os nomes de host. Parece que o resolvconf não faz nada.

EDITAR: Eu também removi o 'pacote dnsmasq' e adicionei as seguintes linhas nos arquivos a seguir e agora está funcionando.

/etc/host.conf

order hosts,bind # was missing
multi off # was on

/etc/nsswitch.conf

# /etc/nsswitch.conf
#
# Example configuration of GNU Name Service Switch functionality.
# If you have the 'glibc-doc-reference' and 'info' packages installed, try:
# 'info libc "Name Service Switch"' for information about this file.

passwd:         compat
group:          compat
shadow:         compat
gshadow:        files

hosts:          files myhostname mdns4_minimal [NOTFOUND=return] dns
networks:       files dns # dns was missing

protocols:      db files
services:       db files
ethers:         db files
rpc:            db files

netgroup:       nis

No entanto, agora pode resolver alguns nomes, mas não todos eles. Eu posso resolver www.google.com , mas não torrent.ubuntu.com por exemplo. Mesmo se eu usar o comando dig para especificar o DNS que desejo usar, não consigo resolver torrent.ubuntu.com enquanto estiver conectado à VPN. Quando não estou conectado à VPN, posso resolvê-lo e também posso resolvê-lo usando o DNS do meu servidor VPN.

    
por 24.03.2017 / 00:52
0

Parece que está funcionando corretamente.

Here is the output I get:

pi@raspberrypi:/etc/openvpn/vpnbook $ sudo openvpn --config vpnbook-euro1-tcp80.ovpn

And then everything stops and I cannot write to the console anymore.

O que está acontecendo aqui é que você iniciou o cliente OpenVPN em sua sessão de terminal e não como um serviço. (Isso é ótimo para depuração, mas não é tão útil de outra forma.) O motivo pelo qual você não pode mais gravar nessa janela de terminal (ou console) é que o programa OpenVPN ainda não terminou.

Ou se você começou a partir de uma conexão ssh remota, há mais complicações, o que resulta na impossibilidade de inserir mais informações. (Veja abaixo.)

Um dos efeitos colaterais aparentemente pretendidos da configuração da VPN que você mostrou é que a rota padrão da rede é alterada para passar pelo VPNBook (o item de configuração redirect-gateway ). Isso significa que qualquer conexão de rede de entrada não poderá continuar. Isso também significa que, se os seus servidores DNS forem os fornecidos pelo seu ISP, você não poderá usá-los para resolver endereços, porque você não mais parece estar na rede gerenciada do ISP, portanto eles não permitirão as solicitações.

Se você quiser atualizar sua pergunta para explicar com mais detalhes o que você está tentando alcançar, talvez seja possível atualizar essa pergunta com algumas recomendações.

    
por 13.02.2017 / 14:03
-3

Algo que notei em uma de suas edições é que seu adaptador tun3 está configurado para noARP. (UP POINTOPOINT RUNNING NOARP MULTICAST). Com o ARP não sendo executado, ele não resolve nomes de domínio para endereços IP. Talvez verifique o arquivo de configuração para uma opção para mudar isso.

    
por 24.03.2017 / 02:55