GNU/Linux >> Tutoriels Linux >  >> Ubuntu

Le client Openvpn n'obtient pas d'informations DNS ?

J'utilise un serveur OpenVPN exécuté sur un routeur installé avec DD-WRT et je l'utilise pour acheminer tout le trafic via le serveur VPN. Je m'y connecte à partir de plusieurs appareils :ordinateur portable Windows, appareils Android et machines Linux. Le problème que j'ai maintenant est récent et auparavant tout fonctionnait bien. Ce problème ne se produit que sur les machines clientes sous Linux (ubuntu 16.04). Le client Ubuntu n'obtient pas automatiquement les adresses du serveur DNS. Après quelques recherches, j'ai découvert que je devrais ajouter ce qui suit à la fin de la configuration du client :

script-security 2
up /etc/openvpn/update-resolv-conf
down /etc/openvpn/update-resolv-conf

Cela n'a pas aidé, j'ai donc ajouté :

dhcp-option DNS a.b.c.d
dhcp-option DNS e.f.g.h

Les adresses IP sont extraites du routeur et cela fait fonctionner les choses. Jusqu'à présent, il suffisait d'avoir "redirect-gateway def1" dans la configuration du client.

Je n'aime pas cette solution d'ajout des commandes "dhcp-option DNS" car je dois surveiller tout changement du serveur DNS. Existe-t-il un moyen de se débarrasser de l'ajout de l'option "dhcp-option DNS" ?

Réponse acceptée :

J'ai eu le même problème mais j'ai réussi à le résoudre en utilisant le hack suivant :
Au lieu de up /etc/openvpn/update-resolv-conf J'ai créé un fichier nommé up.sh dans /etc/openvpn.
Exécutez la commande sudo gedit /etc/openvpn/up.sh et collez ce qui suit :

#! /bin/bash
DEV=$1

if [ ! -d /tmp/openvpn ]; then
mkdir /tmp/openvpn
fi
CACHE_NAMESERVER="/tmp/openvpn/$DEV.nameserver"
echo -n "" > $CACHE_NAMESERVER

dns=dns
for opt in ${!foreign_option_*}
do
eval "dns=${$opt#dhcp-option DNS }"
if [[ $dns =~ [0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3} ]]; then
if [ ! -f /etc/resolv.conf.default ]; then
cp /etc/resolv.conf /etc/resolv.conf.default
fi

cat /etc/resolv.conf | grep -v ^# | grep -v ^nameserver > /tmp/resolv.conf
echo "nameserver $dns" >> /tmp/resolv.conf
echo $dns >> $CACHE_NAMESERVER
cat /etc/resolv.conf | grep -v ^# | grep -v "nameserver $dns" | grep nameserver >> /tmp/resolv.conf
mv /tmp/resolv.conf /etc/resolv.conf

fi
done

Enregistrez-le et exécutez sudo chmod +x /etc/openvpn/up.sh Créez ensuite un autre fichier /etc/openvpn/down.sh et collez-y ce qui suit

#! /bin/bash
echo "Restoring original nameservers"
rm -f /etc/resolv.conf
ln -s /run/resolvconf/resolv.conf /etc/resolv.conf 
echo "Done restoring nameservers cheers"

Enregistrez-le et exécutez sudo chmod +x /etc/openvpn/down.sh

Supprimez maintenant les lignes :

script-security 2
up /etc/openvpn/update-resolv-conf
down /etc/openvpn/update-resolv-conf

Et remplacez-les par :

 script-security 2
    up /etc/openvpn/up.sh
    down /etc/openvpn/down.sh

Ubuntu
  1. Qu'est-ce qui écrase /etc/resolv.conf à chaque démarrage ?

  2. Ubuntu - /usr/bin/host ne récupère pas les modifications apportées à /etc/hosts même après le redémarrage ?

  3. Qu'est-il arrivé à /etc/apt/apt.conf ?

  4. /etc/x11/xorg.conf n'existe pas ??

  5. Pourquoi /bin/sh pointe-t-il vers /bin/dash et non /bin/bash ? ?

Exemple de fichier /etc/mke2fs.conf

Dans /etc/resolv.conf, que fait exactement l'option de configuration de recherche ?

Comment rendre l'adresse du serveur de noms permanente dans /etc/resolv.conf ?

/etc/passwd affiche l'utilisateur dans un groupe, mais /etc/group ne le fait pas

Pourquoi /etc/resolv.conf pointe-t-il sur 127.0.0.53 ?

Différence entre /etc/hosts et /etc/resolv.conf