Comment définir un serveur DNS dans openvpn?

17

J'ai configuré un serveur openvpn avec une clé statique (le mode de certificat n'est pas utilisable en raison du DPI sur la passerelle nationale), mais je ne parviens pas à changer le DNS automatiquement après la connexion. J'ai cherché sur Internet et SE, et tout le monde suggère l'utilisation dhcp-option.

J'ai essayé d'ajouter cette ligne à client.ovpn

dhcp-option DNS 8.8.8.8

Il n'y a aucun effet. J'ai essayé d'ajouter cette ligne dans le serveur conf

push "dhcp-option DNS 8.8.8.8"

Ni l'un ni l'autre n'a d'effet.

En fait, selon le manuel,

--dhcp-option type [parm]

Définissez les propriétés TAP-Win32 TCP / IP étendues, doivent être utilisées avec --ip-win32 dynamic ou --ip-win32 adaptive.

Mais mon client est une machine Mac, un serveur Linux. Des solutions au problème?

Siyuan Ren
la source
1
Vous devez mentionner quel client vous utilisez sur la machine OSX.
FloHimself
2
@FloHimself: l'utilitaire de ligne de commande standard openvpn.
Siyuan Ren

Réponses:

7

Sur un système Linux, vous devez exécuter un script externe .

Voici la documentation: https://wiki.archlinux.org/index.php/OpenVPN#DNS

Les scripts se trouvent ici ou sur une version Linux plus récente ici et vous pouvez les appeler en ajoutant ceci dans la configuration du client openvpn:

script-security 2
up /etc/openvpn/update-resolv-conf
down /etc/openvpn/update-resolv-conf
Damien
la source
1
Si votre version Linux utilise NetworkManager, consultez les modifications ànmcli utiliser .
palswim
5

Je ne suis pas un expert, mais en lisant la manpage ci-dessous votre citation:

--dhcp-option type [parm]

...

Notez que si --dhcp-option est poussé via --push vers un client non-Windows , l'option sera enregistrée dans l'environnement du client avant l'appel du script up, sous le nom "foreign_option_ {n}".

et sous Foreign_option_ {n} :

foreign_option_ {n}

Une option envoyée via --push à un client qui ne la prend pas en charge nativement, telle que --dhcp-option sur un système non Windows , sera enregistrée dans cette séquence de variables d'environnement avant l' exécution du script --up .

Ainsi, le openvpnclient de ligne de commande ne modifie pas automatiquement la configuration DNS sur votre machine OSX après avoir établi la connexion. Mais comme les options DNS sont enregistrées dans l'environnement du client, vous pouvez spécifier un script pour ajouter les serveurs poussés à la configuration DNS actuelle du système avec l' --upoption:

--up cmd

Exécutez la commande cmd après l'ouverture réussie du périphérique TUN / TAP (modification de l'UID avant l'utilisateur).

cmd se compose d'un chemin d'accès au script (ou programme exécutable), éventuellement suivi d'arguments. Le chemin et les arguments peuvent être entre guillemets simples ou doubles et / ou échappés à l'aide d'une barre oblique inverse, et doivent être séparés par un ou plusieurs espaces.

Par exemple, Tunnelblick le fait également en utilisant ce script .

Une autre solution pourrait être un script qui a été publié sur la liste de diffusion openvpn sur les clients DNS pour OS X - le guide définitif .

FloHimself
la source
Et l'iPhone? Sans jailbreak, j'imagine qu'il n'y a pas de bash ou de commande pour changer le DNS automatiquement.
Siyuan Ren
@SiyuanRen Sans jailbraking, vous n'utilisez probablement pas le client openvpn en ligne de commande sur un iPhone ...
FloHimself
L'application officielle openvpn charge simplement un fichier de configuration texte et l'exécute. Il n'y a plus de fonctionnalité.
Siyuan Ren
@SiyuanRen Eh bien, l'application openvpn officielle n'est pas l'application en ligne de commande dont il est question ici.
FloHimself
Cela ressemble à un hack. Lorsque je me connecte avec PPTP ou L2TP, une interface dédiée est disponible dans les préférences Réseau, avec leurs seuls IP et DNS. OpenVPN me demande de modifier les paramètres DNS des autres interfaces?
Siyuan Ren
4

J'ai eu le même problème avec les deux OS Linux (serveur et client), et j'ai résolu l'installation de dnsmasq sur le serveur manquant

donc mes pas:

apt-get install dnsmasq

dans server.conf

push "redirect-gateway def1" push "dhcp-option DNS 8.8.8.8" push "dhcp-option DNS 8.8.4.4"

Et je pouvais me connecter et parcourir les domaines via l'IP du serveur, en me connectant avec NetWorkManager avec des ensembles DNS à automatique

Maddish
la source
-1

Ajoutez cette commande à votre fichier de configuration côté client.

# put actual dns name here
dhcp-option DNS 10.11.12.13 

Cela fonctionnera certainement ..

Vinood NK Maheshwari
la source