web-dev-qa-db-fra.com

Réseau utilisant uniquement un DNS lors de la connexion au VPN

Mon entreprise a un VPN auquel je dois me connecter. Dans OSX, je le fais en utilisant openvpn avec la 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-openvpn et ajouté une nouvelle connexion VPN (une tentative d'importation du fichier de configuration a provoqué un crash) avec le même jeu d'options de configuration: captures d'écran de mes paramètres

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

Si je modifie /etc/NetworkManager/NetworkManager.conf, commente la ligne dns=dnsmasq et redémarre network-manager, je peux résoudre les domaines internes de mon entreprise, mais d'autres domaines, comme google.com, ne seront pas résolus du tout. Je me suis assuré de régler mon "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 dnsmasq et de modifier /etc/resolvconf/resolv.conf.d/base afin qu'il contienne nameserver 127.0.1.1, puis d'exécuter Sudo resolveconf -u, mais aucun domaine ne sera résolu à 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: Dnsmasq n’avait pas été installé, ce que j’ai pensé être le cas par défaut. Néanmoins, si je l'installe, réactivez-le dans /etc/NetworkManager/NetworkManager.conf, ajoutez l'adresse du serveur de noms local dans /etc/resolvconf/resolv.conf.d/base, redémarrez tous les services et connectez-vous au VPN, je peux résoudre les domaines à partir du DNS de l'entreprise, mais je ne peux résoudre aucun autre domaine. . Donc, fondamentalement, la même situation que lorsque j’ai totalement désactivé Dnsmasq.

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

9
Tommy Brunn

À partir de votre configuration, votre installation dnsmasq obtient la liste des serveurs DNS à utiliser à partir de /etc/resolv.conf. Par défaut, Dnsmasq essaie de privilégier l'utilisation de serveurs DNS actifs, mais envoie uniquement une requête donnée à un seul serveur DNS. Cela peut poser problème si vous avez plusieurs serveurs DNS pouvant/ne serviront que certaines requêtes.

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

Ensuite, vous devrez éditer /etc/default/dnsmasq et ajouter ou éditer la ligne DNSMASQ_OPTS= pour 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, tel que ~/resolv.conf, définissez /etc/resolv.conf avec nameserver 127.0.0.1 et définissez l'option suivante dans /etc/dnsmasq.conf:

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

Cela devrait configurer votre système pour qu'il interroge votre installation Dnsmasq sur DNS. Il utilisera à la fois votre serveur DNS local et le serveur DNS VPN pour chaque requête.

Edit: Vous pouvez trouver les serveurs DNS que vous utilisez actuellement pour une connexion particulière à l'aide de l'outil nmcli. 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 sur et sur le VPN. J'espère que ça aide.

Edit 2: En regardant vos tables de routage, il apparaît que votre administrateur VPN vous a configuré pour router 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 lorsque vous êtes sur le VPN, vous essayez d'effectuer des recherches DNS normales via le VPN et c'est ce qui échoue.

Selon votre configuration de VPN, vous pouvez utiliser ce moyen de différentes manières:

  • Si le VPN vous permet d'accéder à Internet via le réseau de l'entreprise, mais n'effectue pas de requêtes DNS sur des serveurs sur Internet, ajoutez des itinéraires à vos serveurs DNS, de la manière suivante: Sudo route add -Host 83.255.245.11 gw 192.168.0.1 et Sudo route add -Host 193.150.193.150 gw 192.168.0.1 après la connexion 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 de votre ordinateur pour qu'ils pointent à 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 routes réseau pour accéder à un équipement exclusivement VPN.

Vous devrez peut-être ajuster votre table de routage dans le cas connecté au VPN indiqué dans votre deuxième Pastebin 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

Ajoutez ensuite les itinéraires nécessaires pour accéder aux équipements de l'entreprise. Dans la table de routage présentée 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.

3
jkt123

Il y a certaines lacunes que je ne peux pas combler pour vous en ce qui concerne la façon de faire en sorte que NetworkManager coordonne les choses pour vous. J'essaierai cependant de clarifier comment les choses qu'il coordonne doivent fonctionner. Pas une réponse parfaite, mais j'espère utile. En fait, étant donné qu’il s’agit d’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. Dans ce cas, il serait préférable que votre configuration VPN achemine uniquement les plages de réseau appropriées vers le VPN et que la route par défaut soit dirigée vers votre routeur local, comme auparavant. Ce serait bien si les entreprises configurent leurs VPN pour acheminer uniquement le trafic ou leurs réseaux, mais malheureusement, cela semble être 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 fonctionne DNS. 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 que le recours à un autre serveur DNS soit considéré comme normal. Cela signifie que vous avez besoin d'un résolveur DNS qui répondra à votre guise, que la demande concerne le réseau de l'entreprise ou non.

Peut-être que le réseau de votre entreprise répond aux requêtes DNS relatives à l'Internet au sens large, auquel cas vous venez de l'utiliser, et c'est probablement OK. Sinon, vous avez besoin d'un serveur DNS local qui transfère les demandes des domaines associés à la société à leur serveur DNS et, le cas échéant, d'autres demandes ailleurs.

on peut dire à dnsmasq de transférer les demandes de domaines spécifiques à des serveurs DNS en amont spécifiques. par exemple. reportez-vous à l’option --server décrite dans la page de manuel dnsmasq.conf. Je ne sais pas bien comment faire en sorte que networkmanager joue à Nice avec ça (c'est ce que je cherche actuellement à découvrir).

0
mc0e