Comment pousser mon propre serveur DNS vers OpenVPN?

27

J'ai défini un serveur DNS non lié sur mon VPS et il semble fonctionner. Je dois utiliser le serveur DNS au lieu des serveurs DNS publics car certains FAI ont bloqué les adresses IP DNS publiques. Mon fichier openvpn.conf est:

    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

Comme il est suggéré ici , j'ai essayé d'utiliser les adresses IP de mon serveur (disons 11.22.33.44). Donc au lieu de

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

Je viens de mettre

push "dhcp-option DNS 11.22.33.44"

Dans openvpn.conf ci-dessus. Cependant, après avoir redémarré openvpn, je constate que mon client peut toujours se connecter au serveur OpenVPN mais aucune page ne peut plus être rendue.

Que peut-il y avoir de mal ici? Comment puis-je résoudre ce problème?

hbp
la source

Réponses:

31

Sur les Windows 10clients, vous devez ajouter les directives suivantes à client.ovpn:

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

Aucune autre directive n'est requise pour les fenêtres.

Sur les Ubuntu 16.04clients, vous devrez peut-être ajouter les directives suivantes à client.ovpn:

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

Les dernières versions du client OpenVPN pour Windows ne reconnaissent pas DOMAIN-SEARCHcorrectement l' option et fonctionnent avec DOMAIN.

vskubriev
la source
Est-ce que cela nécessite une version OpenVPN minimale particulière?
0xC0000022L
Je pense que vous devriez utiliser l'IP de la passerelle VPN (10.0.8.1), pas l'adresse IP de la passerelle locale du routeur (192.168.1.1). C'est une telle adresse IP de routeur commun que le routeur réseau non fiable auquel ils sont directement connectés sera probablement à l'adresse 192.168.1.1.
carlin.scott
8

Vous dites que "cela semble fonctionner". Comment avez-vous vérifié cela? Le basez-vous sur le fait que le serveur a démarré sans erreur ou avez-vous réellement effectué des requêtes sur lui?

La première chose que je ferais est d'utiliser nslookup ou de creuser pour se connecter au serveur indépendant et effectuer certaines requêtes. Je sais que creuser est plus à la mode ces jours-ci, mais je connais mieux 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

Si cela ne fonctionne pas, vous devez à nouveau revoir la configuration DNS.

S'agit-il d'un serveur DNS principal ou d'un serveur DNS de mise en cache? Essayez-vous d'interroger des ressources locales ou des ressources Internet? Cela fonctionne-t-il comme prévu si vous ne poussez pas votre serveur DNS vers le client?

Si vous passez tout votre trafic via votre serveur OpenVPN, vous ne devriez plus avoir à vous soucier du fait que votre FAI bloque les serveurs DNS publics, car en ce qui concerne votre FAI, vous ne générez que du trafic vers votre VPS; sauf si le VPS est derrière le même FAI.

addictions numériques
la source
Eh bien ubound pourrait passer tous les tests que vous avez mentionnés et quelques autres, donc je suis sûr que ce n'est pas le problème. Quant à savoir pourquoi je dois utiliser mon propre serveur DNS, j'ai constaté que lorsque j'utilise un DNS public comme ci-dessus, les clients en Iran (où des millions de sites sont bloqués) ne peuvent pas obtenir de page via leur connexion openvpn, malgré le fait que ils peuvent se connecter au serveur openvpn. D'où l'effort. Merci
hbp
1
Avez-vous confirmé qu'ils peuvent obtenir une page Web via l'adresse IP une fois qu'ils sont connectés? Cela garantirait simplement qu'il s'agit bien d'un problème DNS et non d'un problème de routage. C'est très courant lors de la configuration d'OpenVPN pour pouvoir se connecter au serveur mais ne pas récupérer de trafic en raison d'une route de retour manquante.
digitaladdictions
3

Il s'avère que si vous essayez de vous connecter à partir d'un client non Windows, vous devez effectuer quelques étapes supplémentaires:

Sous Linux

Mettez cette ligne sur votre configuration client ( client.confou xxxx.ovpnfichier)

dhcp-option DNS 11.22.33.44

Appelez le client OpenVPN de cette manière:

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

Cela a fonctionné pour moi.

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

Testé sur Ubuntu 18.04 au 13 sept. 2018

Il existe une autre commande utile pour configurer ce dont vous avez besoin via la ligne de commande. Mais dans mon cas, vous pouvez contrôler votre connexion VPN à la fois avec la ligne de commande et l'interface graphique.

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

ifname -- est requis par défaut, mais n'affecte rien

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 ne doit pas utiliser la passerelle distante comme route par défaut

Et touche finale beaucoup plus intéressée:

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'

Ensuite, vous pouvez contrôler vpn avec GUI ou utiliser les commandes suivantes:

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

vskubriev
la source