# DNSMASQ und Systemd auf 241-r1, blocking port 53. [info]

## ChrisJumper

Hallo,

ich hatte heute die tolle Erfahrung das Systemd jetzt auch einen ressolved Service hat um Namen aufzulösen.. warum eigentlich?

Jedenfalls startete dann dnsmasq nicht mehr sauber hoch weil der Port 53 belegt war.

Abhilfe schafte:

```
# systemctl stop systemd-resolved.service
```

Und das disablen dieses Service...

```
# systemctl disable systemd-resolved.service
```

Da frage ich mich dann schon warum das per Default eingeschaltet sein muss? Macht Systemd jetzt auch /etc/resolv.conf und die /etc/hosts überflüssig?

Ich wollte das nur mal andeuten das ich damit diese Woche kurz spaß hatte. Musste nach einem Stromausfall den Rechner neu starten, gut möglich das es schon länger so läuft.

Grüße und frohe Feiertage an alle!

Chris

----------

## mike155

 *ChrisJumper wrote:*   

> Da frage ich mich dann schon warum das per Default eingeschaltet sein muss?

 

Es ist offenbar das Ziel von Systemd, alle bisherigen low-level UNIX Dienste zu integrieren - und zwar völlig unabhängig davon, ob das aus technischer Sicht sinnvoll ist oder nicht! 

Die Integration von DNS Resolving in Systemd wurde gegen die Empfehlungen der DNS Entwickler durchgeführt. Nachlesen kann man das in diesem Thread. Dort schreibt Paul Vixie (langjähriger Maintainer von BIND und Autor des Standardwerks "DNS and BIND"), zur Eigenentwicklung von DNS Resolving Funktionen in Systemd:

 *Paul Vixie wrote:*   

> systemd, launchd, and libc, and mpr, and every other place where dns client logic is needed, should just link against getdns, and not try to understand or to improve upon the best available dns client logic.
> 
> If getdns isn't desireable for some reason then use ldns or lwdnsd.
> 
> ----
> ...

 

Und genau diese Einstellung "wir ignorieren Code und Ratschläge von anderen, weil wir alles besser können" ist das, was mich außerordentlich stört an den Systemd Entwicklern.

Zurzeit sind die Systemd Entwickler wieder aktiv. Diesmal versuchen sie, das klassische cron zu verdrängen: Siehe dieser Artikel, Punkt 4.

Borg! Das Vorgehen der Systemd Entwickler erinnert mich an die Borg! Widerlich!

----------

## schmidicom

 *ChrisJumper wrote:*   

> Da frage ich mich dann schon warum das per Default eingeschaltet sein muss?

 

Hab schon mehrere Gentoo's mit systemd aufgesetzt und es war noch nie standardmäßig aktiviert.

 *ChrisJumper wrote:*   

> Macht Systemd jetzt auch /etc/resolv.conf und die /etc/hosts überflüssig?

 

Wieso sollte es das? Einfach mal die Manpage (man systemd-resolved) lesen und es wäre klar das es eigentlich nichts anderes ist als eine optionale alternative zu net-dns/openresolv.

----------

## Josef.95

Jo, der systemd-resolved.service ist nicht per default enabled

Chris, den hast du vermutlich (in irgend einer dunklen Nacht) mal selbst enabled :)

----------

## misterjack

 *mike155 wrote:*   

> Widerlich!

 

Man kann seine Uhr danach stellen. Kaum postet jemand ein Problemchen zu systemd, kommen die Hater aus ihren Löchern gekrochen und lassen ihre Galle da.

----------

## ChrisJumper

Danke mike155, werde ich mal rein lesen.

Vielen Dank schmidicom, ich wusste nicht das diese Services eine einfache man Seite haben.

Josef.95, ich hab das nicht eingerichtet. Aber es kann sein das ich mit einem etc-update geschludert habe, vor dem Neustart. Wobei das System nicht sauber herunter gefahren war, sondern dank Stromausfall einfach die Platte augeschaltet wurde.. und ich den Rechner einfach neu gestartet hatte.

Auf der anderen Seite:

```
temd-resolved.service

● systemd-resolved.service - Network Name Resolution

   Loaded: loaded (/lib/systemd/system/systemd-resolved.service; enabled; vendo>

   Active: active (running) since Thu 2019-04-18 08:15:40 CEST; 12h ago

     Docs: man:systemd-resolved.service(8
```

