KEA Proxy PAC - Netzkwerk und Serveradministration: Unterschied zwischen den Versionen
(Die Seite wurde neu angelegt: „Kategorie:DHCP Kategorie:Proxy = Proxy-Konfiguration via Kea DHCP (WPAD) = == Übersicht == WPAD (Web Proxy Auto-Discovery Protocol) ermöglicht es,…“) |
|||
| Zeile 543: | Zeile 543: | ||
* Active Directory und Group Policy Objects können für zusätzliche Sicherheit verwendet werden | * Active Directory und Group Policy Objects können für zusätzliche Sicherheit verwendet werden | ||
* Zugriff auf wpad.dat auf vertrauenswürdige Netzwerke beschränken | * Zugriff auf wpad.dat auf vertrauenswürdige Netzwerke beschränken | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
Aktuelle Version vom 20. Oktober 2025, 07:50 Uhr
Proxy-Konfiguration via Kea DHCP (WPAD)
Übersicht
WPAD (Web Proxy Auto-Discovery Protocol) ermöglicht es, Proxy-Einstellungen automatisch an Clients zu verteilen. Über DHCP Option 252 wird die URL zu einer PAC-Datei (Proxy Auto-Config) übertragen, die die Browser automatisch herunterladen und konfigurieren.
Vorteile von WPAD
- Zentrale Proxy-Konfiguration für alle Netzwerk-Clients
- Keine manuelle Browser-Konfiguration auf jedem Client notwendig
- Einfache Änderung der Proxy-Einstellungen durch Aktualisierung der PAC-Datei
- Unterstützung durch die meisten modernen Browser
DHCP-Option für Proxy
- Option 252 (DHCPv4): WPAD - Web Proxy Auto-Discovery
- Format: String (URL zur PAC-Datei)
- Definiert in draft-ietf-wrec-wpad-01
Voraussetzungen
PAC-Datei direkt auf Squid bereitstellen
Squid kann die PAC-Datei selbst ausliefern, ohne separaten Webserver.
Squid Installation
- sudo apt install squid
PAC-Datei erstellen
- sudo mkdir -p /usr/share/squid/wpad
- sudo vim /usr/share/squid/wpad/wpad.dat
Beispiel PAC-Datei:
function FindProxyForURL(url, host) {
// Lokale Adressen - kein Proxy
if (isPlainHostName(host) ||
shExpMatch(host, "*.local") ||
isInNet(dnsResolve(host), "10.0.0.0", "255.0.0.0") ||
isInNet(dnsResolve(host), "172.16.0.0", "255.240.0.0") ||
isInNet(dnsResolve(host), "192.168.0.0", "255.255.0.0") ||
isInNet(dnsResolve(host), "127.0.0.0", "255.0.0.0"))
return "DIRECT";
// Alle anderen Adressen über Proxy
return "PROXY 10.88.1XX.100:3128; DIRECT";
}
Berechtigungen setzen
- sudo chmod 644 /usr/share/squid/wpad/wpad.dat
- sudo chown proxy:proxy /usr/share/squid/wpad/wpad.dat
Squid-Konfiguration
- sudo vim /etc/squid/squid.conf
Komplette Konfiguration:
# ACL für lokales Netzwerk acl localnet src 10.88.1XX.0/24 acl localnet src 172.16.1XX.0/24 # SSL-Ports acl SSL_ports port 443 acl Safe_ports port 80 # http acl Safe_ports port 443 # https acl CONNECT method CONNECT # ACL für PAC-Datei-Anfragen acl wpad_request urlpath_regex ^/wpad\.dat$ acl wpad_request urlpath_regex ^/wpad\.da$ acl wpad_request urlpath_regex ^/proxy\.pac$ # Zugriff verweigern für nicht sichere Ports http_access deny !Safe_ports http_access deny CONNECT !SSL_ports # Zugriff auf PAC-Datei erlauben (MUSS vor anderen Regeln stehen) http_access allow wpad_request # Zugriff erlauben für lokales Netzwerk http_access allow localnet http_access allow localhost # Alles andere verweigern http_access deny all # Proxy-Port http_port 3128 # Zusätzlicher Port für PAC-Datei auf Port 80 http_port 80 accel defaultsite=proxy.it1XX.int no-vhost # PAC-Datei-Verzeichnis als Cache-Peer cache_peer localhost parent 80 0 no-query originserver name=wpad # Cache-Verzeichnis cache_dir ufs /var/spool/squid 100 16 256 # Hostname visible_hostname proxy.it1XX.int # PAC-Datei aus lokalem Verzeichnis ausliefern http_port 8080 acl pac_path urlpath_regex ^/(wpad\.dat|wpad\.da|proxy\.pac)$ http_access allow pac_path
Vereinfachte Alternative - Squid liefert PAC auf Port 8080:
# ACL für lokales Netzwerk acl localnet src 10.88.1XX.0/24 acl localnet src 172.16.1XX.0/24 # SSL-Ports acl SSL_ports port 443 acl Safe_ports port 80 # http acl Safe_ports port 443 # https acl Safe_ports port 8080 # PAC-Datei Port acl CONNECT method CONNECT # Zugriff verweigern für nicht sichere Ports http_access deny !Safe_ports http_access deny CONNECT !SSL_ports # Zugriff erlauben für lokales Netzwerk http_access allow localnet http_access allow localhost # Alles andere verweigern http_access deny all # Proxy-Port http_port 3128 # Port für PAC-Datei http_port 8080 # Cache-Verzeichnis cache_dir ufs /var/spool/squid 100 16 256 # Hostname visible_hostname proxy.it1XX.int
Webserver-Modul für PAC-Datei
Da Squid selbst keine statischen Dateien gut ausliefert, ist ein minimaler Webserver empfohlen:
- sudo apt install lighttpd
- sudo vim /etc/lighttpd/lighttpd.conf
server.modules = (
"mod_access",
"mod_accesslog"
)
server.document-root = "/usr/share/squid/wpad"
server.port = 8080
server.username = "www-data"
server.groupname = "www-data"
mimetype.assign = (
".dat" => "application/x-ns-proxy-autoconfig",
".pac" => "application/x-ns-proxy-autoconfig",
".da" => "application/x-ns-proxy-autoconfig"
)
- sudo systemctl enable lighttpd
- sudo systemctl start lighttpd
Squid starten
- sudo systemctl enable squid
- sudo systemctl restart squid
PAC-Datei testen
Erwartete Ausgabe:
HTTP/1.1 200 OK Content-Type: application/x-ns-proxy-autoconfig Content-Length: XXX Date: Mon, 20 Oct 2025 15:00:00 GMT Server: lighttpd
Kea DHCP Konfiguration
Benutzerdefinierte Option definieren
Da Option 252 keine Standard-Option in Kea ist, muss sie zuerst definiert werden.
- sudo vim /etc/kea/kea-dhcp4.conf
{
"Dhcp4": {
"interfaces-config": {
"interfaces": [ "enp0s3" ]
},
"lease-database": {
"type": "memfile",
"persist": true,
"name": "/var/lib/kea/dhcp4.leases"
},
"valid-lifetime": 600,
"max-valid-lifetime": 7200,
"option-def": [
{
"name": "wpad",
"code": 252,
"type": "string"
}
],
"option-data": [
{
"name": "domain-name-servers",
"data": "10.88.1XX.21"
},
{
"name": "domain-name",
"data": "it1XX.int"
},
{
"name": "domain-search",
"data": "it1XX.int, example.com"
},
{
"name": "wpad",
"data": "http://10.88.1XX.21/wpad.dat"
}
],
"subnet4": [
{
"subnet": "172.16.1XX.0/24",
"pools": [
{
"pool": "172.16.1XX.50 - 172.16.1XX.100"
}
],
"option-data": [
{
"name": "routers",
"data": "172.16.1XX.1"
}
]
}
],
"loggers": [
{
"name": "kea-dhcp4",
"output_options": [
{
"output": "/var/log/kea/kea-dhcp4.log"
}
],
"severity": "INFO"
}
]
}
}
Subnet-spezifische WPAD-Konfiguration
Verschiedene PAC-Dateien für unterschiedliche Subnetze:
{
"Dhcp4": {
"option-def": [
{
"name": "wpad",
"code": 252,
"type": "string"
}
],
"option-data": [
{
"name": "wpad",
"data": "http://10.88.1XX.21/wpad.dat"
}
],
"subnet4": [
{
"subnet": "172.16.1XX.0/24",
"option-data": [
{
"name": "routers",
"data": "172.16.1XX.1"
},
{
"name": "wpad",
"data": "http://10.88.1XX.21/wpad-admin.dat"
}
]
},
{
"subnet": "10.88.1XX.0/24",
"option-data": [
{
"name": "routers",
"data": "10.88.1XX.1"
}
]
}
]
}
}
In diesem Beispiel:
- Subnet 172.16.1XX.0/24 verwendet eine spezielle PAC-Datei (wpad-admin.dat)
- Subnet 10.88.1XX.0/24 verwendet die globale PAC-Datei (wpad.dat)
Dienst neu starten
- Konfiguration testen
- sudo kea-dhcp4 -t /etc/kea/kea-dhcp4.conf
- Dienst neu starten
- sudo systemctl restart kea-dhcp4-server
- Status prüfen
- sudo systemctl status kea-dhcp4-server
Client-Konfiguration (Linux)
Firefox
- Firefox öffnen → Einstellungen → Allgemein → Netzwerk-Einstellungen
- Proxy-Konfiguration automatisch erkennen auswählen
oder manuell:
- Automatische Proxy-Konfigurations-URL auswählen
- URL eingeben: http://10.88.1XX.100:8080/wpad.dat
Chrome/Chromium
Chrome verwendet die System-Proxy-Einstellungen.
GNOME Desktop
- gsettings set org.gnome.system.proxy mode 'auto'
- gsettings set org.gnome.system.proxy autoconfig-url 'http://10.88.1XX.100:8080/wpad.dat'
KDE Plasma
- Systemeinstellungen → Netzwerk → Einstellungen → Proxy
- Proxy automatisch erkennen aktivieren
oder
- Proxy-Konfigurationsskript auswählen
- URL: http://10.88.1XX.100:8080/wpad.dat
Kommandozeile (für alle Desktops)
Umgebungsvariablen setzen in ~/.bashrc oder /etc/environment:
export http_proxy="http://10.88.1XX.100:3128" export https_proxy="http://10.88.1XX.100:3128" export no_proxy="localhost,127.0.0.1,*.local,*.it1XX.int,10.*,172.16.*,192.168.*"
Für APT (Debian/Ubuntu):
- sudo vim /etc/apt/apt.conf.d/proxy.conf
Acquire::http::Proxy "http://10.88.1XX.100:3128"; Acquire::https::Proxy "http://10.88.1XX.100:3128";
Überprüfung auf dem Client (Linux)
DHCP-Lease prüfen
- cat /var/lib/dhcp/dhclient.leases | grep 252
oder
- sudo dhclient -v
Browser-Test
Firefox
- about:config aufrufen
- Suchen nach: network.proxy
Sollte anzeigen:
- network.proxy.autoconfig_url = http://10.88.1XX.100:8080/wpad.dat
- network.proxy.type = 2 (für automatische Proxy-Konfiguration)
Chrome
- chrome://net-internals/#proxy aufrufen
Sollte die PAC-Datei und aktuelle Proxy-Einstellungen anzeigen
PAC-Datei manuell testen
Im Browser direkt die URL eingeben:
Die JavaScript-Datei sollte angezeigt werden.
Kommandozeile Test
- wget --no-proxy http://10.88.1XX.100:8080/wpad.dat -O -
DNS-basierte WPAD (Alternative/Ergänzung)
Zusätzlich zu DHCP kann WPAD auch über DNS funktionieren. Browser versuchen zuerst DHCP und dann DNS.
DNS-Eintrag erstellen
- A-Record: wpad.it1XX.int → 10.88.1XX.100
- CNAME: wpad → proxy.it1XX.int
Die PAC-Datei muss dann unter dieser URL erreichbar sein:
Browser-Kompatibilität (Linux)
| Browser | DHCP Option 252 | DNS WPAD | Hinweise |
|---|---|---|---|
| Firefox | Teilweise (ab Version 88+) | Ja | Bevorzugt manuelle Konfiguration oder DNS |
| Chrome/Chromium | Teilweise | Ja | Verwendet System-Proxy-Einstellungen |
| Epiphany (GNOME Web) | Ja | Ja | Verwendet System-Proxy-Einstellungen |
| Konqueror | Ja | Ja | Verwendet KDE-System-Einstellungen |
| Links/Lynx/w3m | Nein | Nein | Nur manuelle Umgebungsvariablen |
Hinweis: Die meisten Linux-Browser unterstützen DNS-WPAD besser als DHCP Option 252. Beide Methoden sollten konfiguriert werden.
Wichtige Hinweise
- Option 252 überträgt eine URL zur Proxy-Konfiguration
- Die PAC-Datei muss den richtigen MIME-Type haben: application/x-ns-proxy-autoconfig
- Für DNS-WPAD muss die Datei wpad.dat heißen
- WPAD ist kein offizieller Internet-Standard, wird aber weitgehend unterstützt
- Aus Sicherheitsgründen sollte die PAC-Datei über HTTPS bereitgestellt werden (empfohlen für Produktivumgebungen)
- Die URL in Option 252 sollte eine IP-Adresse oder einen vollqualifizierten Domainnamen enthalten
Troubleshooting
Client erhält keine WPAD-Konfiguration
- DHCP-Lease erneuern:
- sudo dhclient -r && sudo dhclient
- Kea-Logs prüfen:
- sudo journalctl -u kea-dhcp4-server -n 50
- Option 252 im DHCP-Lease prüfen:
- cat /var/lib/dhcp/dhclient.leases | grep -A5 -B5 252
PAC-Datei nicht erreichbar
- Webserver-Status prüfen:
- sudo systemctl status apache2
- Firewall-Regeln prüfen:
- sudo iptables -L -v -n | grep 80
- PAC-Datei per curl testen:
- curl -v http://10.88.1XX.21/wpad.dat
Browser verwendet Proxy nicht
- Browser-Cache leeren
- Browser neu starten
- Proxy-Einstellungen zurücksetzen
- In Firefox: about:config → network.proxy.autoconfig_url prüfen
Squid Proxy funktioniert nicht
- Squid-Logs prüfen:
- sudo tail -f /var/log/squid/access.log
- sudo tail -f /var/log/squid/cache.log
- Squid-Konfiguration testen:
- sudo squid -k parse
- Port-Check:
- sudo ss -tlnp | grep 3128
Sicherheitsüberlegungen
- PAC-Dateien können manipuliert werden - HTTPS verwenden
- DNS-Spoofing-Angriffe auf WPAD möglich - DNSSEC verwenden
- Active Directory und Group Policy Objects können für zusätzliche Sicherheit verwendet werden
- Zugriff auf wpad.dat auf vertrauenswürdige Netzwerke beschränken