Como enviar meu próprio servidor DNS para o OpenVPN?

27

Eu defini um servidor DNS não vinculado no meu VPS e ele parece funcionar. Preciso usar o servidor DNS em vez de servidores DNS públicos porque alguns ISPs bloquearam IPs DNS públicos. Meu arquivo openvpn.conf é:

    dev tun
    proto tcp

    # Notice: here I set the listening port to be 80 to avoid possible port blockage
    port 80

    ca /etc/openvpn/easy-rsa/2.0/keys/ca.crt
    cert /etc/openvpn/easy-rsa/2.0/keys/server.crt
    key /etc/openvpn/easy-rsa/2.0/keys/server.key
    dh /etc/openvpn/easy-rsa/2.0/keys/dh1024.pem

    user nobody
    group nogroup
    server 10.8.0.0 255.255.255.0

    persist-key
    persist-tun

    #status openvpn-status.log
    #verb 3
    client-to-client

    push "redirect-gateway def1"

    #pushing public DNS IPs

    push "dhcp-option DNS 208.67.222.222"
    push "dhcp-option DNS 208.67.222.220"

    comp-lzo

Como é sugerido aqui , tentei usar os IPs do meu servidor (por exemplo, 11.22.33.44). Então, ao invés de

    push "dhcp-option DNS 208.67.222.222"
    push "dhcp-option DNS 208.67.222.220"

Eu apenas coloquei

push "dhcp-option DNS 11.22.33.44"

No openvpn.conf acima. No entanto, depois de reiniciar o openvpn, vejo que meu cliente ainda pode se conectar ao servidor OpenVPN, mas não é mais possível renderizar páginas.

O que pode estar errado aqui? Como posso resolver este problema?

hbp
fonte

Respostas:

31

Nos Windows 10clientes, você precisa adicionar as seguintes diretrizes a client.ovpn:

script-security 2                                                                                                       
dhcp-option DNS 10.0.8.1                                                                                           
dhcp-option DOMAIN example.lan                                                                                   

Não são necessárias mais diretivas para o Windows.

Nos Ubuntu 16.04clientes, pode ser necessário adicionar as seguintes diretrizes a client.ovpn:

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

As versões mais recentes do cliente OpenVPN para Windows não reconhecem a opção DOMAIN-SEARCHcorretamente e funcionam com DOMAIN.

vskubriev
fonte
Isso requer uma versão OpenVPN mínima específica?
0xC0000022L
Eu acho que você deve usar o IP do gateway VPN (10.0.8.1), não o endereço IP do gateway local do roteador (192.168.1.1). Esse é um endereço IP do roteador tão comum que provavelmente o roteador de rede não confiável ao qual estão diretamente conectados estará no endereço 192.168.1.1.
carlin.scott 28/02
8

Você diz que o "parece funcionar". Como você verificou isso? Você está baseando-se no fato de o servidor ter iniciado sem erros ou você realmente fez algumas consultas nele?

A primeira coisa que eu faria é usar o nslookup ou o escav para conectar-se ao servidor não acoplado e executar algumas consultas. Sei que o dig está mais na moda atualmente, mas conheço melhor o nslookup.


$ nslookup
> server 11.22.33.44
Default server: 11.22.33.44
Address: 11.22.33.44#53
> set type=A
> www.google.com
Server:     11.22.33.44
Address:    11.22.33.44#53

Non-authoritative answer:
www.google.com  canonical name = www.l.google.com.
Name:   www.l.google.com
Address: 74.125.225.52
Name:   www.l.google.com
Address: 74.125.225.48
Name:   www.l.google.com
Address: 74.125.225.49
Name:   www.l.google.com
Address: 74.125.225.50
Name:   www.l.google.com
Address: 74.125.225.51

Se isso não funcionar, é necessário revisar novamente a configuração do DNS.

Este é um servidor DNS primário ou um servidor DNS em cache? Você está tentando consultar recursos locais ou recursos da Internet? Funciona como esperado se você não enviar o servidor DNS para o cliente?

Se você passar todo o seu tráfego pelo servidor OpenVPN, não precisará mais se preocupar com o seu ISP bloqueando os servidores DNS públicos, pois, no que diz respeito ao seu ISP, você está gerando tráfego apenas para o seu VPS; a menos que o VPS esteja atrás do mesmo ISP.

adições digitais
fonte
Bem, o ubound pode passar em todos os testes que você mencionou e mais alguns, por isso tenho certeza de que não é o problema. Quanto ao motivo pelo qual preciso usar meu próprio servidor DNS, experimentei que, quando uso o DNS público acima, os clientes no Irã (onde milhões de sites estão bloqueados) não conseguem obter nenhuma página através de sua conexão openvpn, apesar do fato de que eles podem se conectar ao servidor openvpn. Daí o esforço. Obrigado
hbp
11
Você confirmou que eles podem obter uma página da Web via endereço IP assim que estiverem conectados? Isso garantiria realmente um problema de DNS e não um problema de roteamento. É muito comum ao configurar o OpenVPN para poder se conectar ao servidor, mas não receber nenhum tráfego de volta devido a uma rota de retorno ausente.
digitaladdictions
3

Acontece que, se você estiver tentando se conectar a partir de um cliente que não seja Windows, precisará executar algumas etapas extras:

No Linux

Coloque esta linha na configuração do seu cliente ( client.confou xxxx.ovpnarquivo)

dhcp-option DNS 11.22.33.44

Chame o cliente OpenVPN desta maneira:

$ openvpn --script-security 2 --config xxxx.ovpn

Isso funcionou para mim.

JonDoe297
fonte
Unrecognized option or missing or extra parameter(s) in [CMD-LINE]:1: script-security
Javier Buzzi 18/10
1

Testado no Ubuntu 18.04 em 13 set 2018

Existem outros comandos úteis para configurar o que você precisa via linha de comando. Mas no meu caso, você pode controlar sua conexão VPN com linha de comando e GUI.

sudo nmcli connection add type vpn vpn-type openvpn con-name la.vpn.contoso.com ifname --

ifname -- é o exigido por padrão, mas não afeta nada

sudo nmcli connection modify la.vpn.contoso.com ipv4.dns 172.16.27.1 sudo nmcli connection modify la.vpn.contoso.com ipv4.dns-search int.contoso.com sudo nmcli connection modify la.vpn.contoso.com ipv4.never-default yes

never-default não deve usar gateway remoto como rota padrão

E toque final muito mais interessado:

nmcli connection modify la.vpn.contoso.com vpn.data 'ca = /tmp/la.vpn.contoso.com/you/ca.crt, key = /tmp/you.key, dev = tun, cert = /tmp/you.crt, cert-pass-flags = 1, comp-lzo = adaptive, remote = la.vpn.contoso.com:1194, connection-type = tls'

Depois, você pode controlar o vpn com GUI ou usar os seguintes comandos:

sudo nmcli --ask connection up la.vpn.contoso.com sudo nmcli connection down la.vpn.contoso.com

vskubriev
fonte