Een PAC-regel voor korte namen kan je proxy omzeilen
Begrijp waarom een hostnaam zonder punt en de volledig gekwalificeerde vorm verschillende routes kunnen kiezen in hetzelfde PAC-script.
Een PAC-script ontvangt de hostnaam uit de URL. dashboard wordt niet automatisch dashboard.example.internal vóór het matchen:
function FindProxyForURL(url, host) {
if (isPlainHostName(host)) {
return "DIRECT";
}
return "PROXY 203.0.113.10:8080";
}
Gebruik een echt HTTP-eindpunt in plaats van het documentatieadres; de HTTP-proxylijst biedt kandidaten voor tests naar publieke bestemmingen waar die route is toegestaan. In dit script geeft de korte naam bewust DIRECT terug; de volledig gekwalificeerde naam bereikt de proxy-tak. ‘Gewone hostnaam’ betekent een spelling zonder punt, niet de vaststelling dat de host op een vertrouwd lokaal netwerk staat.
Als het gewenste beleid één intern domein is, match dan dat domein in plaats van elke korte naam. dnsDomainIs en shExpMatch hebben verschillende invoer en patroonsemantiek. Een suffixcontrole voor .example.internal omvat niet de exacte wortel example.internal; neem dat geval expliciet op wanneer dat bedoeld is. Een shell-achtig patroon is geen IP-subnet of reguliere expressie.
Vergelijk het resultaat van het script voor de korte naam, de volledig gekwalificeerde naam, een niet-gerelateerde publieke host en elke bedoelde domeinwortel. Dit test de regelkeuze zonder verbinding met de proxy. Inspecteer de eerste regel die iets teruggeeft wanneer een brede DIRECT-tak verhindert dat een verder bereikbaar eindpunt wordt geprobeerd.
Gebruik naamvergelijking wanneer dat het beleid uitdrukt; DNS-hulpen voegen hun eigen opzoekingen en vertraging toe. Houd de impliciete lokale omzeiling van de browser ook gescheiden van het script. Een localhost-controle kan de werkelijke spelling van de publieke of interne bestemming niet vervangen.