¿Cómo empujar mi propio servidor DNS a OpenVPN?

27

He definido un no unido servidor DNS en mis VPS y parece que el trabajo. Necesito usar el servidor DNS en lugar de servidores DNS públicos porque algunos ISP han bloqueado las IP DNS públicas. Mi archivo openvpn.conf es:

    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 se sugiere aquí , traté de usar las IP de mi servidor (digamos 11.22.33.44). Entonces en lugar de

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

Acabo de poner

push "dhcp-option DNS 11.22.33.44"

En openvpn.conf arriba. Sin embargo, después de reiniciar openvpn, veo que mi cliente todavía puede conectarse al servidor OpenVPN pero ya no se pueden procesar páginas.

¿Qué puede estar mal aquí? ¿Como puedó resolver esté problema?

hbp
fuente

Respuestas:

31

En los Windows 10clientes, debe agregar las siguientes directivas a client.ovpn:

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

No se requieren más directivas para Windows.

En los Ubuntu 16.04clientes, es posible que deba agregar las siguientes directivas a client.ovpn:

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

Las últimas versiones de cliente OpenVPN para Windows no reconocen la opción DOMAIN-SEARCHcorrectamente y funcionan con DOMAIN.

vskubriev
fuente
¿Requiere esto una versión mínima particular de OpenVPN?
0xC0000022L
Creo que debería usar la IP de la puerta de enlace VPN (10.0.8.1), no la dirección IP de la puerta de enlace local del enrutador (192.168.1.1). Esa es una dirección IP de enrutador tan común que probablemente el enrutador de red no confiable al que están directamente conectados estará en la dirección 192.168.1.1.
carlin.scott
8

Dices que "parece funcionar". ¿Cómo verificaste esto? ¿Lo está basando en el hecho de que el servidor se inició sin errores o realizó algunas consultas en su contra?

Lo primero que haría es usar nslookup o dig para conectarse al servidor independiente y realizar algunas consultas. Sé que cavar está más de moda en estos días, pero sé que nslookup es mejor.


$ 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

Si esto no funciona, debe volver a mirar la configuración de DNS nuevamente.

¿Es este un servidor DNS primario o un servidor DNS en caché? ¿Estás tratando de consultar recursos locales o recursos de internet? ¿Funciona como se espera si no empuja su servidor DNS al cliente?

Si pasa todo su tráfico a través de su servidor OpenVPN, no debería tener que preocuparse de que su ISP bloquee más los servidores DNS públicos ya que, en lo que respecta a su ISP, solo está generando tráfico a su VPS; a menos que el VPS esté detrás del mismo ISP.

adicciones digitales
fuente
Bueno, ubound podría pasar todas las pruebas que mencionaste y algunas más, así que estoy bastante seguro de que ese no es el problema. En cuanto a por qué necesito usar mi propio servidor DNS, he experimentado que cuando uso el DNS público como se indicó anteriormente, los clientes en Irán (donde millones de sitios están bloqueados) no pueden obtener ninguna página a través de su conexión openvpn, a pesar de que pueden conectarse al servidor openvpn. De ahí el esfuerzo. Gracias
hbp
1
¿Has confirmado que pueden obtener una página web a través de la dirección IP una vez que están conectados? Esto solo aseguraría que realmente sea un problema de DNS y no un problema de enrutamiento. Es muy común al configurar OpenVPN para poder conectarse al servidor pero no recuperar el tráfico debido a la falta de una ruta de retorno.
digitaladdictions
3

Resulta que si está intentando conectarse desde un cliente que no es Windows, debe realizar un par de pasos adicionales:

En Linux

Ponga esta línea en la configuración de su cliente ( client.confo xxxx.ovpnarchivo)

dhcp-option DNS 11.22.33.44

Llame al cliente OpenVPN de esta manera:

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

Eso funcionó para mí.

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

Probado en Ubuntu 18.04 el 13 sep 2018

Hay otros comandos útiles para configurar lo que necesita a través de la línea de comandos. Pero en mi caso puedes controlar tu conexión VPN tanto con la línea de comando como con la GUI.

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

ifname -- es el requerido por defecto, pero no afecta 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 no debe usar la puerta de enlace remota como ruta predeterminada

Y mucho más interesante toque final:

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'

Luego puede controlar vpn con GUI o usar los siguientes comandos:

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

vskubriev
fuente