#1011 closed Verbesserung (erledigt)
resolvconf-Konfiguration auf den ltsp
| Reported by: | Rüdiger Kupper | Owned by: | Rüdiger Kupper |
|---|---|---|---|
| Priority: | bei Gelegenheit | Milestone: | Schuljahr 2012/13 |
| Component: | Server: Linux Terminal Server (LTSP) | Severity: | beeinträchtigt keinen Unterricht |
| Keywords: | Cc: | bau |
Description
Beim Aufsetzen des ltspl1 ist mir aufgefallen, dass die resolvconf-Konfiguration auf den LtspServern nicht sauber ist: Effektiv war die ganze Funktion von resolvconf ausgehebelt.
In der /etc/network/interfaces fanden sich überhaupt keine dns-* Einträge, stattdessen wurden die Einträge über das "tail"-File festgelegt. Das ist Murks.
- entweder resolvconf verwenden und die dns-* Einträge in der /etc/network/interfaces machen
- oder resolvconf gar nicht verwenden und die Einträge von Hand in /etc/resolv.conf machen
Change History (3)
comment:1 by , 13 years ago
| Status: | new → accepted |
|---|
comment:2 by , 13 years ago
| Resolution: | → erledigt |
|---|---|
| Status: | accepted → closed |
Version 0, edited 13 years ago by (next)
comment:3 by , 13 years ago
Spannend - schon wieder ein Mechanismus, den wir nun verstehen :-)
GUTE ARBEIT!
Note:
See TracTickets
for help on using tickets.
Okay, das war nicht ganz einfach :-). Ich musste Deinen dnsmasq-Mechanismus für den PXE-Boot verstehen und viel über dnsmasq/resolvconf lernen. Daher ist dieser Kommentar auch etwas länglich (trotzdem bitte lesen ;-))
Im Bereich DNS gibt es mehrere Pakete/Mechanismen, die miteinander interagieren (oder es zumindest sollten):
...und genau das war bei uns der Fall.
Bei uns läuft neuerdings ein explizit gestarteter dnsmasq für den DHCP/PXE-Boot. Wie es sich gehört, hattest Du den so konfiguriert, dass er nur das macht, was er muss, nämlich DHCP und kein DNS-Forwarding. Das widersprach allerdings der Annahme, welche die Ubuntu-Standardkonfigurationen machen.
Das sind kurz gesagt folgende:
Dieser Mechanismus war bei uns bereits nicht mehr funktional, weil (a) die "dns-*"-Einträge in /etc/network/interfaces fehlten, und (b) die Datei /etc/resolvonf/resolvcnf.d/tail hart eincodierte dns-Einträge aufwies (was allerdings auch nicht stört).
Ich habe nun die "dns-*"-Einträge auf allen LtspServern in /etc/network/interfaces hinzugefügt (und ebenfalls im Ltsp-setup -Skript, per [603/keplertools]). Dann habe ich die hart eincodierten DNS-Einträge entfernt, in der Erwartung, dass resolvconf die ja dynamisch erzeugt -- und nichts ging mehr. Keine DNS-Auflösung.
Ursache: Bei uns läuft außerdem noch ein dnsmasq-Prozess. Und jetzt wird's spaßig: resolvconf und dnsmasq interagieren. Dnsmasq hat nämlich standardmäßig die Aufgabe, DNS-caching und -forwarding zu machen. Dazu liest es den Inhalt von /etc/resolv.conf aus, übernimmt die dortigen DNS-Server-Einträge in seine eigene Konfiguration und schreibt sich dann selbst in die /etc/resolv.conf ("nameserver 127.0.0.1" = schickt bitte alle DNS-Anfragen an localhost, denn dort läuft der dnsmasq).
Soweit, so gut. Da aber nun sowohl resolvconf als auch dnsmasq an der /etc/resolv.conf herummanipulieren, müssen sich die beiden Mechanismen austauschen. Das geschieht folgendermaßen:
Wird das dnsmasq-Paket installiert und stellt fest, dass ebenfalls das resolvconf-Paket installiert ist, so erzeugt es einen "Hook" für resolvconf. Dieser sorgt dafür, dass resolvconf sein Ergebnis eben nicht direkt nach /etc/resolv.conf schreibt, sondern nach /var/run/dnsmasq/resolv.conf. Gleichzeitig wird das init.d-Startskript für dnsmasq so modifiziert, dass es bei seinem Start die Informationen über den aktiven DNS-Server nicht mehr aus /etc/resolv.conf liest, sonder eben aus /car/run/dnsmasq/resolv.conf. Danach schreibt es sich als "nameserver 127.0.0.1" selbst in die /etc/resolv.conf)
Bis ich diesen Mechanismus durschaut hatte, hat es einige Zeit gedauert :-).
Der Punk war nun: Bei uns hat das alles nicht recht funktioniert, denn
Beides hat dazu geführt, dass der DNS-Lookup nicht mehr funktionierte, sobald ich resolvconf aktiviert hatte.
Zwei Möglichkeiten standen zur Wahl:
Ich habe mich schließlich für den 2. Weg entschlossen, aus folgenden Gründen:
Ich habe daher folgendes vorgenommen:
Nun funktioniert alles, wie es soll:
Konfiguration
Die einzigen Stellen, an denen nun noch etwas konfiguriert werden muss/sollte, sind: