Welcher Menschenhasser hat sich resolvconf ausgedacht?

01/04/2012 - 09:23 von Christian Brandt | Report spam
Welcher abgrundtief Menschenhasser hat sich resolvconf ausgedacht?

Was wollte ich machen: Ein Rechner mit statischer IP-Adresse sollte
selbst Slave-Nameserver für ein kleines Netz spielen. Unter uns, es
macht ja wenig Sinn sowas auf einer dynamischen IP-Adresse zu betreiben.

Also tràgt man in /etc/network/interface eben wie seit 15 Jahren ein
iface eth0 inet static uswusf ein.

Hoppla, /etc/resolv.conf wird jetzt bei jedem Neustart mit einem leeren
Template überschrieben weil ja der dhcp wegen isnich nixda zurückliefert.

Ein paar Try&Error&Copy&Paste-Admins schlagen daher ernsthaft vor mit
chattr -i diese Datei vor Änderungen zu schützen. Wie die wohl einen
Prozeß vor unbefugtem Lesezugriff schützen? Mit chmod a-r /dev/kmem?

Naja, wie haben wir es früher gemacht? Eben, aptitude remove resolvconf.

Hoppla, Ubuntu 12.04 ist da der Meinung daß damit das Paket
ubuntu-minimal verschwinden muß. Achja und im gleichem Aufwasch auch
noch die nicht lànger genutzten Pakete adduser, apt, apt-utils, bzip2,
console-setup, debconf, debconf-i18n, eject, gnupg, ifupdown uswusf...
nebenbei, Debian unstable war auch der Meinung daß der Verzicht auf
resolvconf auch gleich passwd entsorgen sollte aber immerhin bzip hàtte
es mir weiter gegönnt.

Naja, bevor ich jetzt mit Paketpinning usw anfange, wirklich elegant
ist der Verzicht auf resolvconf ja dann doch nicht. Da gibts sicher
irgendwo einen Schalter "resolvconf=off" oder so.

Haha, weit gefehlt. Solange man nicht direkt "Do-not-Edit" Initscripte
editiert - und zwar sehr, sehr viele - kann man resolvconf praktisch
nicht bàndigen. Ja, man könnte in /sbin/resolvconf in die zweite Zeile
"echo maultierkacke && exit 0" einbauen oder es auf /bin/true umbiegen.
Alles andere? Da kann ich gleich Bind9 auf Plan9 portieren.

Hm, also schauen wir mal in die Anleitung von resolvconf... es gibt ja noch:
/etc/resolvconf/resolv.conf.d/base
/etc/resolvconf/resolv.conf.d/head

Toll, Anleitung ràt meine Nameserver in base einzutragen.

Nix.

Wird nicht ausgewertet.

Dann head.

Ja, jetzt wirkts. Aber doppelt, denn auf einmal übernimmt resolvconf von
irgendwoher uralte Eintràge und hàngt sie an die neuen an.

Ok, wieder raus aus head.

Hoppla, jetzt sind auch die alten weg.

Noch ein paarmal probiert, Verhalten bleibt.

Irgendwie ist das ganze Zeug unter /etc/resolvconf/resolv.conf.d/ eher
fürn Arsch. Also weiter.

Viele Anwender schlagen vor man solle mit superseeds in der dhcp.conf
arbeiten und noch mehr wundern sich warum das nicht geht. Ja, das könnte
daran liegen daß alle die das Vorschlagen und alle die das ausprobieren
ja mit statischen Adressen arbeiten, da làuft kein dhcp also wie soll
dhcp diese manuellen Adressen an resolvconf übergeben?
<karnevalstusch>tata-tata-tata</karnevalstusch>

Ok, lesen wir nochmal die spàrliche resolvconf-Anleitung. Achja, da kann
man ja auch alles in die /etc/network/interfaces eintragen, das klingt
ja fast schon zu elegant um wahr zu sein. Isses aber nich... damit hat
man dann z.B. keine Nameserver in der resolv.conf wenn das entsprechende
Interface grade weg ist - aber wer will Nameserver wenn das Interface
weg ist? Tja, da man das Statement nur einmal effektiv in der Konfig
verwenden kann muß man mehrere Nameserver auf diesem Statement angeben,
auch für Nameserver auf anderen Interfaces. Und schalte ich jetzt mal
kurz eth1 aus ist auch die Nameserverdefinition für Nameserver an eth0
weg. tata-tata-tata

Aber ok, wollen wir mal nicht so sein. Dann darf halt keiner die
Interfaces runterfahren. Ich komm mir dann zwar vor wie anno tobak auf
AmiTCP (Ethernetdevice runterfahren wàhrend Nutzung: GURU MEDITATION)...

Tragen wir mal ein dns-nameservers 127.0.0.1 10.1.2.3

Nö.

Nach Reboot steht in der resolv.conf: nameserver 127.0.0.1

Die Werte noch ein wenig herumgespielt: Es bleibt immer bei der
127.0.0.1 - kann ja keiner mit rechnen daß jemand einen externen
Nameserver verwenden will, oder? tata-tata-tata

Am Rande der Verzweiflung greppe ich wild in /etc/ herum... und finde in
/etc/default/bind9: RESOLVCONF=yes



