Files
adguard-shield/docs/docker.md
Patrick Asmus 4f17f7ff81 feat!: Migration auf Go-Binary
BREAKING CHANGE: Die alte Shell-Version muss vor der Installation der Go-Version deinstalliert werden.
2026-05-01 00:08:57 +02:00

53 lines
1.9 KiB
Markdown

# Docker-Installationen
AdGuard Shield liest weiterhin das Querylog von AdGuard Home. Der Unterschied zwischen klassisch und Docker betrifft nur die Stelle, an der die Firewall eine gesperrte Client-IP abfangen muss.
## Modus wählen
| Installation | Einstellung |
|---|---|
| AdGuard Home direkt auf dem Host | `FIREWALL_MODE="host"` |
| Docker mit `network_mode: host` | `FIREWALL_MODE="docker-host"` |
| Docker Bridge mit veröffentlichten Ports | `FIREWALL_MODE="docker-bridge"` |
| gemischtes Setup oder Migration | `FIREWALL_MODE="hybrid"` |
`docker-host` verhält sich technisch wie `host`: Die DNS-Pakete landen in der Host-`INPUT`-Chain.
Bei Docker Bridge mit `ports:` oder `-p` landen veröffentlichte Ports nach Dockers NAT-Regeln im Forwarding-Pfad. Deshalb nutzt AdGuard Shield dort `DOCKER-USER`. Diese Chain ist genau für eigene Admin-Regeln vor Dockers Container-Regeln vorgesehen.
## Beispiele
Klassisch oder Docker Host Network:
```bash
FIREWALL_MODE="host"
BLOCKED_PORTS="53 443 853"
```
Docker Bridge mit Port-Publishing:
```bash
FIREWALL_MODE="docker-bridge"
BLOCKED_PORTS="53 443 853"
```
Unklarer Übergangszustand:
```bash
FIREWALL_MODE="hybrid"
```
## Wichtige Details
- `docker-bridge` benötigt eine vorhandene IPv4-Chain `DOCKER-USER`. Wenn Docker nicht läuft oder iptables für Docker deaktiviert ist, meldet `firewall-create` einen Fehler.
- IPv6 über Docker wird nur eingehängt, wenn Docker auch eine `ip6tables`-Chain `DOCKER-USER` angelegt hat. Fehlt sie, wird IPv4 trotzdem geschützt.
- In `DOCKER-USER` wird nach Dockers DNAT gematcht. Wenn du ungewöhnliche Port-Mappings nutzt, sollten `BLOCKED_PORTS` die Container-Zielports enthalten.
- `hybrid` ist praktisch für Migrationen, kann aber mehr Verkehr treffen, weil sowohl Host-Ports als auch Docker-Forwarding geprüft werden.
Nach einer Änderung:
```bash
sudo systemctl restart adguard-shield
sudo /opt/adguard-shield/adguard-shield firewall-status
```