dnsmasq: enable log-dhcp permanently; document rogue-DHCP-server incident
Found and fixed a second, uncontrolled DHCP server on the LAN (a WiFi router still in router mode instead of access-point mode) that was intermittently handing out wrong DNS/IP config to clients. log-dhcp was key to spotting it via the 'wrong server-ID' DHCPNAK pattern, so keeping it enabled going forward; log-queries (diagnostic-only, noisy) was removed again.
This commit is contained in:
@@ -54,6 +54,7 @@ mehr von Hand in `dnsmasq.d` gepflegt, sondern über das Tool
|
|||||||
| Port-Forwarding-Include | `/etc/nftables.conf` bindet `/etc/nftables.d/*.conf` ein (dort generiert `ipadm` die Port-Forward-Regeln) | `/etc/nftables.conf` (Zeile am Ende) | [`config/nftables.conf`](config/nftables.conf) |
|
| Port-Forwarding-Include | `/etc/nftables.conf` bindet `/etc/nftables.d/*.conf` ein (dort generiert `ipadm` die Port-Forward-Regeln) | `/etc/nftables.conf` (Zeile am Ende) | [`config/nftables.conf`](config/nftables.conf) |
|
||||||
| DHCP + DNS | dnsmasq: DHCP-Pool, Gateway/DNS-Option, DNS-Forwarding | `/etc/dnsmasq.d/lan.conf` | [`config/dnsmasq.d/lan.conf`](config/dnsmasq.d/lan.conf) |
|
| DHCP + DNS | dnsmasq: DHCP-Pool, Gateway/DNS-Option, DNS-Forwarding | `/etc/dnsmasq.d/lan.conf` | [`config/dnsmasq.d/lan.conf`](config/dnsmasq.d/lan.conf) |
|
||||||
| DNS-Includes aktiviert | eine Zeile in `/etc/dnsmasq.conf` einkommentiert: `conf-dir=/etc/dnsmasq.d/,*.conf` | `/etc/dnsmasq.conf` | – (Rest der Datei ist Debian-Standard, nicht gespiegelt) |
|
| DNS-Includes aktiviert | eine Zeile in `/etc/dnsmasq.conf` einkommentiert: `conf-dir=/etc/dnsmasq.d/,*.conf` | `/etc/dnsmasq.conf` | – (Rest der Datei ist Debian-Standard, nicht gespiegelt) |
|
||||||
|
| DHCP-Logging | `log-dhcp` aktiviert (zeigt DHCPDISCOVER/OFFER/REQUEST/ACK/NAK in `journalctl -u dnsmasq`) — war entscheidend, um am 2026-08-19 einen rogue DHCP-Server im LAN zu finden | `/etc/dnsmasq.d/90-logging.conf` | [`config/dnsmasq.d/90-logging.conf`](config/dnsmasq.d/90-logging.conf) |
|
||||||
| Statische Hosts (DHCP-Reservierung + DNS) | von `ipadm` generiert, **nicht** von Hand editieren | `/etc/dnsmasq.d/hosts.conf` (generiert) + `/etc/ipadm/hosts` (Datenbank) | – (live Daten, siehe [`tools/ipadm/`](tools/ipadm/)) |
|
| Statische Hosts (DHCP-Reservierung + DNS) | von `ipadm` generiert, **nicht** von Hand editieren | `/etc/dnsmasq.d/hosts.conf` (generiert) + `/etc/ipadm/hosts` (Datenbank) | – (live Daten, siehe [`tools/ipadm/`](tools/ipadm/)) |
|
||||||
| Port-Forwards (WAN → LAN-Host) | von `ipadm` generiert, **nicht** von Hand editieren | `/etc/nftables.d/portforward.conf` (generiert) + `/etc/ipadm/portforwards` (Datenbank) | – (live Daten, siehe [`tools/ipadm/`](tools/ipadm/)) |
|
| Port-Forwards (WAN → LAN-Host) | von `ipadm` generiert, **nicht** von Hand editieren | `/etc/nftables.d/portforward.conf` (generiert) + `/etc/ipadm/portforwards` (Datenbank) | – (live Daten, siehe [`tools/ipadm/`](tools/ipadm/)) |
|
||||||
| dnsmasq-Resilienz | `Restart=on-failure` (Default war `no`), damit dnsmasq bei einem Boot-Race mit `enp7s0` nicht dauerhaft tot bleibt | `/etc/systemd/system/dnsmasq.service.d/override.conf` | [`config/systemd/dnsmasq.service.d/override.conf`](config/systemd/dnsmasq.service.d/override.conf) |
|
| dnsmasq-Resilienz | `Restart=on-failure` (Default war `no`), damit dnsmasq bei einem Boot-Race mit `enp7s0` nicht dauerhaft tot bleibt | `/etc/systemd/system/dnsmasq.service.d/override.conf` | [`config/systemd/dnsmasq.service.d/override.conf`](config/systemd/dnsmasq.service.d/override.conf) |
|
||||||
@@ -217,6 +218,25 @@ ip link show enp7s0
|
|||||||
cat /sys/class/net/enp7s0/carrier
|
cat /sys/class/net/enp7s0/carrier
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Rogue DHCP-Server erkennen (z.B. "falscher Nameserver"-Symptom)
|
||||||
|
|
||||||
|
Am 2026-08-19 kam die Meldung "DHCP liefert falschen Nameserver aus". Ursache
|
||||||
|
war kein Config-Fehler, sondern ein **zweiter DHCP-Server im LAN** (ein
|
||||||
|
WLAN-Router, der noch im Router- statt Access-Point-Modus lief und parallel
|
||||||
|
eigenes DHCP anbot). Erkennbar in `journalctl -u dnsmasq` (braucht `log-dhcp`,
|
||||||
|
siehe oben) an folgendem Muster:
|
||||||
|
|
||||||
|
```
|
||||||
|
DHCPOFFER(enp7s0) 10.0.0.157 <mac> ← unser Angebot
|
||||||
|
DHCPREQUEST(enp7s0) 10.0.0.151 <mac> ← Client nimmt eine andere IP an
|
||||||
|
DHCPNAK(enp7s0) 10.0.0.151 <mac> wrong server-ID ← wir lehnen zu Recht ab
|
||||||
|
```
|
||||||
|
|
||||||
|
Client hat also ein Angebot von einer fremden Quelle angenommen. Gerät mit
|
||||||
|
aktiver Web-Verwaltung im LAN suchen (z.B. `curl -I http://<verdächtige-ip>/`)
|
||||||
|
und dessen DHCP-Server deaktivieren / in Access-Point-Modus umschalten —
|
||||||
|
narcissus soll der einzige DHCP-Server im `10.0.0.0/24`-Netz sein.
|
||||||
|
|
||||||
## Sicherheitshinweise
|
## Sicherheitshinweise
|
||||||
|
|
||||||
- dnsmasq ist bewusst so konfiguriert, dass es **nur** auf `enp7s0` lauscht
|
- dnsmasq ist bewusst so konfiguriert, dass es **nur** auf `enp7s0` lauscht
|
||||||
|
|||||||
@@ -0,0 +1 @@
|
|||||||
|
log-dhcp
|
||||||
Reference in New Issue
Block a user