Wieso kontrolliert bind9 den Aufruf von resolvconf? Kontrolliert Firefox
demnàchst USB-Hotplugging?

Haha, da hàtte mich der bind9-Packetmaintainer fast ranbekommen...

Natürlich kontrolliert bind9 NICHT resolvconf. Der Spaßvogel hat einfach
nur die Variable saudàmmlich benannt. Die regelt nàmlich - und das ist
fast noch besser, festhalten, jetzt kommst - die regelt nàmlich daß
sàmtliche anderweitig irgendwie ermittelten Nameserver mit 127.0.0.1 in
der /etc/init/bind9 mittels resolvconf überschrieben werden.

Ok, fassen wir das nochmal zusammen: Die Standardeinstellung dieses
Nameserver ist derart daß die Nutzung dieses Nameservers in seiner
eigentlichen Aufgabe konterkarriert wird indem andere Nameserver erstmal
ausgeblendet werden so daß man im Wartungsfall am lokalem Nameserver
erstmal garnichtsmehr mit Namen ansprechen kann. Nun, als optionale
Option für Katertage mag das sicher fürn Lacher gut sein aber als
Standardeinstellung ist das echt ein Brüllwitz über den ich noch in 20
Jahren lachen werde. tata-tata-tata

Also schalten wir diesen Dummfug mittels RESOLVCONF=no ab.

Und restarten.

Und habe immer noch als einzigen Nameserver die 127.0.0.1.

Ja, diesesmal wars meine Schuld. Ich hatte in der
/etc/network/interfaces echt einfach nur eine 127.0.0.1 angegeben. Also
10.0.12.1 rein. Neustart.

Und habe immer noch als einzigen Nameserver die 127.0.0.1.

Ok, was soll das jetzt? Ist das Drecksscheißinitscript etwas auch noch
so kaputt daß es die =no nicht korrekt auswertet? Debug-Breaks ins
Script, durchlauf, ne, eigentlich verzweigt alles richtig. resolvconf
bekommt alles so wie es das verlangt.

Oh mein Gott.

Das kann doch echt nicht sein.

Macht resolvconf etwa auch irgendwelche 127.0.0.1-Sondermaultierkacke?

grep 127 /sbin/resolvconf - ne.

vi /sbin/resolvconf und mal alles gaaaaaanz langsam durchlesen. Nach 60%
stolpere ich über eine Variable
TRUNCATE_NAMESERVER_LIST_AFTER_LOOPBACK_ADDRESS die bewirkt daß sie bei
nicht-"no" alles nach dem ersten 127er Wert abschneidet. Ooookay... Wir
haben also nicht nur ein bind-Init-Script was meint besser zu wissen was
ich will als ich selber, nein, das freche resolvconf-Script trifft genau
die gleiche total falsche Vermutung ins Blaue.

Also wo kann ich TRUNCATE_NAMESERVER_LIST_AFTER_LOOPBACK_ADDRESS setzen?
grep -r TRUNCATE_NAMESERVER_LIST_AFTER_LOOPBACK_ADDRESS /etc/
/usr/share/doc/resolvconf liefert: Nichts. Diese Variable wird zwar in
/sbin/resolvconf referenziert aber niemals irgendwo mit einer Silbe
erwàhnt. Also schauen wir mal was die Jungs so alles includen und voila,
/etc/default/resolvconf wird included. Nochmal grep -r
default.resolvconf /... und: nichts. Die Datei existiert natürlich noch
nicht und ist auch nirgends referenziert. Kennen tut das nichtmal das
Internet und das Internet weis alles. Immerhin wàre jetzt belegt daß
Rule34 NICHT gilt, Pornobilder von /etc/default/resolvconf gibts nicht,
wirds nie geben und mal ehrlich, wer will das?

Sooo... jetzt schnell ein echo
"TRUNCATE_NAMESERVER_LIST_AFTER_LOOPBACK_ADDRESS=no"

/etc/default/resolvconf und /etc/default/bind9 RESOLVCONF=no und die


manuellen Debuggingànderungen in /etc/init/bind9 und /sbin/resolvconf
raus und die korrekten Nameserver in /etc/network/interfaces eintragen
und voila:

Es geht.

Oder?

Doch, echt.

Es geht.

Ich glaube ich habe gerade Stoff für mindestens ein Dutzend Designfixes
gesammelt.

Wie lob ich mir da ein gutes altes BSD-Style-Startup, in /etc/rc einfach
ein ifconfig xy 1.2.3.4 up und gut isses... was ist daran bitte
komplizierter als an einem superbequemen Ubuntu?

Christian Brandt
 

Lesen sie die antworten

#1 Paul Muster
01/04/2012 - 09:49 | Warnen spam
On 01.04.2012 09:23, Christian Brandt wrote:

Ich glaube ich habe gerade Stoff für mindestens ein Dutzend Designfixes
gesammelt.



Sieht so aus. Nun stellt sich nur noch die Frage, ob man die vor oder
nach einem Sonn(!)tagsspaziergang eintütet.


Danke für die ausführliche Erlàuterung. Der nàchste, der das Problem
hat, wird dir sehr dankbar sein.


mfG Paul

Ähnliche fragen