AdguardHome + Unbound

Hallo zusammen,

ich habe gestern AdguardHome + Unbound in einem LXC Container über PromoxVE installiert. Da ich ein absoluter Anfänger in Sachen Linux etc. bin, habe ich den letzten Tagen viel gelesen. Nun habe ich aber einen dicken Schädel vor lauter Infos erhalten :slight_smile:

Wenn ich in der Shell „systemctl status unbound“ eingebe, erhalte ich folg. Fehlermeldung…

adguardhome unbound[135]: [1703977886] unbound[135:0] warning: so-rcvbuf 1048576 was not granted. Got 425984. To fix: start with root permissions(linux) or sysctl bigger net.core.rmem_max(linux) or kern.ipc.maxsockbuf(bsd) values.

adguardhome unbound: [135:0] warning: subnetcache: serve-expired is set but not working for data originating from the subnet module cache.

adguardhome unbound: [135:0] warning: subnetcache: prefetch is set but not working for data originating from the subnet mod

Natürlich habe ich bereits nach diesen Fehlermeldungen im Netz geschaut…aber so richtig fündig bin ich leider nicht geworden. Habt ihr evtl. einen Tipp für mich? Besten Dank im Voraus.

Lösungswege werden dort schon genannt :wink:

To fix: start with root permissions(linux) or sysctl bigger net.core.rmem_max(linux) or kern.ipc.maxsockbuf(bsd) values.

Nun ja, als Anfänger habe ich eben leider Schwierigkeiten die (sind es drei?) Lösungsvorschläge zu interpretieren.

Mit Suchbegriffen adguard lxc warning so-rcvbuf was not granted finde ich z.B. das hier:

Da ich weder Adguard noch Proxmox verwende, kann ich nur indirekt helfen, allerdings findet man mit den Suchbegriffen nicht gerade wenig :wink:

Du kannst mir glauben, dass ich darüber zwar schon einiges finden konnte, aber eine konkrete Lösung habe ich bis dato leider nicht finden können. Möglicherweise kann ein Eintrag in /etc/sysctl.conf helfen.

Ich habe soeben ProxmoxVE neu gestartet, und die Fehlermeldung taucht plötzlich nicht mehr auf.

Aber es gibt noch einen Eintrag, der da lautet:

ExecStartPre=/usr/libexec/unbound-helper chroot_setup (code=exited, status=1/FAILURE)

Was könnte das bedeuten?

Poste bitte mal die komplette Ausgabe zu dieser Meldung. Weiter unten sollten dann die notwendigen Informationen stehen.

Ein frohes neues Jahr! :slight_smile:

root@adguardhome:~# systemctl status unbound
* unbound.service - Unbound DNS server
     Loaded: loaded (/lib/systemd/system/unbound.service; enabled; preset: enabled)
     Active: active (running) since Sun 2023-12-31 20:25:13 CET; 22h ago
       Docs: man:unbound(8)
    Process: 120 ExecStartPre=/usr/libexec/unbound-helper chroot_setup (code=exited, status=1/FAILURE)
    Process: 132 ExecStartPre=/usr/libexec/unbound-helper root_trust_anchor_update (code=exited, status=0/SUCCESS)
   Main PID: 135 (unbound)
      Tasks: 1 (limit: 18888)
     Memory: 16.1M
        CPU: 53.103s
     CGroup: /system.slice/unbound.service
             `-135 /usr/sbin/unbound -d -p

Jan 01 18:58:34 adguardhome unbound[135]: [135:0] info:    0.524288    1.000000 150
Jan 01 18:58:34 adguardhome unbound[135]: [135:0] info:    1.000000    2.000000 147
Jan 01 18:58:34 adguardhome unbound[135]: [135:0] info:    2.000000    4.000000 108
Jan 01 18:58:34 adguardhome unbound[135]: [135:0] info:    4.000000    8.000000 58
Jan 01 18:58:34 adguardhome unbound[135]: [135:0] info:    8.000000   16.000000 42
Jan 01 18:58:34 adguardhome unbound[135]: [135:0] info:   16.000000   32.000000 62
Jan 01 18:58:34 adguardhome unbound[135]: [135:0] debug: cache memory msg=1725345 rrset=1699046 infra=665392 val=348996 subnet=140552
Jan 01 18:58:34 adguardhome unbound[135]: [135:0] debug: svcd callbacks end
Jan 01 18:58:34 adguardhome unbound[135]: [135:0] debug: close of port 16004
Jan 01 18:58:34 adguardhome unbound[135]: [135:0] debug: close fd 12

Der Dienst läuft anscheinend. Vermutlich stimmt irgendwas mit der unbound config nicht. Ob das notwendig ist, damit Adguard funktioniert, weiß ich nicht. In der offiziellen unbound Dokumentation kann man entweder chroot korrekt setzen oder deaktivieren:

By default the Unbound configuration uses chroot to provide an extra layer of defence against remote exploits. If Unbound is not starting because it cannot access files due to permission errors caused by chroot, a solution can be to enter file paths as full pathnames starting at the root of the file system (/). Otherwise, if chroot is not required you can disable it in the configuration file:

server: 
  # disable chroot
  chroot: ""

PS: Setzte solche Ausgaben am besten in Codeblöcke. Wie das funktioniert, siehst du wenn du deinen letzten Beitrag bearbeitest :wink:

Als Anfänger hätte ich dietPi installiert. Die Installation von Adguard und unbound ist viel leichter und läuft tadellos.
Ein Proxmox Server einzurichten, als Anfänger hört sich für mich so an als das viel „copy and paste“ gemacht wurde ohne wirklich eine Anhung zu haben was man macht.
Ist nicht wirklich ein guter Weg :man_shrugging:

1 „Gefällt mir“

Ich hatte dietPi mit Pihole + Unbound auf einem Raspi zunächst auch installiert. Dann habe mir für einen ersten Test einen Dell Wyse 5070 zugelegt habe, um mit Proxmox erste Erfahrungen sammeln zu können. Wo soll man als Anfänger deiner Meinung nach anfangen? Natürlich schaut man sich Tutorials an und lernt somit z.B. den ersten LXC Container zu erstellen etc.

Irgendwie habe ich das Gefühl, dass Anfänger häufig müde belächelt werden. Ich habe bis vor wenigen Tagen keine Ahnung von einem DNS-Server gehabt. Inzwischen habe ich jedoch viel darüber lesen können, und inzwischen weiß ich auch etwas mit den ganzen Begrifflichkeiten wie Root-Server etc. anzufangen.

Ohne das ich etwas verändert habe bekomme ich aber nun leider folg. Meldung:

root@adguardhome:~# service unbound status
x unbound.service - Unbound DNS server
     Loaded: loaded (/lib/systemd/system/unbound.service; enabled; preset: enabled)
     Active: failed (Result: exit-code) since Tue 2024-01-02 12:52:23 CET; 34min ago
       Docs: man:unbound(8)
    Process: 214 ExecStartPre=/usr/libexec/unbound-helper chroot_setup (code=exited, status=1/FAILURE)
    Process: 216 ExecStartPre=/usr/libexec/unbound-helper root_trust_anchor_update (code=exited, status=0/SUCCESS)
    Process: 218 ExecStart=/usr/sbin/unbound -d -p $DAEMON_OPTS (code=exited, status=1/FAILURE)
    Process: 219 ExecStopPost=/usr/libexec/unbound-helper chroot_teardown (code=exited, status=0/SUCCESS)
   Main PID: 218 (code=exited, status=1/FAILURE)
        CPU: 49ms

Notice: journal has been rotated since unit was started, output may be incomplete.
root@adguardhome:~#

Kurzer Zwischenstand:

Ich habe plötzlich eine CPU-Auslastung von fast 100 % gehabt. Die Boot-Disk-Größe hatte ich anfangs auf 2 GB gesetzt. Offensichtlich war dies zu wenig, denn 93 % waren belegt. Ich habe gelernt, dass man mit dem Befehl pct resize die Speichergröße verändern kann. Den Befehl habe ich im Knoten ausgeführt und den Speicher auf 8 GB erhöht. Die Speicherauslastung ist nun wieder unter 1 %. Das Problem hätte ich gelöst. Was bleibt ist, dass ich mit dem Befehl nano die /etc/unbound/unbound.conf.d/config.conf nicht verändern kann. Ich erhalte folg. Fehlermeldung:

Bad lock file is ignored: /etc/unbound/unbound.conf.d/.config.conf.swp

War echt nicht Böse gemeint, war bei mir am Anfang auch so. Ich habe wirklich nur gute Erfahrungen mit dietPi und Adguard Home + unbound gemacht. Proxmox scheint mir einfach eher für Profis gedacht bzw. für Menschen die sich wirklich viel mit IT beschäftigen. Da es einfach viele Fallstricke gibt besonders bei der Konfiguration sollte man wissen was man macht, oder auch nicht :wink:

1 „Gefällt mir“

Vorab: Habe meine LXC-Hosts vor Jahren durch LXD (das auf LXC aufsetzt) ersetzt. Hier bestehen ähnliche aber im Detail andere Schwierigkeiten. Konkrete Einstellungen zur Lösung des Problems kann ich also nicht liefern.

Zu sehen ist aber:
Unbound möchte Resourcen allokieren die der Container nicht im nötigen Umfang hat. Daneben Operationen ausführen, für die der Container keine Berechtigung hat.

Die Container sind im Standard auf Sicherheit konfiguriert. Für manche Software reicht das nicht.
Man muss dann die Konfiguration des Containers anpassen. Zu den genannten Resourcen gibt es passende Parameter.

Mittlerweile lasse ich zwar auch fast alles im Container laufen, jedoch nur, wenn ich die Security nicht aufweichen muss.

Für Mailserver, auf denen bei mir auch immer ein Unbound läuft, verwende ich stattdessen gleich eine VM. Damit gibt es diese Herausforderungen nicht. Bei Proxmox kann man neben Containern mit LXC auch VMs mit KVM erstellen.

Im Grunde läuft Unbound auch soweit. Die Fehlermeldungen „nerven“ mich nur etwas :slight_smile:

# disable chroot
  chroot: ""

…hat nicht geholfen. Fehlermeldung wird nach wie vor angezeit.

Jetzt auch wieder…

Jan 02 20:35:20 adguardhome unbound[345]: [1704224120] unbound[345:0] warning: so-rcvbuf 1048576 was not granted. Got 425984. To fix: start with root permissions(linux) or sys>
Jan 02 20:35:20 adguardhome unbound[345]: [1704224120] unbound[345:0] warning: so-rcvbuf 1048576 was not granted. Got 425984. To fix: start with root permissions(linux) or sys>
Jan 02 20:35:20 adguardhome unbound[345]: [1704224120] unbound[345:0] warning: so-rcvbuf 1048576 was not granted. Got 425984. To fix: start with root permissions(linux) or sys>
Jan 02 20:35:20 adguardhome unbound[345]: [1704224120] unbound[345:0] warning: so-rcvbuf 1048576 was not granted. Got 425984. To fix: start with root permissions(linux) or sys>
Jan 02 20:35:20 adguardhome unbound[345]: [345:0] notice: init module 0: subnetcache
Jan 02 20:35:20 adguardhome unbound[345]: [345:0] warning: subnetcache: prefetch is set but not working for data originating from the subnet module cache.
Jan 02 20:35:20 adguardhome unbound[345]: [345:0] notice: init module 1: validator
Jan 02 20:35:20 adguardhome unbound[345]: [345:0] notice: init module 2: iterator
Jan 02 20:35:21 adguardhome systemd[1]: Started unbound.service - Unbound DNS server.
Jan 02 20:35:21 adguardhome unbound[345]: [345:0] info: start of service (unbound 1.17.1).

Ich habe die sysctl-Variablen in der Datei /etc/sysctl.conf geändert…dennoch bleiben die Fehlermeldungen bestehen. Ich gebe für heute erst einmal auf :frowning:

root@adguardhome:~# grep -v '#\|^$' -R /etc/unbound/unbound.conf*
/etc/unbound/unbound.conf:include-toplevel: "/etc/unbound/unbound.conf.d/*.conf"
/etc/unbound/unbound.conf.d/root-auto-trust-anchor-file.conf:server:
/etc/unbound/unbound.conf.d/root-auto-trust-anchor-file.conf:    auto-trust-anchor-file: "/var/lib/unbound/root.key"
/etc/unbound/unbound.conf.d/remote-control.conf:remote-control:
/etc/unbound/unbound.conf.d/remote-control.conf:  control-enable: yes
/etc/unbound/unbound.conf.d/remote-control.conf:  control-interface: /run/unbound.ctl
/etc/unbound/unbound.conf.d/config.conf:server:
/etc/unbound/unbound.conf.d/config.conf:    chroot: ""
/etc/unbound/unbound.conf.d/config.conf:  interface: 127.0.0.1
/etc/unbound/unbound.conf.d/config.conf:  port: 5335
/etc/unbound/unbound.conf.d/config.conf:  
/etc/unbound/unbound.conf.d/config.conf:  do-ip6: no
/etc/unbound/unbound.conf.d/config.conf:  do-ip4: yes
/etc/unbound/unbound.conf.d/config.conf:  do-udp: yes
/etc/unbound/unbound.conf.d/config.conf:  
/etc/unbound/unbound.conf.d/config.conf:  num-threads: 2
/etc/unbound/unbound.conf.d/config.conf:  
/etc/unbound/unbound.conf.d/config.conf:  hide-identity: yes
/etc/unbound/unbound.conf.d/config.conf:  hide-version: yes
/etc/unbound/unbound.conf.d/config.conf:  
/etc/unbound/unbound.conf.d/config.conf:  harden-glue: yes
/etc/unbound/unbound.conf.d/config.conf:  harden-dnssec-stripped: yes
/etc/unbound/unbound.conf.d/config.conf:  harden-referral-path: yes
/etc/unbound/unbound.conf.d/config.conf:  use-caps-for-id: yes
/etc/unbound/unbound.conf.d/config.conf:  harden-algo-downgrade: yes
/etc/unbound/unbound.conf.d/config.conf:  qname-minimisation: yes
/etc/unbound/unbound.conf.d/config.conf:  
/etc/unbound/unbound.conf.d/config.conf:  unwanted-reply-threshold: 10000000
/etc/unbound/unbound.conf.d/config.conf:  
/etc/unbound/unbound.conf.d/config.conf:  cache-min-ttl: 1200
/etc/unbound/unbound.conf.d/config.conf:  
/etc/unbound/unbound.conf.d/config.conf:  cache-max-ttl: 14400
/etc/unbound/unbound.conf.d/config.conf:  
/etc/unbound/unbound.conf.d/config.conf:  prefetch: yes
/etc/unbound/unbound.conf.d/config.conf:  prefetch-key: yes
/etc/unbound/unbound.conf.d/config.conf:  
/etc/unbound/unbound.conf.d/config.conf:  msg-cache-slabs: 8
/etc/unbound/unbound.conf.d/config.conf:  rrset-cache-slabs: 8
/etc/unbound/unbound.conf.d/config.conf:  infra-cache-slabs: 8
/etc/unbound/unbound.conf.d/config.conf:  key-cache-slabs: 8
/etc/unbound/unbound.conf.d/config.conf:  
/etc/unbound/unbound.conf.d/config.conf:  rrset-cache-size: 256m
/etc/unbound/unbound.conf.d/config.conf:  msg-cache-size: 128m
/etc/unbound/unbound.conf.d/config.conf:  
/etc/unbound/unbound.conf.d/config.conf:  so-rcvbuf: 8m
/etc/unbound/unbound.conf.d/config.conf:  
/etc/unbound/unbound.conf.d/config.conf:  private-address: 192.168.0.0/16
/etc/unbound/unbound.conf.d/config.conf:  private-address: 169.254.0.0/16
/etc/unbound/unbound.conf.d/config.conf:  private-address: 172.16.0.0/12
/etc/unbound/unbound.conf.d/config.conf:  private-address: 10.0.0.0/8
/etc/unbound/unbound.conf.d/config.conf:  private-address: fd00::/8
/etc/unbound/unbound.conf.d/config.conf:  private-address: fe80::/10
root@adguardhome:~#

Die Einträge in sysctl beeinflussen den Kernel. Im Container wird aber der Kernel des Wirts durchgereicht und dessen Konfigurtaion kann aus dem Container heraus nicht geändert werden.
Du musst die Konfiguration des Containers ändern.
Unter https://discuss.linuxcontainers.org ist das Forum für LXC. Da habe ich früher gute Erfahrungen gemacht. Ebenso soll das Forum von Proxmox auch hilfreich sein. Ich finde leider kein Container-Archiv mehr, bei dem ich die Config angepasst habe.

1 „Gefällt mir“

Das sind Kernel-Parameter. Ein unpriviligierter LXC-Container hat keinen Zugriff auf Kernel-Variablen des Hosts.

Wenn du so-rcvbuf setzen möchtest, musst du das also auf dem Host machen, nicht im Container.

Das sind keine Fehler, sondern Warnungen. Und die kannst du ignorieren. Das ist normal, wenn du serve-expired und prefetch aktiviert hast.

1 „Gefällt mir“

Besten Dank für eure Hinweise. Was würdet ihr mir empfehlen? AGH + Unbound in einer KVM oder einen neuen aber privilegierten LXC Container erstellen? Oder vielleicht es dabei sogar vorerst belassen, da es im Grund ja soweit zu laufen scheint.

@bamf hat ja bereits darauf hingewiesen, das man die Warnungen ignorieren kann.
Es gibt viel Software, die in gewissen Konstellationen permanent Warnungen ausgibt, ohne das gebrauchsbeeinträchtigende Fehler auftreten.

Persönlich würde ich da nicht auf was anderes wechseln, es läuft ja.
Unbound ist auch nichts, was man nicht auch im Container laufen lassen kann. Kenne auch Installationen von Unbound in Containern.

1 „Gefällt mir“

Das ist ein reines Performance-Setting, das du in der unbound.conf selbst gesetzt hast. so-rcvbuf definiert die Größe des Socket Receive Buffer.

So lange dein Server nicht so ausgelastet ist, dass Nachrichten verloren gehen, kannst du das ignorieren. Wenn du den Fehler loswerden möchtest, schmeiß die Option aus der Config.

Ok. Das habe ich soweit verstanden. Dann hätte ich noch eine weitere Verständnisfrage. Es heißt, dass im Paketmanager während der Installation von Unbound die Datei root.hints automatisch installiert wird und sich diese auch aktualisiert, wenn das Paket regelmäßig aktualisiert wird, richtig?

Die root.hints kommt aus dem Paket dns-root-data und das sollte als Abhängigkeit mit auf deiner Platte gelandet sein.

root@AdGuard:~# dpkg -l | grep dns-root-data
ii  dns-root-data               2023010101                       all          DNS root data including root zone and DNSSEC key