Wpad.dat - proxy Auto-Configuration (PAC) file syntax

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)

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

Apprenez-en davantage sur la configuration des paramètres du serveur proxy à l’aide de 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 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 HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\WinHttp\.

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.