web-dev-qa-db-fra.com

Autoriser le client OpenVPN de pousser ses propres serveurs DNS, quel que soit le DNS poussé de OpenVPN Server?

Un serveur OpenVPN est exécuté sur un debian et appuie un DNS dans le fichier de configuration du serveur:

Push "DHCP-Option DNS 8.8.8.8"

Existe-t-il une option pour permettre aux utilisateurs de modifier ce serveur DNS du côté du client?

Voici la prise, le serveur OpenVPN doit pousser un DNS car sinon, de nombreux clients OpenVPN ne pourront pas ouvrir de pages Web tant que les serveurs DNS définissent manuellement les paramètres réseau du système.

Mon objectif est d'appliquer automatiquement un serveur DNS par défaut aux utilisateurs non techniquement qualifiés, tout en permettant également aux utilisateurs d'ordinateurs qualifiés de définir leurs propres serveurs DNS.

Notez que la simple modification des paramètres DNS sur le PC tandis que l'option 'Push "DHCP-Option DNS 8.8.8.8"' est active sur le serveur OpenVPN, ne fait rien. Le DNS poussé par le serveur reste indépendamment des paramètres DNS locaux.

Des idées?

OpenVPN Server config:

# cat /etc/openvpn/openvpn.conf
server 10.186.35.0 255.255.255.0
port 1194
proto udp
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh1024.pem
ifconfig-pool-persist ipp.txt
#Push "route 0.0.0.0 0.0.0.0"
#Push "redirect-gateway"
Push "redirect-gateway def1 bypass-dhcp"
Push "dhcp-option DNS 8.8.8.8"
Push "dhcp-option DNS 8.8.4.4"
keepalive 10 120
comp-lzo
user nobody
group users
persist-key
persist-tun
status openvpn-status.log
verb 3
script-security 3
auth-user-pass-verify /etc/openvpn/auth-chap via-env
client-cert-not-required
duplicate-cn
management 127.0.0.1 5119
script-security 3 system
username-as-common-name
client-connect /etc/openvpn/scripts/clientconnect.sh
client-disconnect /etc/openvpn/scripts/clientdisconnect.sh
log-append /var/log/openvpn.log
log /var/log/openvpn.log

Mise à jour: Les systèmes d'exploitation des clients sont Windows et Mac

9
Dimi

À partir de 2017 (OpenVPN 2.4), cela est maintenant possible. Ajoutez cette ligne à votre fichier de configuration client:

pull-filter ignore "dhcp-option DNS"

et cela ignorera toutes les lignes de configuration poussées qui commencent par le texte cité.

Les options sont jumelles de haut en bas. La première correspondance est utilisée. Vous pouvez utiliser cela pour permettre quelques itinéraires et rejeter les autres, s'il convient à vos besoins.

Les trois mots-clés d'action sont accept, ignore et reject. Je n'ai pas découvert un cas d'utilisation pour reject.

14
Criggie

Dans la documentation officielle documentation OpenVPN Vous pouvez trouver:

[...]
--route-nopull
  When used with --client or --pull, accept options pushed by server EXCEPT for routes and 
  dhcp options like DNS servers.
  When used on the client, this option effectively bars the server from adding routes to the 
  client's routing table, however note that this option still allows the server to set the 
  TCP/IP properties of the client's TUN/TAP interface.
[...]

Malheureusement, en plus de ce que vous demandez, ceci a l'effet secondaire de désactiver également la redevance-passerelle fourni par votre configuration et cela peut représenter un problème, pour votre cas.

Ce que je suggère est une approche complètement différente.

Comme vous avez mentionné explicitement: "Mon objectif est d'appliquer automatiquement un serveur DNS par défaut aux utilisateurs non techniquement qualifiés, tout en permettant également aux utilisateurs d'ordinateurs qualifiés de définir leurs propres serveurs DNS." On dirait que tu sais que tu sais Exactement quels utilisateurs vous souhaitez fournir une configuration DNS-CONFIG et quels utilisateurs ne veulent pas fournir une telle configuration.

Par conséquent, au lieu de pousser votre configuration directement dans le fichier de configuration openvpn principal (... et, comme tel, fournissez une telle config to [~ # ~] tout [~ # ~ # ~] de vos utilisateurs), vous pouvez implémenter une configuration par utilisateur . Vous pouvez faire cela avec:

--client-config-dir dir
  Specify a directory dir for custom client config files. After a connecting client 
  has been authenticated, OpenVPN will look in this directory for a file having the 
  same name as the client's X509 common name. If a matching file exists, it will be
  opened and parsed for client-specific configuration options. If no matching file is
  found, OpenVPN will instead try to open and parse a default file called "DEFAULT", 
  which may be provided but is not required. Note that the configuration files must 
  be readable by the OpenVPN process after it has dropped it's root privileges.
  This file can specify a fixed IP address for a given client using --ifconfig-Push, as 
  well as fixed subnets owned by the client using --iroute.
  One of the useful properties of this option is that it allows client configuration 
  files to be conveniently created, edited, or removed while the server is live, without 
  needing to restart the server.
  The following options are legal in a client-specific context: --Push, --Push-reset, 
  --iroute, --ifconfig-Push, and --config.

Donc, comme pour la configuration principale, vous devriez Supprimer :

  [**** to be removed from the main config***]
  Push "dhcp-option DNS 8.8.8.8"
  Push "dhcp-option DNS 8.8.4.4"

and add Référence au répertoire / etc/openvpn/userconf (comme exemple. N'hésitez pas à choisir de choisir ce que vous voulez):

 [**** to be ADDED to the main config***]
 client-config-dir /etc/openvpn/userconf

Ensuite, dans un tel répertoire USERCONF, créez un fichier pour chacun de l'utilisateur que vous souhaitez fournir de tels DNS, y compris dans ce fichier, les deux lignes supprimées ci-dessus.

Évidemment, vous êtes libre d'affiner la configuration OpenVPN pour chaque utilisateur, sans limiter la personnalisation des deux lignes ci-dessus.

En tant que note finale, vous pouvez vous intéresser au fichier ccd-exclusif Paramètre.

4
Damiano Verzulli

Mon problème n'était pas exactement la même chose, mais les symptômes étaient suffisamment similaires pour que cette question apparaisse dans les résultats de la recherche, donc au cas où quelqu'un d'autre s'éloigne ici pour la même raison:

J'utilise tunnelblick , une interface graphique OpenVPN pour Mac OS. Mon serveur OpenVPN n'a pas été configuré pour appuyer sur les options DHCP ou DNS, mais le client utilisait toujours le serveur DNS sur VPN, au lieu du serveur DNS local et non VPN que je voulais utiliser.

La solution consistait à entrer dans les configurations de tunnelblick → onglet Paramètres et à modifier SET DNS/WINS vers Ne définissez pas de noms de noms .

1
Aldaviva

Merci pour @aldaviva, cela fonctionne sur mes macos 10.11.

Attachez ma capture d'écran.

enter image description here

0
Chu-Saing Lai