BREAKING CHANGE: Die alte Shell-Version muss vor der Installation der Go-Version deinstalliert werden.
743 lines
18 KiB
Markdown
743 lines
18 KiB
Markdown
# Befehle & Nutzung
|
|
|
|
AdGuard Shield wird in der Go-Version über ein einzelnes Binary bedient:
|
|
|
|
```bash
|
|
/opt/adguard-shield/adguard-shield
|
|
```
|
|
|
|
Dieses Binary ist Daemon, CLI, Installer, Updater, Uninstaller und Report-Generator. Dadurch gibt es keine getrennten Shell-Skripte mehr.
|
|
|
|
## Grundform
|
|
|
|
```bash
|
|
sudo /opt/adguard-shield/adguard-shield <befehl>
|
|
```
|
|
|
|
Wenn du eine andere Konfigurationsdatei verwenden möchtest, muss `-config` direkt vor dem Befehl stehen:
|
|
|
|
```bash
|
|
sudo /opt/adguard-shield/adguard-shield -config /pfad/zur/adguard-shield.conf status
|
|
```
|
|
|
|
Standardpfade:
|
|
|
|
```text
|
|
Konfiguration: /opt/adguard-shield/adguard-shield.conf
|
|
SQLite-State: /var/lib/adguard-shield/adguard-shield.db
|
|
Logdatei: /var/log/adguard-shield.log
|
|
PID-Datei: /var/run/adguard-shield.pid
|
|
```
|
|
|
|
## Schnellübersicht
|
|
|
|
```bash
|
|
# Version
|
|
/opt/adguard-shield/adguard-shield version
|
|
|
|
# Installation und Update
|
|
sudo ./adguard-shield install
|
|
sudo ./adguard-shield update
|
|
sudo ./adguard-shield install-status
|
|
sudo /opt/adguard-shield/adguard-shield uninstall --keep-config
|
|
|
|
# Service
|
|
sudo systemctl start adguard-shield
|
|
sudo systemctl stop adguard-shield
|
|
sudo systemctl restart adguard-shield
|
|
sudo systemctl status adguard-shield
|
|
|
|
# Diagnose
|
|
sudo /opt/adguard-shield/adguard-shield test
|
|
sudo /opt/adguard-shield/adguard-shield status
|
|
sudo /opt/adguard-shield/adguard-shield live
|
|
sudo /opt/adguard-shield/adguard-shield history 100
|
|
sudo /opt/adguard-shield/adguard-shield logs --level warn --limit 100
|
|
|
|
# Manuelle Eingriffe
|
|
sudo /opt/adguard-shield/adguard-shield unban 192.168.1.100
|
|
sudo /opt/adguard-shield/adguard-shield ban 192.168.1.100
|
|
sudo /opt/adguard-shield/adguard-shield flush
|
|
```
|
|
|
|
## Installation
|
|
|
|
Das installierte Binary landet standardmäßig unter:
|
|
|
|
```text
|
|
/opt/adguard-shield/adguard-shield
|
|
```
|
|
|
|
Typischer Ablauf:
|
|
|
|
```bash
|
|
# Binary ausführbar machen
|
|
chmod +x ./adguard-shield
|
|
|
|
# Standardinstallation
|
|
sudo ./adguard-shield install
|
|
|
|
# Bestehende Konfigurationsdatei als Vorlage übernehmen
|
|
sudo ./adguard-shield install --config-source ./adguard-shield.conf
|
|
```
|
|
|
|
Am Ende fragt der Installer, ob AdGuard Shield direkt gestartet oder neu gestartet werden soll.
|
|
|
|
Weitere Optionen:
|
|
|
|
```bash
|
|
# Paketprüfung überspringen
|
|
sudo ./adguard-shield install --skip-deps
|
|
|
|
# systemd-Autostart nicht aktivieren
|
|
sudo ./adguard-shield install --no-enable
|
|
|
|
# abweichendes Installationsverzeichnis
|
|
sudo ./adguard-shield install --install-dir /opt/adguard-shield-test
|
|
```
|
|
|
|
Der Installer erledigt:
|
|
|
|
1. Linux- und root-Prüfung
|
|
2. Prüfung auf alte Shell-Artefakte
|
|
3. Installation fehlender Abhängigkeiten über `apt-get`, sofern möglich
|
|
4. Anlage von Installations- und State-Verzeichnissen
|
|
5. Kopieren des laufenden Binarys
|
|
6. Anlage oder Migration der Konfiguration
|
|
7. Schreiben der systemd-Unit
|
|
8. `systemctl daemon-reload`
|
|
9. optional Autostart aktivieren
|
|
10. fragen, ob der Service direkt gestartet oder neu gestartet werden soll
|
|
|
|
Benötigte Systembefehle:
|
|
|
|
```text
|
|
iptables
|
|
ip6tables
|
|
ipset
|
|
systemctl
|
|
```
|
|
|
|
Auf Debian/Ubuntu installiert der Installer passende Pakete automatisch, sofern `apt-get` verfügbar ist und `--skip-deps` nicht gesetzt wurde.
|
|
|
|
## Update
|
|
|
|
Ein Update wird mit dem neuen Binary ausgeführt, nicht mit dem bereits installierten alten Binary.
|
|
|
|
```bash
|
|
chmod +x ./adguard-shield
|
|
sudo ./adguard-shield update
|
|
```
|
|
|
|
Am Ende fragt der Updater, ob AdGuard Shield direkt neu gestartet werden soll.
|
|
|
|
Mit expliziter Konfigurationsquelle:
|
|
|
|
```bash
|
|
sudo ./adguard-shield update --config-source ./adguard-shield.conf
|
|
```
|
|
|
|
Beim Update:
|
|
|
|
- wird die Installation wie bei `install` aktualisiert
|
|
- bleibt die vorhandene Konfiguration erhalten
|
|
- werden neue Konfigurationsparameter ergänzt
|
|
- wird bei einer Migration `adguard-shield.conf.old` geschrieben
|
|
- wird die systemd-Unit neu geschrieben
|
|
- wird systemd neu geladen
|
|
|
|
## Installationsstatus
|
|
|
|
```bash
|
|
sudo ./adguard-shield install-status
|
|
```
|
|
|
|
Für ein anderes Installationsverzeichnis:
|
|
|
|
```bash
|
|
sudo ./adguard-shield install-status --install-dir /opt/adguard-shield-test
|
|
```
|
|
|
|
`install-status` zeigt:
|
|
|
|
- Installationspfad
|
|
- Binary vorhanden
|
|
- installierte Version
|
|
- Konfiguration vorhanden
|
|
- systemd-Service vorhanden
|
|
- Autostart aktiv
|
|
- Service aktiv
|
|
- gefundene Legacy-Artefakte
|
|
|
|
## Deinstallation
|
|
|
|
```bash
|
|
# Alles entfernen
|
|
sudo /opt/adguard-shield/adguard-shield uninstall
|
|
|
|
# Konfiguration behalten
|
|
sudo /opt/adguard-shield/adguard-shield uninstall --keep-config
|
|
```
|
|
|
|
Bei der Deinstallation wird:
|
|
|
|
1. der Service gestoppt
|
|
2. der Autostart deaktiviert
|
|
3. die Shield-Firewall-Struktur entfernt
|
|
4. die systemd-Unit gelöscht
|
|
5. systemd neu geladen
|
|
6. je nach Option Installationsverzeichnis, State und Log entfernt
|
|
|
|
Mit `--keep-config` bleiben Konfigurationsdaten erhalten. Das ist sinnvoll, wenn du neu installieren oder migrieren möchtest.
|
|
|
|
## Alte Shell-Installation
|
|
|
|
Die Go-Version darf nicht parallel zur alten Shell-Version laufen. Der Installer bricht ab, wenn er alte Artefakte findet, zum Beispiel:
|
|
|
|
```text
|
|
/opt/adguard-shield/adguard-shield.sh
|
|
/opt/adguard-shield/iptables-helper.sh
|
|
/opt/adguard-shield/external-blocklist-worker.sh
|
|
/opt/adguard-shield/geoip-worker.sh
|
|
/etc/systemd/system/adguard-shield-watchdog.timer
|
|
```
|
|
|
|
Empfohlener Ablauf:
|
|
|
|
1. Bestehende `/opt/adguard-shield/adguard-shield.conf` sichern.
|
|
2. Alte Shell-Version mit deren Uninstaller entfernen und die Konfiguration behalten.
|
|
3. Go-Binary erneut installieren.
|
|
4. Konfiguration prüfen.
|
|
5. Zuerst `dry-run`, dann produktiven Service starten.
|
|
|
|
## systemd-Service
|
|
|
|
Im produktiven Betrieb sollte AdGuard Shield über systemd laufen:
|
|
|
|
```bash
|
|
sudo systemctl start adguard-shield
|
|
sudo systemctl stop adguard-shield
|
|
sudo systemctl restart adguard-shield
|
|
sudo systemctl status adguard-shield
|
|
```
|
|
|
|
Autostart:
|
|
|
|
```bash
|
|
sudo systemctl enable adguard-shield
|
|
sudo systemctl disable adguard-shield
|
|
```
|
|
|
|
Nach manuellen Änderungen an der Unit:
|
|
|
|
```bash
|
|
sudo systemctl daemon-reload
|
|
```
|
|
|
|
Die Unit startet:
|
|
|
|
```bash
|
|
/opt/adguard-shield/adguard-shield -config /opt/adguard-shield/adguard-shield.conf run
|
|
```
|
|
|
|
Die Go-Version nutzt `Restart=on-failure`. Einen separaten Watchdog-Service oder Watchdog-Timer gibt es nicht mehr.
|
|
|
|
## Daemon direkt starten
|
|
|
|
Für Debugging oder Dry-Run kann der Daemon im Vordergrund gestartet werden:
|
|
|
|
```bash
|
|
# normaler Vordergrundlauf
|
|
sudo /opt/adguard-shield/adguard-shield run
|
|
|
|
# Alias für run
|
|
sudo /opt/adguard-shield/adguard-shield start
|
|
|
|
# analysieren ohne echte Sperren
|
|
sudo /opt/adguard-shield/adguard-shield dry-run
|
|
```
|
|
|
|
Stop über PID-Datei:
|
|
|
|
```bash
|
|
sudo /opt/adguard-shield/adguard-shield stop
|
|
```
|
|
|
|
Für den Alltag gilt: Nutze `systemctl`. Der direkte Vordergrundlauf endet, sobald die Shell beendet wird oder du `Strg+C` drückst.
|
|
|
|
## API-Test
|
|
|
|
```bash
|
|
sudo /opt/adguard-shield/adguard-shield test
|
|
```
|
|
|
|
Der Test ruft `/control/querylog` auf und prüft damit:
|
|
|
|
- ist `ADGUARD_URL` erreichbar?
|
|
- funktionieren HTTP/TLS und Netzwerk?
|
|
- stimmen `ADGUARD_USER` und `ADGUARD_PASS`?
|
|
- liefert AdGuard Home Querylog-Daten?
|
|
|
|
Bei Erfolg erscheint sinngemäß:
|
|
|
|
```text
|
|
Verbindung erfolgreich. 123 Querylog-Einträge gefunden.
|
|
```
|
|
|
|
Wenn der Test fehlschlägt, zuerst die Konfiguration und die AdGuard-Home-Weboberfläche prüfen.
|
|
|
|
## Status
|
|
|
|
```bash
|
|
sudo /opt/adguard-shield/adguard-shield status
|
|
```
|
|
|
|
`status` zeigt:
|
|
|
|
- verwendete Konfigurationsdatei
|
|
- Firewall-Backend und Chain
|
|
- GeoIP-Aktivierung, Modus und Länder
|
|
- externe Blocklist und Anzahl der URLs
|
|
- externe Whitelist und Anzahl der URLs
|
|
- aktive Sperren mit IP, Quelle, Grund und Ablaufzeit
|
|
|
|
Bei sehr vielen aktiven Sperren werden nur die ersten 50 angezeigt. Details stehen in der History oder direkt in SQLite.
|
|
|
|
## Live-Ansicht
|
|
|
|
```bash
|
|
sudo /opt/adguard-shield/adguard-shield live
|
|
```
|
|
|
|
`live` ist die beste Ansicht, wenn du verstehen möchtest, was gerade passiert.
|
|
|
|
Sie zeigt:
|
|
|
|
- Query-Poller, API-Einträge, Zeitfenster und Rate-Limit
|
|
- Top Client/Domain-Kombinationen
|
|
- Subdomain-Flood-Kandidaten
|
|
- letzte Querylog-Einträge
|
|
- aktive Sperren
|
|
- externe Listen
|
|
- GeoIP-Status
|
|
- Offense-Cleanup-Status
|
|
- Systemereignisse aus der Logdatei
|
|
|
|
Optionen:
|
|
|
|
```bash
|
|
# alle 2 Sekunden aktualisieren
|
|
sudo /opt/adguard-shield/adguard-shield live --interval 2
|
|
|
|
# Top 20 anzeigen
|
|
sudo /opt/adguard-shield/adguard-shield live --top 20
|
|
|
|
# mehr letzte Queries und Logs anzeigen
|
|
sudo /opt/adguard-shield/adguard-shield live --recent 25
|
|
|
|
# DEBUG-Logs einblenden
|
|
sudo /opt/adguard-shield/adguard-shield live --logs debug
|
|
|
|
# Logbereich ausblenden
|
|
sudo /opt/adguard-shield/adguard-shield live --logs off
|
|
|
|
# nur einmaligen Snapshot ausgeben
|
|
sudo /opt/adguard-shield/adguard-shield live --once
|
|
```
|
|
|
|
Alias:
|
|
|
|
```bash
|
|
sudo /opt/adguard-shield/adguard-shield watch
|
|
```
|
|
|
|
## History
|
|
|
|
```bash
|
|
# letzte 50 Einträge
|
|
sudo /opt/adguard-shield/adguard-shield history
|
|
|
|
# letzte 200 Einträge
|
|
sudo /opt/adguard-shield/adguard-shield history 200
|
|
```
|
|
|
|
Die History kommt aus der SQLite-Tabelle `ban_history`. Sie enthält:
|
|
|
|
- `BAN`: echte Sperre
|
|
- `UNBAN`: Freigabe
|
|
- `DRY`: im Dry-Run erkannt, aber nicht gesperrt
|
|
|
|
Format:
|
|
|
|
```text
|
|
Zeit | Aktion | Client-IP | Domain | Anzahl | Dauer | Protokoll | Grund
|
|
```
|
|
|
|
Typische Gründe:
|
|
|
|
| Grund | Bedeutung |
|
|
|---|---|
|
|
| `rate-limit` | gleiche Domain zu oft angefragt |
|
|
| `subdomain-flood` | zu viele eindeutige Subdomains einer Basisdomain |
|
|
| `dns-flood-watchlist` | Watchlist-Treffer mit Permanent-Ban |
|
|
| `external-blocklist` | Sperre aus externer Blocklist |
|
|
| `geoip` | GeoIP-Länderfilter |
|
|
| `manual` | manuelle Freigabe |
|
|
| `manual-flush` | Freigabe durch `flush` |
|
|
| `expired` | temporäre Sperre abgelaufen |
|
|
| `external-whitelist` | Freigabe durch externe Whitelist |
|
|
|
|
## Logs
|
|
|
|
AdGuard Shield schreibt Daemon-Ereignisse in `LOG_FILE`, standardmäßig:
|
|
|
|
```text
|
|
/var/log/adguard-shield.log
|
|
```
|
|
|
|
CLI:
|
|
|
|
```bash
|
|
# letzte INFO/WARN/ERROR-Einträge
|
|
sudo /opt/adguard-shield/adguard-shield logs
|
|
|
|
# letzte 100 Warnungen und Fehler
|
|
sudo /opt/adguard-shield/adguard-shield logs --level warn --limit 100
|
|
|
|
# Kurzform
|
|
sudo /opt/adguard-shield/adguard-shield logs debug
|
|
|
|
# laufende Ansicht
|
|
sudo /opt/adguard-shield/adguard-shield logs-follow --level info
|
|
```
|
|
|
|
Erlaubte Level:
|
|
|
|
```text
|
|
DEBUG
|
|
INFO
|
|
WARN
|
|
ERROR
|
|
```
|
|
|
|
systemd-Journal:
|
|
|
|
```bash
|
|
sudo journalctl -u adguard-shield -f
|
|
sudo journalctl -u adguard-shield --no-pager -n 100
|
|
```
|
|
|
|
Hinweis: Query-Inhalte werden nicht dauerhaft in die Logdatei geschrieben. Für Query-nahe Diagnose ist `live` gedacht.
|
|
|
|
## Manuelle Sperren und Freigaben
|
|
|
|
```bash
|
|
# IP permanent sperren
|
|
sudo /opt/adguard-shield/adguard-shield ban 192.168.1.100
|
|
|
|
# IP entsperren
|
|
sudo /opt/adguard-shield/adguard-shield unban 192.168.1.100
|
|
|
|
# alle aktiven Sperren aufheben
|
|
sudo /opt/adguard-shield/adguard-shield flush
|
|
```
|
|
|
|
`ban` legt eine manuelle permanente Sperre an. `unban` entfernt die IP aus Firewall und Datenbank. `flush` hebt alle aktiven Sperren auf.
|
|
|
|
Whitelist-Regeln gelten auch für manuelle Sperren. Eine IP aus `WHITELIST` oder externer Whitelist wird nicht gesperrt.
|
|
|
|
Bulk-Kommandos senden bei aktivierten Benachrichtigungen eine zusammenfassende Freigabe-Meldung, nicht eine Nachricht pro IP.
|
|
|
|
## Progressive Sperren und Offenses
|
|
|
|
```bash
|
|
# Offense-Zähler anzeigen
|
|
sudo /opt/adguard-shield/adguard-shield offense-status
|
|
|
|
# abgelaufene Zähler entfernen
|
|
sudo /opt/adguard-shield/adguard-shield offense-cleanup
|
|
|
|
# alle Offense-Zähler zurücksetzen
|
|
sudo /opt/adguard-shield/adguard-shield reset-offenses
|
|
|
|
# Zähler für eine IP zurücksetzen
|
|
sudo /opt/adguard-shield/adguard-shield reset-offenses 192.168.1.100
|
|
```
|
|
|
|
Nützlich nach Fehlkonfigurationen:
|
|
|
|
```bash
|
|
sudo /opt/adguard-shield/adguard-shield unban 192.168.1.100
|
|
sudo /opt/adguard-shield/adguard-shield reset-offenses 192.168.1.100
|
|
```
|
|
|
|
## Firewall-Befehle
|
|
|
|
```bash
|
|
# Chain und ipsets anlegen
|
|
sudo /opt/adguard-shield/adguard-shield firewall-create
|
|
|
|
# Status anzeigen
|
|
sudo /opt/adguard-shield/adguard-shield firewall-status
|
|
|
|
# ipsets leeren
|
|
sudo /opt/adguard-shield/adguard-shield firewall-flush
|
|
|
|
# Chain, Regeln und ipsets entfernen
|
|
sudo /opt/adguard-shield/adguard-shield firewall-remove
|
|
|
|
# aktuelle iptables-Regeln sichern
|
|
sudo /opt/adguard-shield/adguard-shield firewall-save
|
|
|
|
# gespeicherte Regeln wiederherstellen
|
|
sudo /opt/adguard-shield/adguard-shield firewall-restore
|
|
```
|
|
|
|
Normalerweise musst du diese Befehle nicht manuell ausführen. Der Daemon erstellt die Firewall beim Start und schreibt aktive Sperren aus SQLite wieder hinein.
|
|
|
|
Welche Host-Chain genutzt wird, hängt von `FIREWALL_MODE` ab. Klassische Installationen und Docker Host Network nutzen `INPUT`; Docker mit veröffentlichten Ports nutzt `DOCKER-USER`. Details stehen in [Docker-Installationen](docker.md).
|
|
|
|
Gespeicherte Regeln:
|
|
|
|
```text
|
|
/var/lib/adguard-shield/iptables-rules.v4
|
|
/var/lib/adguard-shield/iptables-rules.v6
|
|
```
|
|
|
|
## Externe Whitelist
|
|
|
|
```bash
|
|
# Status anzeigen
|
|
sudo /opt/adguard-shield/adguard-shield whitelist-status
|
|
|
|
# sofort synchronisieren
|
|
sudo /opt/adguard-shield/adguard-shield whitelist-sync
|
|
|
|
# aufgelöste externe Whitelist entfernen
|
|
sudo /opt/adguard-shield/adguard-shield whitelist-flush
|
|
```
|
|
|
|
Die externe Whitelist kann IPs, CIDR-Netze und Hostnamen enthalten. Hostnamen werden per DNS aufgelöst und als IPs in SQLite gespeichert.
|
|
|
|
Wichtig:
|
|
|
|
- Eine gewhitelistete IP wird nicht gesperrt.
|
|
- Wird eine bereits gesperrte IP später gewhitelistet, wird sie freigegeben.
|
|
- Die dauerhafte Synchronisation läuft im Daemon.
|
|
- `whitelist-sync` erzwingt nur einen einzelnen Lauf.
|
|
|
|
## Externe Blocklist
|
|
|
|
```bash
|
|
# Status anzeigen
|
|
sudo /opt/adguard-shield/adguard-shield blocklist-status
|
|
|
|
# sofort synchronisieren
|
|
sudo /opt/adguard-shield/adguard-shield blocklist-sync
|
|
|
|
# alle Sperren aus externer Blocklist aufheben
|
|
sudo /opt/adguard-shield/adguard-shield blocklist-flush
|
|
```
|
|
|
|
Die externe Blocklist kann IPs, CIDR-Netze und Hostnamen enthalten. Hostnamen werden aufgelöst. Einträge aus der Whitelist werden übersprungen.
|
|
|
|
Wenn `EXTERNAL_BLOCKLIST_AUTO_UNBAN=true` gesetzt ist, hebt der Daemon Blocklist-Sperren wieder auf, sobald sie nicht mehr in der externen Liste vorkommen.
|
|
|
|
## GeoIP
|
|
|
|
```bash
|
|
# Status anzeigen
|
|
sudo /opt/adguard-shield/adguard-shield geoip-status
|
|
|
|
# aktuelle Clients aus dem Querylog einmalig prüfen
|
|
sudo /opt/adguard-shield/adguard-shield geoip-sync
|
|
|
|
# alle GeoIP-Sperren aufheben
|
|
sudo /opt/adguard-shield/adguard-shield geoip-flush
|
|
|
|
# Cache leeren
|
|
sudo /opt/adguard-shield/adguard-shield geoip-flush-cache
|
|
|
|
# einzelne IP nachschlagen
|
|
sudo /opt/adguard-shield/adguard-shield geoip-lookup 8.8.8.8
|
|
```
|
|
|
|
GeoIP-Sperren sind permanent, werden aber bei Konfigurationsänderungen automatisch neu bewertet.
|
|
|
|
## Reports
|
|
|
|
```bash
|
|
# Konfiguration und Cron-Status anzeigen
|
|
sudo /opt/adguard-shield/adguard-shield report-status
|
|
|
|
# HTML-Report in Datei schreiben
|
|
sudo /opt/adguard-shield/adguard-shield report-generate html /tmp/adguard-shield-report.html
|
|
|
|
# Text-Report auf stdout ausgeben
|
|
sudo /opt/adguard-shield/adguard-shield report-generate txt
|
|
|
|
# Testmail senden
|
|
sudo /opt/adguard-shield/adguard-shield report-test
|
|
|
|
# aktuellen Report senden
|
|
sudo /opt/adguard-shield/adguard-shield report-send
|
|
|
|
# Cron-Job installieren
|
|
sudo /opt/adguard-shield/adguard-shield report-install
|
|
|
|
# Cron-Job entfernen
|
|
sudo /opt/adguard-shield/adguard-shield report-remove
|
|
```
|
|
|
|
Der Cron-Job liegt hier:
|
|
|
|
```text
|
|
/etc/cron.d/adguard-shield-report
|
|
```
|
|
|
|
## Dry-Run
|
|
|
|
```bash
|
|
sudo /opt/adguard-shield/adguard-shield dry-run
|
|
```
|
|
|
|
Der Dry-Run ist der sicherste Weg, neue Konfigurationen zu prüfen.
|
|
|
|
Im Dry-Run:
|
|
|
|
- werden Querylogs normal gelesen
|
|
- Rate-Limit, Subdomain-Flood, Watchlist, externe Blocklist und GeoIP werden ausgewertet
|
|
- mögliche Sperren landen als `DRY` in der History
|
|
- es werden keine aktiven Bans angelegt
|
|
- es werden keine Firewall-Regeln gesetzt
|
|
|
|
Typischer Ablauf nach größeren Änderungen:
|
|
|
|
```bash
|
|
sudo /opt/adguard-shield/adguard-shield dry-run
|
|
sudo /opt/adguard-shield/adguard-shield history 50
|
|
sudo /opt/adguard-shield/adguard-shield logs --level warn --limit 80
|
|
```
|
|
|
|
## Typische Betriebsabläufe
|
|
|
|
### Nach Konfigurationsänderung
|
|
|
|
```bash
|
|
sudo systemctl restart adguard-shield
|
|
sudo /opt/adguard-shield/adguard-shield status
|
|
sudo /opt/adguard-shield/adguard-shield logs --level info --limit 80
|
|
```
|
|
|
|
### Falsch gesperrte IP freigeben
|
|
|
|
```bash
|
|
sudo /opt/adguard-shield/adguard-shield unban 192.168.1.100
|
|
sudo /opt/adguard-shield/adguard-shield reset-offenses 192.168.1.100
|
|
```
|
|
|
|
Danach die IP dauerhaft in `WHITELIST` oder eine externe Whitelist aufnehmen.
|
|
|
|
### Externe Listen neu laden
|
|
|
|
```bash
|
|
sudo /opt/adguard-shield/adguard-shield whitelist-sync
|
|
sudo /opt/adguard-shield/adguard-shield blocklist-sync
|
|
sudo /opt/adguard-shield/adguard-shield status
|
|
```
|
|
|
|
### Firewall neu aufbauen
|
|
|
|
```bash
|
|
sudo /opt/adguard-shield/adguard-shield firewall-remove
|
|
sudo /opt/adguard-shield/adguard-shield firewall-create
|
|
sudo systemctl restart adguard-shield
|
|
```
|
|
|
|
Nach dem Neustart schreibt der Daemon aktive Sperren aus SQLite wieder in die Firewall.
|
|
|
|
### Service-Problem eingrenzen
|
|
|
|
```bash
|
|
sudo systemctl status adguard-shield
|
|
sudo journalctl -u adguard-shield --no-pager -n 100
|
|
sudo /opt/adguard-shield/adguard-shield test
|
|
sudo /opt/adguard-shield/adguard-shield logs --level debug --limit 100
|
|
```
|
|
|
|
## DNS-Abfragen zum Testen
|
|
|
|
Die folgenden Befehle sind ausschließlich für kontrollierte Tests gegen deinen eigenen DNS-Server gedacht. Ersetze `203.0.113.50` durch deine eigene DNS-Server-IP und `example.com` durch eine Testdomain.
|
|
|
|
Nicht gegen fremde DNS-Server, fremde Dienste oder fremde Infrastruktur verwenden.
|
|
|
|
### Voraussetzungen auf dem Testclient
|
|
|
|
```bash
|
|
# klassisches DNS
|
|
sudo apt install dnsutils
|
|
|
|
# DoH
|
|
sudo apt install curl
|
|
|
|
# DoT
|
|
sudo apt install knot-dnsutils
|
|
```
|
|
|
|
### Klassisches DNS
|
|
|
|
Gleiche Domain mehrfach abfragen:
|
|
|
|
```bash
|
|
for i in {1..40}; do \
|
|
dig @203.0.113.50 example.com +short +cookie=$(openssl rand -hex 8) > /dev/null & \
|
|
done; wait
|
|
```
|
|
|
|
Viele zufällige Subdomains:
|
|
|
|
```bash
|
|
for i in {1..60}; do \
|
|
dig @203.0.113.50 $(openssl rand -hex 6).example.com +short > /dev/null & \
|
|
done; wait
|
|
```
|
|
|
|
### DNS over HTTPS
|
|
|
|
```bash
|
|
for i in {1..40}; do \
|
|
curl -s -H "accept: application/dns-json" \
|
|
"https://203.0.113.50/dns-query?name=example.com&type=A" > /dev/null & \
|
|
done; wait
|
|
```
|
|
|
|
Bei selbstsigniertem Zertifikat auf dem eigenen Testserver kann für diesen lokalen Test `-k` ergänzt werden.
|
|
|
|
### DNS over TLS
|
|
|
|
```bash
|
|
for i in {1..40}; do \
|
|
kdig @203.0.113.50 example.com +tls +short > /dev/null & \
|
|
done; wait
|
|
```
|
|
|
|
Die Beispielzahlen liegen bewusst nahe an den Standardlimits `RATE_LIMIT_MAX_REQUESTS=30` und `SUBDOMAIN_FLOOD_MAX_UNIQUE=50`.
|
|
|
|
## Eingebaute Hilfe
|
|
|
|
```bash
|
|
/opt/adguard-shield/adguard-shield --help
|
|
```
|
|
|
|
Bei unbekannten Befehlen gibt das Binary die Usage-Ausgabe aus. Der wichtigste Merksatz für die Go-Version:
|
|
|
|
```bash
|
|
sudo /opt/adguard-shield/adguard-shield <befehl>
|
|
```
|
|
|
|
Nicht mehr:
|
|
|
|
```bash
|
|
sudo /opt/adguard-shield/adguard-shield.sh <befehl>
|
|
```
|