Comment récupérer automatiquement un nouveau serveur de noms sur une connexion VPN

11

Je lance Ubuntu Xenial 16.04

Nous utilisons openvpn pour nous connecter à un cloud privé virtuel. Ce cloud possède son propre serveur DNS (tout comme notre itinéraire local - domicile ou bureau).

Lorsque je me connecte au VPN, toutes les adresses IP de ce réseau sont disponibles mais je ne peux en atteindre aucune par nom d'hôte. La raison est simple: le fichier resolv.conf affiche toujours mon serveur de noms de bureau local. Si j'écrase manuellement le fichier resolv.conf pour avoir le bon serveur de noms, tout va bien.

Alors, comment puis-je le faire reconfigurer automatiquement resolv.conf lors de la connexion au VPN?

Puis-je me connecter à un événement système et exécuter un script?

Christian Bongiorno
la source
1
Normalement, il y a une option pour permettre au VPN de pousser son propre serveur DNS. Quel client utilisez-vous - tunnelblick?
Ryder
J'utilise le client openvpn officiel. Quelque part, j'ai lu que le processus VPN ne peut pas mettre à jour le DNS.
Christian Bongiorno
Avez-vous essayé l' --register-dnsoption? Vous pouvez également définir des options côté client, comme dhcp-options (le revers des instructions ici openvpn.net/index.php/open-source/documentation/howto.html#dhcp )
Ryder

Réponses:

8

Le package OpenVPN a un script pour cela dans /etc/openvpn/update-resolv-conf. Vous devez le configurer avec:

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

Cela récupérera les adresses de serveur DNS à partir des dhcp-option DNSoptions passées par le pair / serveur OpenVPN et configurera en resolvconfconséquence. Il gère dhcp-option DOMAINégalement.

Il n'est cependant pas parfait, car cela ajoutera ces serveurs de noms à la liste des serveurs de noms existants au lieu d'écraser la liste des serveurs de noms. Si vous utilisez openresolvle -xpeut être utilisé pour remplacer la configuration DNS au lieu de lui faire une pré-impression.


Si vous utilisez systemd-resolved, vous pouvez utiliser le /etc/openvpn/update-systemd-resolvedqui s'accroche à la systemd-revolvedplace de resolvconf.

script-security 2 
up /etc/openvpn/update-systemd-resolved
down /etc/openvpn/update-systemd-resolved
down-pre

Sur Debian, ce script est dans le openvpn-systemd-resolved.

ysdx
la source
2
au-dessus de ces 2 lignes, vous devrez également ajouter script-security 2ou exécuter votre openvpnavec--script-security 2
32r34wgf3e
0

Voici la solution que j'ai trouvée: Il y a un commutateur qui vous permet d'exécuter un script lorsque le tunnel est opérationnel. J'utilise le commutateur pour écraser essentiellement le fichier resolv.conf avec un fichier que je sais correct. C'est un hack total, je sais.

sudo openvpn --up reset-dns.sh --client client.ovpn

le script (reset-dns):

#!/bin/bash
cp ~/resolv.conf /etc/resolv.conf

Aussi, pour ceux qui disent "OMG! Vous exécutez ce tunnel en tant que root!" Il ne fonctionnera pas autrement; avant même mon piratage DNS.

Je suis définitivement ouvert à une meilleure voie. Le gestionnaire de réseau pour ubuntu ne fonctionnera tout simplement pas. J'ai coupé des tickets pour Ubuntu à plusieurs reprises

Christian Bongiorno
la source