Hier läuft er auch. Nein ich hab den nicht enabled.

Ob damit mein Netzwerk-Schluckauf zusammen hängt bei diversen System?

Hin und wieder braucht es 10 bis 30 Sekunden bevor ein Ping ausgeführt wird oder das System sich meldet. Wenn mal Zeit ist werde ich dem mal nach gehen, jetzt aber erst mal überall system-resolve aufheben.

misterjack, ja das mit Systemd ist ein wenig... seltsam. Zum einen finde ich die Modernisierung gut und nicht alles schlecht. Aber solche Aktionen stören mich dann doch ein wenig. Warum ist Systemd nicht so Clever und schaut vorher ob ein Prozess/Service den es schon tausend mal gestartet hat den Port braucht? Ihn einfach nur blockieren ist blöd und dummes Design.

Andererseits lernt man nur aus Fehlern und den einen Hatertum vorzuwerfen bringt da nichts. Die Sprache ist aber auch da viel zu gefühlsbetont, aber es geht Mike halt nahe. Wenn dann auch genug Energie in die Systemd-Freie alternative, wie zuletzt bei Gnome 3 ohne Systemd (vielen Dank an alle Beteiligten!). Fließt, dann ist das gut.

Generell begrüße ich alle die auch die normalen Mechanismen mal hinterfragen umschreiben wollen und Prüfen und sich den Code genau anschauen, was warum wie gebraucht wird und nicht geht. Sowohl aus einem technischen Interesse heraus als auch aus Abneigung. Man kann halt besser verstehen wie etwas technisch gelöst ist wenn es beobachtet wird. Nur dadurch werden bessere und andere Lösungen gefunden, allein dafür bin ich dann doch auch Systemd dankbar. Mir ist wichtig das man halt auch noch alternativen hat.

Ich war aber ein wenig verwirrt als meine WLAN-Nutzer keiner IPs mehr bekommen haben weil DNSMASQ nicht mehr startete.

----------

## mike155

Hallo ChrisJumper,

danke für Deine verständnisvollen Worte!  :Smile:  Normalerweise bin ich gar nicht so ein Hater - aber die Aufforderung letzte Woche von Lennart Poettering an die Fedora Entwickler, doch bitte Cron nicht mehr zu standardmäßig installieren (und stattdessen lieber Systemd Timer Units zu verwenden) ist schon ganz schön dreist! Da muss man doch aufstehen und sagen: Jetzt reicht's!

Auf meinem Internet Gateway habe ich auch Systemd und dnsmasq installiert. Ich habe das folgendermaßen konfiguriert:

Systemd ist mit folgenden USE flags installiert: "pam seccomp split-usr sysv-utils". Alle andere Use Flags sind deaktiviert.

systemd-resolved habe ich disabled:

```
systemctl disable systemd-resolved.service
```

Weiter oben wurde geschrieben: "systemd-resolved.service ist nicht per default enabled". Wenn ich "systemctl status systemd-resolved" eingebe, erhalte ich als Ausgabe: "disabled; vendor preset: enabled". Klingt so, als wäre es vielleicht doch standardmäßig enabled?

Zum Konfigurieren des Netzwerks verwende ich systemd-networkd. Ich habe folgende Konfigurationsdateien:

/etc/systemd/network/50-static.network (Richtung internes Netz)

```
[Match]

Name=eth0

[Network]

Address=10.0.0.1/24
```

/etc/systemd/network/51-static.network (Richtung Internet)

```
[Match]

Name=eth1

[Network]

Address=192.168.2.2/24
```

/etc/resolv.conf ist eine eigene Datei (Wichtig: kein Link!). Ich habe sie selbst erstellt mit folgendem Inhalt:

```
name server 10.0.0.1

search mydomain

domain mydomain
```

Falls Du statt statischer IP-Adressen DHCP einsetzen solltest: konfiguriere den DHCP Client so, dass er nicht /etc/resolv.conf überschreibt. Das machen DHCP Clients leider ganz gerne - und  dann gibt es Chaos.

dnsmasq lauscht auf 10.0.0.1, Port 53. An diesen Socket werden alle lokalen DNS Anfragen gesendet (über /etc/resolv.conf). Auch die anderen Rechner in meinem internen Netz verwenden diesen Socket, weil auf ihnen auch die oben gezeigte /etc/resolv.conf installiert ist.

In /etc/dnsmasq.conf steht u.a:

```
listen-address=10.0.0.1

domain=mydomain

cache-size=8192

# Forwading nameservers

no-resolv

no-poll

server=<DNS Server des Providers 1>

server=<DNS Server des Providers 1>

min-port=1024

max-port=65500

# Filter requests to DNS server

domain-needed

bogus-priv

filterwin2k
```

Ich bin benutze dnsmasq als DNS Resolver/Cache, zum Filtern von DNS Requests und als DHCP Server.

Dnsmasq läuft bei mir sehr stabil und ich bin rundherum zufrieden!

Mike

----------

## Josef.95

 *mike155 wrote:*   

> [*]systemd-resolved habe ich disabled:
> 
> ```
> systemctl disable systemd-resolved.service
> ```
> ...

 

Nee, wenn der Service enabled wäre, dann wäre die Ausgabe "enabled; vendor preset: enabled)"

Ich hab mir aber auch noch mal die Mühe gemacht und ein stage3-amd64-systemd-20190413.tar.bz2 heruntergeladen, und nach /tmp/gentoo/ entpackt, und nachgesehen.

```
ls -l etc/systemd/system/  etc/systemd/system/multi-user.target.wants/

etc/systemd/system/:

insgesamt 0

drwxr-xr-x 2 josef josef 60 13. Apr 16:13 getty.target.wants

drwxr-xr-x 2 josef josef 80 13. Apr 16:13 multi-user.target.wants

etc/systemd/system/multi-user.target.wants/:

insgesamt 0

lrwxrwxrwx 1 josef josef 46  8. Apr 16:09 machines.target -> ../../../../lib/systemd/system/machines.target

lrwxrwxrwx 1 josef josef 47  8. Apr 16:09 remote-fs.target -> ../../../../lib/systemd/system/remote-fs.target
```

Beim enablen würden da die Symlinks erstellt werden --> 

```
systemctl enable systemd-resolved.service

Created symlink /etc/systemd/system/dbus-org.freedesktop.resolve1.service → /lib/systemd/system/systemd-resolved.service.

Created symlink /etc/systemd/system/multi-user.target.wants/systemd-resolved.service → /lib/systemd/system/systemd-resolved.service.
```

Fazit: systemd-resolved.service ist definitiv nicht per default enabled - das muss man schon selbst machen, sofern erwünscht :)

Nachtrag: So wie im https://wiki.gentoo.org/wiki/Systemd#systemd-networkd beschrieben.

----------

## mike155

 *Quote:*   

> Nee, wenn der Service enabled wäre, dann wäre die Ausgabe "enabled; vendor preset: enabled)"

 

Hmm. Na ja, das erste (von Dir rot gekennzeichnete) "enabled" oder "disabled" ist der aktuelle Status. Das hängt davon ab, ob ich "systemctl enable" oder "systemctl disable" aufgerufen habe - hat also nichts mit der Default policy zu tun.

Das zweite "enabled" (hier blau gekennzeichnet, nach "vendor preset:") ist die Default Einstellung - zumindest aus Sicht der Systemd Entwickler. Und die ist wohl: "enabled".

Ich habe mir den Systemd Source Code angesehen. Dort finde ich die Datei ./presets/90-systemd.preset (nach der Installation findet man diese Datei unter /usr/lib64/systemd/user-preset/90-systemd.preset):

```
# These ones should be enabled by default, even if distributions

# generally follow a default-off policy.

...

enable systemd-resolved.service

```

Es ist gut möglich, dass Gentoo der oben erwähnten "default-off policy" folgt. Ich habe das nicht weiter untersucht, aber es würde Deinen Ergebnissen aus dem stage3 tarball entsprechen. Aber dann stimmt die Ausgabe der "default policy" bei "systemctl status" nicht... Möglicherweise gibt es zwei Default policies? Eine "Gentoo default policy" und eine "Systemd default policy"? Dann sollte die Ausgabe wohl lauten:

```
enabled; Systemd vendor preset: enabled, Gentoo vendor preset: disabled
```

Tatsache ist jedenfalls: wenn ich folgendes eingebe:

```
systemctl preset-all   # Resets all installed unit files to the defaults configured in the preset policy file

```

Dann erhalte ich als Ausgabe:

```
...

Created symlink /etc/systemd/system/dbus-org.freedesktop.resolve1.service → /lib/systemd/system/systemd-resolved.service.

Created symlink /etc/systemd/system/multi-user.target.wants/systemd-resolved.service → /lib/systemd/system/systemd-resolved.service.

...

```

