Réseau utilisant uniquement un DNS lorsqu'il est connecté au VPN

9

Mon entreprise dispose d'un VPN auquel je dois me connecter. Dans OSX, je fais cela en utilisant openvpnla configuration suivante:

client
dev tun
proto udp
remote <GATEWAY_ADDRESS> <PORT>
resolv-retry infinite
nobind
user nobody
group nobody
persist-key
persist-tun
ca /Users/Tommy/.openvpn/dev/ca-dev.crt
cert /Users/Tommy/.openvpn/dev/tommy.brunn-20131122-dev.crt
key /Users/Tommy/.openvpn/dev/tommy.brunn-20131122-dev.key
ns-cert-type server
tls-auth /Users/Tommy/.openvpn/dev/ta-dev.key 1
cipher BF-CBC
comp-lzo
verb 3
auth-nocache
;daemon
;writepid openvpn.pid

Dans Ubuntu, j'ai installé network-manager-openvpnet ajouté une nouvelle connexion VPN (essayer d'importer le fichier de configuration a provoqué un plantage) avec les mêmes options de configuration définies: Captures d'écran de mes paramètres

Une fois que je me suis connecté au VPN, je ne peux résoudre aucun domaine.

Si je modifie /etc/NetworkManager/NetworkManager.conf, commente la ligne dns=dnsmasqet redémarre network-manager, je peux résoudre les domaines internes de mon entreprise, mais d'autres domaines comme google.com ne résoudront pas du tout. Je me suis assuré de définir ma "Méthode" sur "Adresses automatiques (VPN) uniquement" dans les onglets IPv4 et IPv6 du gestionnaire de réseau pour ma connexion VPN, mais cela ne semble pas faire de différence.

J'ai également essayé de réactiver dnsmasqet de modifier /etc/resolvconf/resolv.conf.d/base pour contenir nameserver 127.0.1.1, puis de l'exécuter sudo resolveconf -u, mais aucun domaine ne se résoudra à nouveau.

Ce que j'aimerais, c'est pouvoir me connecter à mon VPN afin que les domaines poussés par le serveur DNS de mon entreprise soient résolus de cette façon et que tous les autres domaines soient résolus normalement.

EDIT: Il s'avère que dnsmasq n'était pas réellement installé, ce que je pensais que ce serait par défaut. Néanmoins, si je l'installe, le réactive /etc/NetworkManager/NetworkManager.conf, ajoute l'adresse du serveur de noms local /etc/resolvconf/resolv.conf.d/base, redémarre tous les services et me connecte au VPN, je peux résoudre des domaines à partir du DNS de l'entreprise, mais je ne peux pas résoudre d'autres domaines. Donc, fondamentalement, la même situation que lorsque j'ai désactivé complètement dnsmasq.

EDIT: Contenu de /etc/dnsmasq.conf: http://paste.ubuntu.com/7297231/

Tommy Brunn
la source
Pouvez-vous nous montrer vos paramètres dnsmasq? Dnsmasq obtient généralement ses serveurs DNS en amont à partir de /etc/resolv.conf, donc si vous n'avez pas changé cela, vous ne faites probablement que tirer DNS sur le VPN.
jkt123
Sûr. J'ai ajouté un lien vers mon/etc/dnsmasq.conf
Tommy Brunn

Réponses:

4

À partir de votre configuration, votre installation dnsmasq obtient la liste des serveurs DNS à utiliser /etc/resolv.conf. Par défaut, dnsmasq essaie de favoriser l'utilisation de serveurs DNS qui sont en place, mais n'enverra qu'une demande donnée à un seul serveur DNS. Cela peut entraîner des problèmes si vous disposez de plusieurs serveurs DNS qui peuvent / ne pourront servir que certaines requêtes.

Je pense que vous pouvez résoudre ce problème en vous assurant que vous disposez d'un serveur DNS sur votre réseau local (celui que vous utilisez lorsque vous n'êtes pas connecté au VPN) /etc/resolv.conf, ainsi que le serveur DNS sur le réseau d'entreprise que vous souhaitez utiliser sur le VPN.

Ensuite, vous devrez modifier /etc/default/dnsmasqet ajouter ou modifier la DNSMASQ_OPTS=ligne à inclure --all-servers.

Si vous ne parvenez toujours pas à obtenir des requêtes DNS avec cette configuration, copiez le fichier resolv.conf que vous avez créé au cours des étapes ci-dessus vers un autre emplacement, comme ~/resolv.conf, configurez /etc/resolv.confavec nameserver 127.0.0.1et définissez l'option suivante dans /etc/dnsmasq.conf:

resolv-file=/home/your_username/resolv.conf

Cela devrait configurer votre système pour interroger votre installation dnsmasq pour DNS, et il utilisera à son tour à la fois votre serveur DNS local et le serveur DNS VPN pour chaque requête.

Modifier : vous pouvez trouver les serveurs DNS que vous utilisez actuellement pour une connexion particulière à l'aide de l' nmclioutil. Pour trouver les serveurs DNS utilisés par ma connexion sans fil, j'ai utilisé la syntaxe suivante:

nmcli dev list iface wlan0 | grep IP4.DNS

Si vous exécutez cette commande alors que vous n'êtes pas connecté à votre VPN, puis à nouveau lorsque vous êtes connecté et que vous êtes en mesure de résoudre vos adresses d'entreprise, vous devez obtenir votre liste de serveurs DNS hors et sur le VPN. J'espère que ça aide.

