Client Openvpn, forcer le serveur DNS


10

Notre configuration Linux Ubuntu possède un serveur DNS (Bind 9).
Et resolv.confa son

  nameserver 127.0.0.1

Lorsque vous utilisez un openvpnclient sur ce Linux, le serveur de noms n'est pas modifié (par le serveur VPN) mais je voudrais le définir - uniquement pendant la session VPN - sur un autre serveur DNS spécifique x.y.z.t, en changeant la configuration du client openvpn.

Ensuite, à la openvpnfin de la session, le serveur de noms devrait être de retour 127.0.0.1.

Existe-t-il un moyen "propre" (c'est-à-dire une ligne dans le fichier de configuration du client openvpn) de le faire?

(Remarque: la configuration du serveur VPN ne peut pas être modifiée)

Réponses:


17

Après plus de recherche sur Google, pourrait trouver la réponse - ci-dessous si cela peut aider quelqu'un.

  • installez resolvconf qui peut enregistrer et restaurer le resolv.conffichier de configuration
  • ajouter un script à exécuter par openvpn , dans /usr/share/openvpn, nommé update-resolv-conf. Le script détermine ce qui devrait être le nouveau resolv.confet comment le restaurer (voir le lien ci-dessous)
  • ajouter

ces lignes

  script-security 2
  up /usr/share/openvpn/update-resolv-conf
  down /usr/share/openvpn/update-resolv-conf

dans le fichier de configuration du client openvpn.

Lisez ce wiki pour plus d'informations.


6
Les nouvelles installations d'OpenVPN incluent ce script avec l'installation. Au lieu de télécharger et d'installer manuellement sur /usr/share/openvpn/update-resolv-conf, vous pouvez le trouver préinstallé sur /etc/openvpn/update-resolv-conf.
Nate Lampton

Quelle version d'OpenVPN a commencé à inclure ce fichier?
lanoxx

1
Un peu tard pour la fête ici mais j'utilise 2.4.6et il a été installé pour moi
Roshan Bhumbra

1

Pensez à utiliser route-up/ route-downscripts sur votre client pour modifier votre configuration lors de la configuration de la connexion comme bon vous semble. Consultez les documents OpenVPN sur les détails pour savoir comment configurer cela et quelles variables vous pouvez utiliser dans ces scripts.


+1, intéressant et utile. La solution resolvconf via le haut et le bas (au-dessus ou au-dessous en fonction de la cote ..) est cependant plus pertinente et, imo, plus propre.
Anneau Ø

@ ring0 Je conseillerais d'utiliser route-upplutôt que de upminimiser les conditions de course. Lorsque le upscript est exécuté, la connexion n'est pas encore établie et vous n'avez aucune chance d'interroger le résolveur distant que vous définissez. Si vous démarrez le client OpenVPN dans une situation où la configuration de la connexion ne se terminerait pas, vous placez votre résolveur dans un état éventuellement non fonctionnel pendant une période prolongée. Voir la section "Ordre d'exécution des scripts" dans la page de manuel OpenVPN pour plus de détails.
le-wabbit

J'ai fait quelques tests, et le script up est appelé juste quand "Séquence d'initialisation terminée" est atteint, pas avant. Btw ne peut pas trouver de "route vers le bas" chez l'homme.
Anneau Ø

1

Ces informations ont été utiles pour m'aider à résoudre ce problème.

Je suis un utilisateur arch linux et ce que j'ai vu, c'est que lorsqu'un client Linux est utilisé avec Access Server, celui-ci est incapable de modifier les paramètres DNS sur le client en question ne résolvant pas l'hôte tel qu'il se trouve sur la documentation OPEN VPN

J'ai créé un script qui résout le problème et avec quelques paramètres supplémentaires gère les connexions openvpn via la ligne de commande.

https://gist.github.com/android10/ee5c3e93dbcf9b7b31e6ee768cbfd477

Voici la commande principale en cours d'exécution pour la connexion:

  nohup openvpn --config $OVPN_FILE_PATH --askpass $OVPN_PRIVATE_KEY_FILE_PATH \
  --script-security 2 \
  --setenv PATH '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin' \
  --up /etc/openvpn/scripts/update-systemd-resolved \
  --down /etc/openvpn/scripts/update-systemd-resolved \
  --down-pre \
  &>/dev/null &

Tout commentaire est plus que apprécié.


-2

echo "nameserver = wxyz"> /etc/resolv.conf
echo " nameserver = 127.0.0.1" >> /etc/resolv.conf


2
Cela semble inexact (pensez au chemin de recherche DNS et à la persistance du serveur de noms VPN), mais il est également difficile de savoir où vous voulez qu'il mette cela.
Falcon Momot

Il devrait y avoir un espace entre «nameserver» et l'IP.
lorenzog
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.