Utilisation de WPAD (Web Proxy Auto-Discovery Protocol) sous Windows

Le WPAD (Web Proxy Auto-Discovery) vous permet de configurer facilement les paramètres proxy sur les clients de votre réseau. L’idée derrière WPAD est qu’un client peut utiliser DHCP et/ou DNS pour trouver un serveur Web sur votre réseau disposant d’un fichier de configuration PAC avec des paramètres de proxy (http://yourdomain/wpad.dat).

Créer un fichier de découverte automatique du proxy (wpad.dat)

Une spéciale CAP (Proxy Auto Configuration) décrit les règles d’utilisation d’un proxy. Le nom prédéfini du fichier PAC est wpad.dat. Ce fichier contient des règles qui déterminent si le client doit utiliser un serveur proxy lors de la connexion à une ressource spécifique (HTTP, HTTPS ou FTP) ou y accéder directement.

La syntaxe Javascript est utilisée dans le fichier wpad.dat. Vous pouvez définir une adresse de serveur proxy par défaut, ainsi que différentes exceptions et règles pour savoir quand un client doit (ou ne doit pas) utiliser un proxy pour les connexions.

Regardons un exemple simple de syntaxe wpad.dat :

function FindProxyForURL(url, host)
{ if (shExpMatch(host, "127.0.0.1" )) {return "DIRECT";} if (shExpMatch(host, "*/localhost*" )) {return "DIRECT";} if (isInNet(host, "192.0.0.0", "255.0.0.0")) {return "DIRECT";} if (isInNet(host, "10.0.0.0", "255.0.0.0")) {return "DIRECT";} // Dedicated proxy for a specific IP network if (isInNet(myIpAddress(), "172.15.1.0", "255.255.255.0")) {return "PROXY prx2.woshub.com:8080";} if (dnsDomainIs(host, "*.corp.woshub.com")) {return "DIRECT";} // Local addresses to be accessed directly if ( shExpMatch(url,"http://*.woshub.com") || shExpMatch(url,"https://*.woshub.com") || shExpMatch(url,"ftp://*.woshub.com") ) return "DIRECT"; // If the URL does not contain dots in the address, the client should access it directly. if (isPlainHostName(host)) {return "DIRECT";} if (shExpMatch(host,"bank.example.com")) {return "DIRECT";} // Use a separate proxy server to access a specific wildcard domain if (shExpMatch(url,"*.microsoft.com*")){return "PROXY prx2.woshub.com:8080";} //a default proxy server address return "PROXY proxy.woshub.com:3128";
}

Wpad.dat - syntaxe du fichier de configuration automatique du proxy (PAC)

Un fichier PAC se compose généralement d’un seul RechercherProxyForURL fonction qui renvoie l’adresse proxy au client en fonction de l’URL demandée. Dans ce cas, le retour «DIRECTLa directive  » indique qu’une connexion directe (sans proxy) doit être utilisée pour accéder à ces adresses IP et domaines. Si le site Web auquel un client accède ne correspond à aucune des règles du fichier WPAD, le serveur proxy par défaut (PROXY proxy.woshub.com:3128) est utilisé pour y accéder.

Vous pouvez utiliser n’importe lequel des serveurs proxy populaires tels que Squid ou 3proxy.

Vous pouvez utiliser le fichier PAC comme moyen simple de filtrage de contenu pour refuser l’accès à certains sites Web ou pour empêcher l’accès à des domaines contenant des publicités.

proxy_empty = "PROXY 127.0.0.1:3128"; // a link to an non-existing proxy
if ( shExpMatch(url,"*://twitter.com/*")) { return proxy_empty; }
if ( shExpMatch(url,"*://spam.*")) { return proxy_empty; }
if ( shExpMatch(url,"*doubleclick.net/*")) { return proxy_empty; }

Différentes versions du système d’exploitation ont des restrictions sur la taille maximale du fichier PAC. Pour Windows, la taille du fichier wpad.dat ne doit pas dépasser 1 Mo.

Placez wpad.dat sur un serveur Web HTTP de votre réseau local et autorisez tous les utilisateurs à le lire. Vous pouvez utiliser un serveur Web basé sur Linux (nginx, apache, lighttpd) ou Windows (IIS ou un simple serveur HTTP basé sur PowerShell).

Dans cet exemple, je publierai wpad.dat sur un serveur Web IIS sur un contrôleur de domaine. Copie wpad.dat à C:inetpubwwwroot.

S’il existe des clients n’appartenant pas à un domaine sur votre réseau, accordez à IUSR et IIS APPPOOLDefaultAppPool des autorisations en lecture seule sur le dossier IIS.

Ouvrez le gestionnaire IIS (inetmgr), sélectionner Types MIME dans les paramètres du site Web IIS et ajoutez un nouveau type :

  • Extension du nom de fichier : .dat
  • Type MIME : application/x-ns-proxy-autoconfig

wpad.dat sur le serveur Web IISwpad.dat sur le serveur Web IIS

Redémarrez IIS.

Configuration des enregistrements WPAD dans DHCP ou DNS

Vous devez maintenant configurer les serveurs DHCP ou les enregistrements DNS pour que les clients découvrent le fichier PAC.

Si vous utilisez un serveur DHCP, vous pouvez définir une adresse WPAD pour les clients à l’aide de l’option 252. Dans cet exemple pour DHCP exécutant Windows Server :

  1. Ouvrez la console DHCP (dhcpmgmt.msc), cliquez sur la section IPv4 et sélectionnez Définir des options prédéfinies;
  2. Cliquez sur Ajouter et ajoutez une entrée avec les options suivantes :
    Nom: WPAD
    Type de données: string
    Code: 252
  3. Cliquez sur OK et spécifiez l’adresse de votre hôte WPAD (http://wpad.woshub.com). Ajouter l'option 252 WPAD sur le serveur DHCPAjouter l'option 252 WPAD sur le serveur DHCP
  4. Puis ouvrez le Options de portée et activer le 252 WPAD option pour cela (ou configurez le paramètre dans le Options du serveur section). Configuration de l'adresse WPAD sur DHCP (option 252)Configuration de l'adresse WPAD sur DHCP (option 252)

Créez ensuite des enregistrements DNS A ou CNAME pour wpad nom dans votre domaine.

Si vous utilisez Active Directory, notez que par défaut le serveur Microsoft DNS bloque l’utilisation de wpad et isatap des noms. Vous pouvez le vérifier en exécutant la commande : :

dnscmd mun-dc02 /info /globalqueryblocklist

Suppression de WPAD de la liste de blocage DNS WindowsSuppression de WPAD de la liste de blocage DNS Windows

Pour autoriser l’utilisation de ces noms dans DNS, exécutez cette commande :

dnscmd mun-dc02 /config /enableglobalqueryblocklist 0

Vous pouvez effacer la liste :

dnscmd /config /globalqueryblocklist

Et ajoutez un enregistrement pour isatap:

dnscmd /config /globalqueryblocklist isatap

Apportez les mêmes modifications à tous les serveurs DNS.

Créez ensuite un enregistrement A avec le nom wpad qui pointe vers votre serveur Web où se trouve le fichier WPAD. Vous pouvez créer un enregistrement A manuellement dans le gestionnaire DNS (dnsmgmt.msc) ou à l’aide de l’applet de commande PowerShell Add-DnsServerResourceRecordA :

Add-DnsServerResourceRecordA -Name wpad -IPv4Address 192.168.13.10 -ZoneName woshub.loc -TimeToLive 01:00:00

Création d'une entrée WPAD dans DNS sur Windows Server ADCréation d'une entrée WPAD dans DNS sur Windows Server AD

Comment configurer les navigateurs pour WPAD

Vous devez maintenant configurer vos navigateurs pour recevoir automatiquement un fichier PAC au démarrage. Pour ce faire, activez le Paramètres de détection automatique (Outils > Options Internet > Connexions > Paramètres LAN) dans les paramètres IE ou dans les paramètres du proxy Windows dans les Paramètres (commande URI rapide MS-Settings : ms-settings:network-proxy).

Windows : activez WPAD avec l'option Paramètres de détection automatique dans les Options InternetWindows : activez WPAD avec l'option Paramètres de détection automatique dans les Options Internet

Vous pouvez activer cette option de manière centralisée à l’aide du Stratégie de groupe option Configuration utilisateur -> Préférences -> Paramètres du panneau de configuration -> Paramètres Internet -> Nouveau ->Internet Explorer 10.

Activer le protocole de découverte automatique du proxy Web (WPAD) via GPOActiver le protocole de découverte automatique du proxy Web (WPAD) via GPO

Désormais, les navigateurs des appareils clients rechercheront un wpad entrée dans le DNS (ou obtenez-la de DHCP) lorsqu’ils sont chargés. Si un hôte avec WPAD est découvert sur le réseau, un client téléchargera le fichier http://wpad.%domain%/wpad.datexécutez le code JavaScript et appliquez les règles du serveur proxy à partir du fichier PAC.

Par exemple, Windows recherche le wpad nom dans DNS d’abord, puis via Link-Local Multicast Name Resolution (LLMNR), et ensuite en utilisant NetBIOS (NBNS). Si les protocoles LLMNR et NetBIOS sont désactivés, seule la recherche DNS est utilisée.

Vous pouvez vérifier si le navigateur utilise le fichier PAC lors de l’accès à Internet (pour les navigateurs Web basés sur Chromium : Google Chrome, Opera, Microsoft Edge) :

  1. Ouvrez un navigateur et accédez à chrome://net-export/
  2. Sélectionner Supprimer les informations privées et cliquez Commencez à vous connecter sur le disque ;activer la journalisation du navigateuractiver la journalisation du navigateur
  3. Spécifiez ensuite le nom du fichier JSON pour enregistrer les données ;
  4. Cliquez sur Arrêter la journalisation;
  5. Ouvrez votre fichier JSON dans n’importe quel éditeur de texte et recherchez proxySettings. Dans cet exemple, vous pouvez voir que le navigateur utilise les paramètres proxy de wpad.dat :
    "proxySettings":{"effective":{"pac_url":"http://wpad/wpad.dat"},"original":{"auto_detect":true,"from_system":true}}

vérifier si le navigateur utilise wpadvérifier si le navigateur utilise wpad

Si vous souhaitez refuser l’utilisation de WPAD sur un ordinateur Windows, créez un paramètre DWORD appelé Désactiver Wpad avec une valeur de 1 dans la clé de registre HKLMSOFTWAREMicrosoftWindowsCurrentVersionInternet SettingsWinHttp.

La configuration des paramètres de proxy à l’aide du fichier WPAD (PAC) offre une flexibilité supplémentaire qui ne peut pas être obtenue en définissant le proxy via l’objet de stratégie de groupe Windows. WPAD est également pris en charge sur Windows, Linux, MacOS et d’autres systèmes d’exploitation ainsi que sur les appareils mobiles.