Und danach ist systemd-resolved "enabled" - und das zeigt, dass die (Systemd) Default Policy eben doch "enabled" ist.

----------

## Josef.95

mike155,

ja, ist ja alles gut und schön - wir sind hier aber im Gentoo-Forum, und ich ging davon aus das wir hier über das vom Gentoo systemd Maintainer im Tree bereitgestellte sys-apps/systemd Paket diskutieren in dem weder systemd-networkd.service noch systemd-resolved.service per default enabled sind.

----------

## schmidicom

Zum Thema "vendor preset":

https://www.certdepot.net/systemd-preset-mechanism/Last edited by schmidicom on Thu Apr 25, 2019 7:54 am; edited 1 time in total

----------

## ChrisJumper

Ich kann es auch nicht mehr ausschließen, das ich es vielleicht doch aktiviert habe. Aber dann wäre ein Fehler wohl früher aufgetreten auf dem dnsmasq System, es sei denn es ist eine seltsame race condition die nur auftritt wenn beim Booten resolved schneller war als das dnsmasq Script. Aber das kann auch sein, weil so ein Server startet man ja nur neu wenn der Kernel einen wichtigen Bug hatte.

Es war auch nur auf zwei Systemen so, die anderen hatten das ebenfalls nicht aktiviert.

Vielleicht hab ich das damals beim experimentellen Wechsel zu Systemd aktiviert. Das war zu einer Zeit als im Gentoo-Wiki noch nichts von systemctl stand und ich via  ln selber die Verknüpfungen anlegen musste um Module zu aktivieren.

Jetzt ärgert es mich as ich den Symlink gelöscht hab. Ich schau die Tage mal im Backup ob da noch ein Timestamp existiert.

Es ist auf jeden Fall sehr gut das es nicht der default ist.

Wo wir gerade bei DNS sind, hat von euch schon mal jemand net-dns/djbdns benutzt um einen lokalen dns-cache anzulegen?

https://cr.yp.to/djbdns/run-cache.html

----------

## musv

 *ChrisJumper wrote:*   

> ich hatte heute die tolle Erfahrung das Systemd jetzt auch einen ressolved Service hat um Namen aufzulösen

 

Ich hab jetzt vergeblich versucht herauszufinden, seit wann resolved schon in Systemd drinsteckt. Ich benutze es aber schon seit mehr als 5 Jahren. Das "jetzt" stimmt also nicht so ganz.

 *ChrisJumper wrote:*   

> Jedenfalls startete dann dnsmasq nicht mehr sauber hoch weil der Port 53 belegt war.

 

Ist klar. DNS benutzt halt mal Port 53.

 *ChrisJumper wrote:*   

> Da frage ich mich dann schon warum das per Default eingeschaltet sein muss? Macht Systemd jetzt auch /etc/resolv.conf und die /etc/hosts überflüssig?

 

Schön ist das sicherlich nicht. Benutzt man Systemd-Networkd für die Netzwerkkonfiguration, dann hat das jedoch durchaus seine Berechtigung. Die resolv.conf ist bei der Nutzung von Systemd-Resolved nur noch ein Link auf /run/systemd/resolved/resolv.conf. Löschst du den Link, kannst du die /etc/resolv.conf wie bisher nutzen.

----------

## Josef.95

 *musv wrote:*   

> Schön ist das sicherlich nicht.

  Ist unter Gentoo ja schlicht und einfach auch nicht zutreffend.

----------

## musv

```
systemctl status systemd-resolved

● systemd-resolved.service - Network Name Resolution

   Loaded: loaded (/lib/systemd/system/systemd-resolved.service; disabled; vendor preset: enabled)

   Active: inactive (dead)

     Docs: man:systemd-resolved.service(8)

           https://www.freedesktop.org/wiki/Software/systemd/resolved

           https://www.freedesktop.org/wiki/Software/systemd/writing-network-configuration-managers

           https://www.freedesktop.org/wiki/Software/systemd/writing-resolver-clients
```

Es gibt dann noch das Use-Flag resolvconf:

```
 + - resolvconf   : Install resolvconf symlink for systemd-resolve
```

Daran würde ich jetzt aber auch nicht festmachen, dass dadurch resolved per default aktiviert wird. 

Die Systemd-Unit sagt zumindest, dass es per default aktiviert.

----------

