Proxy-PAC

Aus xinux.net
Zur Navigation springen Zur Suche springen

Was ist eine PAC-Datei

  • Anhand einer Proxy-Auto-Config-Datei (PAC-Datei) kann ein Webbrowser automatisch den passenden Proxyserver für eine gewünschte URL finden.

Beispiel

  • Eine einfache Konfiguration, bei der alle Clients über den Proxy gehen und alles erlaubt wird.
function FindProxyForURL(url, host) { 
        return "PROXY nagus.xinux.lan:3128"; 
}
  • Bei dieser Konfiguration, werden alle interne Anfragen direkt zum Zielort geschickt, dass heißt, alles was aus dem Bereich 192.168.0.0/16 10.0.0.0/8 und 172.16.0.0/12 kommt, wird nicht über den Proxy geleitet.
 function FindProxyForURL(url, host) { 
if (isInNet(host, "10.0.0.0", "255.0.0.0.0")) {
    return "DIRECT";
}
if (isInNet(host, "192.168.0.0", "255.255.0.0")) {
    return "DIRECT";
}
if (isInNet(host, "172.16.0.0", "255.240.0.0")) {
    return "DIRECT";
}
   return "PROXY nagus.xinux.lan:3128"; 
}
  • In dieser Konfiguration werden wieder alle interne Anfragen direkt zum Zielort geschickt, dazu werden noch alle Anfragen auf einen Hostname direkt zum Host geschickt. Befindet sich aber eine Domain hinten dran, wird der Weg wieder über den Proxy geleitet. In diesem Beispiel wird noch jede Anfrage auf die Domain "xinux.lan" direkt zum Ziel geschickt, ohne den Umweg über den Proxy.
function FindProxyForURL(url, host) { 
if (isPlainHostName(host) || dnsDomainIs(host, ".xinux.lan")) {
            return "DIRECT";
   }
if (isInNet(host, "10.0.0.0", "255.0.0.0.0")) {
    return "DIRECT";
}
if (isInNet(host, "192.168.0.0", "255.255.0.0")) {
    return "DIRECT";
}
if (isInNet(host, "172.16.0.0", "255.240.0.0")) {
    return "DIRECT";
}
   return "PROXY nagus.xinux.lan:3128"; 
}
  • Bei der folgenden Konfiguration werden wieder die vorherigen Einstellungen genutzt, dazu jetzt noch eine Einstellung, welche dafür sorgt, dass die Clients nicht alle auf einen Proxy geschickt werden, sondern ein zweiter Proxy mit ins Spiel gebracht wird. Diese Funktion hat folgenden Sinn. Alle Clients mit einem ungeraden Hostanteil werden über Proxy1 geschickt, hingegen Clients mit einem geraden Hostanteil werden über Proxy2 geschickt. Somit haben wir eine Hochverfügbarkeit des Proxys und einen "load balancing", da die eine Hälfte über Proxy1 geht und die andere Hälfte über Proxy2.
function FindProxyForURL(url, host) 
{ 
 var worf="10.80.0.2"
 var nagus="10.80.0.3"
 var myip=myIpAddress()
 var ipbits=myip.split(".")
 var myseg=parseInt(ipbits[3])
 if(myseg==Math.floor(myseg/2)*2) 
 {
   var proxone=worf
   var proxtwo=nagus
 }
 else 
 {
   var proxone=nagus
   var proxtwo=worf
 }

if (isPlainHostName(host) || dnsDomainIs(host, ".xinux.lan")) {
            return "DIRECT";
   }
if (isInNet(host, "10.0.0.0", "255.0.0.0.0")) {
    return "DIRECT";
}
if (isInNet(host, "192.168.0.0", "255.255.0.0")) {
    return "DIRECT";
}
if (isInNet(host, "172.16.0.0", "255.240.0.0")) {
    return "DIRECT";
}
   return "PROXY "+proxone+":3128; PROXY "+proxtwo+":3128" ;
}
  • Um eine bestimmte IP Adresse einen bestimmten Proxy zuzuweisen, benutzen wir diese Funktion.
function FindProxyForURL(url, host) 
 {
 if (myIpAddress() == "10.81.3.1") {
 return "PROXY nagus.xinux.lan:3128";
 }
 else {
 return "DIRECT";
 }
 }