Edit 2 : En regardant vos tables de routage, il semble que votre administrateur VPN vous ait configuré pour acheminer tout votre trafic via le VPN pendant que vous êtes connecté (votre passerelle par défaut passe à une adresse VPN). Étant donné que vos deux serveurs DNS sont des adresses publiques et qu'aucune route spécifique n'est configurée pendant que vous êtes sur le VPN, vous essayez de faire des recherches DNS normales via le VPN et c'est ce qui échoue.

Vous pouvez avoir deux façons de faire fonctionner cela, selon votre configuration VPN:

  • Si le VPN vous permet d'accéder à Internet via le réseau d'entreprise, mais pas d'effectuer des requêtes DNS sur les serveurs sur Internet, ajoutez des routes à vos serveurs DNS comme ceci:, sudo route add -host 83.255.245.11 gw 192.168.0.1et sudo route add -host 193.150.193.150 gw 192.168.0.1après vous être connecté au VPN.

  • Si le VPN ne vous permet pas d'accéder à Internet via le réseau d'entreprise, vous devrez modifier les paramètres de passerelle par défaut sur votre ordinateur pour pointer sur 192.168.0.1 après vous être connecté au VPN. Dans ce cas, vous souhaiterez configurer votre passerelle par défaut habituelle, puis ajouter des itinéraires réseau pour accéder aux équipements VPN uniquement.

Vous devrez peut-être réduire votre table de routage dans le boîtier connecté au VPN indiqué dans votre deuxième collerette comme suit:

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.0.1     0.0.0.0         UG    0      0        0 eth0
192.168.0.0     0.0.0.0         255.255.255.0   U     1      0        0 eth0
10.100.0.0      10.100.0.105    255.255.255.0   UGH   0      0        0 tun0
10.100.0.105    0.0.0.0         255.255.255.255 UH    0      0        0 tun0

Ensuite, ajoutez des itinéraires selon vos besoins afin d'accéder à l'équipement de l'entreprise. Dans le tableau de routage ci-dessus, j'ai supposé un réseau / 24 sur le VPN, ce qui peut être incorrect. Vous devrez définir le masque de manière appropriée.

jkt123
la source
Comment pourrais-je trouver les adresses de mon serveur DNS local et de celui du réseau d'entreprise?
Tommy Brunn
J'ai modifié ma réponse pour fournir ces informations.
jkt123
Selon nmcli, j'obtiens exactement les mêmes serveurs DNS lorsque je suis connecté au VPN que lorsque je ne le suis pas, même si je ne devrais pas l'être, car je peux résoudre un domaine interne sur le réseau de l'entreprise lorsque je '' m connecté.
Tommy Brunn
Lorsque vous avez couru nmclisans connexion VPN, avez-vous pu résoudre DNS correctement? Sinon, vous devez vous déconnecter du VPN, vous assurer que votre DNS fonctionne correctement, puis exécuter nmcli.
jkt123
Oui, j'ai pu résoudre le DNS normalement une fois déconnecté du VPN. Exemple de sortie: paste.ubuntu.com/7345250
Tommy Brunn
0

Il y a des lacunes que je ne peux pas combler pour vous concernant la façon de faire en sorte que NetworkManager coordonne les choses pour vous. Je vais essayer de clarifier comment les choses qu'il coordonne doivent fonctionner. Pas une réponse parfaite, mais j'espère utile. En fait, étant donné que c'est une vieille question, c'est vraiment pour la postérité.

Vous ne voulez probablement pas utiliser le VPN d'entreprise, sauf pour les connexions au réseau d'entreprise. Cela étant, il serait préférable que votre configuration VPN achemine uniquement les plages réseau appropriées vers le VPN et conserve la route par défaut pointant vers votre routeur local, comme précédemment. Ce serait bien si les entreprises configuraient leurs VPN pour acheminer uniquement le trafic ou leurs réseaux, mais malheureusement cela semble rare. Heureusement, vous pouvez configurer les itinéraires dans votre configuration locale.

Cela vous laisse toujours avec un problème DNS potentiel. Les commentaires de jtk123 sur ce que dnsmasq fait avec DNS ne sont pas spécifiques à dnsmasq - c'est ainsi que DNS fonctionne. Si un client DNS ou un résolveur intermédiaire obtient une réponse indiquant qu'une entrée DNS n'existe pas, il n'est pas normal de se rabattre sur la demande d'un autre serveur DNS. Cela signifie que vous avez besoin d'un résolveur DNS qui répondra comme vous le souhaitez, que la demande concerne ou non le réseau de l'entreprise.

Peut-être que le réseau de votre entreprise répond aux requêtes DNS relatives à Internet en général, auquel cas vous ne l'utilisez que, et c'est probablement OK. Sinon, vous avez besoin d'un serveur DNS local qui transfère les demandes de domaines associés à l'entreprise à leur serveur DNS et transfère d'autres demandes ailleurs, le cas échéant.

dnsmasq peut être invité à transmettre des demandes de domaines spécifiques à des serveurs DNS en amont spécifiques. par exemple, voir l'option --server comme indiqué dans la page de manuel dnsmasq.conf. Je ne sais pas comment faire pour que networkmanager joue bien avec cela (c'est ce que je cherche actuellement à découvrir).

mc0e
la source