Entfernen Sie eine bestimmte Option aus einer Antwort in dhclient

7

Ich möchte verhindern, dass dhclientmeine NTP-Konfiguration mit über DHCP empfangenen Servern aktualisiert wird, da dies unter Debian / Ubuntu die Standardeinstellung ist. Mein DHCP-Server ignoriert jedoch die Liste der angeforderten Optionen (aus der requestEinstellung) und seine Antworten enthalten immer einen NTP-Server.

Daher möchte ich die Option vor der weiteren Verarbeitung entfernen oder zumindest mit einem leeren Wert überschreiben. Das Überschreiben ist mit der supersedeEinstellung möglich, aber ich habe es nicht geschafft, sie leer zu machen. Ich konnte auch keine Möglichkeit finden, eine Option vollständig zu löschen.

Was tatsächlich zu einem leeren Wert führt, ist die Angabe eines ungültigen Wertes in supersede(z. B. mit Buchstaben, da nur numerische Werte zulässig sind). Dies ist tatsächlich ungültig und verursacht jedoch Fehler in der Protokolldatei. Ist jemandem ein besserer Weg bekannt?

F30
quelle
prepend macht nicht was du willst? Welche Optionen möchten Sie überschreiben?
slm
Fügt nach meinem Verständnis prependder Vorderseite der Antwort zusätzliche Werte hinzu. Ich möchte die ntp-serversOption vollständig durch einen leeren Wert ersetzen oder überhaupt entfernen.
F30

Antworten:

2

Einfacher Weg:

# rm /etc/dhcp/dhclient-exit-hooks.d/ntp
dfc
quelle
1
Ich hatte das bereits getan, konnte aber einfach nicht glauben, dass es überhaupt keine Möglichkeit gibt, bestimmte Teile einer Antwort zu ignorieren. So wie es aussieht, scheint es immer noch die beste Lösung zu sein, nur den Haken zu löschen.
F30
1
Haben Sie einen Fehlerbericht eingereicht? Ich war wirklich überrascht, dass Supersede nicht funktioniert hat, als ich es ausprobiert habe. Es scheint, als ob das Ersetzen von "" sich wie eine Ablehnungsanweisung verhalten sollte.
dfc
1
Ich habe jetzt eine Funktionsanfrage bei ISC eingereicht. Leider haben sie keinen öffentlichen Bug-Tracker, aber es ist ISC-Bug # 35631. Der Debian-Fehler # 672232 behandelt auch ein ähnliches Thema.
F30
-1

Ich denke, Sie können Ihre dhclientDatei über die Datei `/etc/dhclient.conf konfigurieren und angeben, für welche Optionen Sie formell Werte von Ihrem DHCP-Server anfordern möchten.

Beispiel

request subnet-mask, broadcast-address, routers, domain-name, 
    domain-name-servers, host-name;

Mehr dazu erfahren Sie auf der dhclient.confManpage.

Auszug

There  is a variety of data contained in offers that DHCP servers send to 
DHCP clients.  The data that can be specifically requested is what are
called DHCP Options.  DHCP Options are defined in dhcp-options(5).

The request statement

 [ also ] request [ [ option-space . ] option ] [, ... ];

The request statement causes the client to request that any server 
responding to the client  send  the  client  its  values  for  the  
specified options.   Only  the  option names should be specified in the 
request statement - not option parameters.  By default, the DHCPv4 client 
requests the subnet-mask, broadcast-address, time-offset, routers, 
domain-search, domain-name, domain-name-servers, host-name,  nis-domain, 
nis-servers, ntp-servers and interface-mtu options while the DHCPv6 client 
requests the dhcp6 name-servers and domain-search options.  Note that if you
enter a ´request´ statement, you over-ride these defaults and these options 
will not be requested.

In some cases, it may be desirable to send no parameter request list at all.  
To do this, simply write the  request  statement  but  specify  no 
parameters:

    request;

In most cases, it is desirable to simply add one option to the request list 
which is of interest to the client in question.  In this case, it is best to 
´also request´ the additional options:

    also request domain-search, dhcp6.sip-servers-addresses;

Deaktivieren über /dhclient-exit-hooks.d?

Beim Stöbern in einer 12.10-Installation von Ubuntu ist mir dieses Verzeichnis /etc/dhcp/dhclient-exit-hooks.dmit dieser Datei aufgefallen ntpdate. In dieser Datei befindet sich ein Shell-Skript, das das Update auf einem System ausführt, wenn ein Lease über DHCP erworben oder freigegeben wird. Sie können die Aktualisierung Ihres NTP-Servers über dieses Skript deaktivieren, indem Sie einfach diese Datei auskommentieren:

ntp_servers_setup() {
    case $reason in
        BOUND|RENEW|REBIND|REBOOT)
            ntp_servers_setup_add
            ;;
        EXPIRE|FAIL|RELEASE|STOP)
            ntp_servers_setup_remove
            ;;
    esac
}


ntp_servers_setup
slm
quelle
Wie gesagt, die Antwort meines DHCP-Servers enthält die jeweilige Option, unabhängig davon, was angefordert wurde.
F30
Ihre angehängte Lösung scheint im Grunde die beste zu sein, siehe auch die Antwort von @ dfc. Der jeweilige Haken ist jedoch ntpund nicht ntpdate. Letzterer schreibt nur die Konfiguration für das ntpdateCLI-Tool, was wenig mit dem NTP-Daemon zu tun hat.
F30
@ F30 - Ja, ich habe seine Lösung gesehen, das schien ein bisschen schwerfällig zu sein, es so machen zu müssen, aber wenn es funktioniert, funktioniert es. Die Hooks müssen sich von Debian / Ubuntu unterscheiden, da dieser Hook ntpdatedirekt aus einer 12.10 Ubuntu-Installation stammt. Was ver. von Debian / Ubuntu benutzt du sowieso?
slm
Ich verwende Ubuntu 13.10. Der ntpdateHook ist ebenfalls vorhanden (und Teil der Standardinstallation), erzeugt jedoch, wie oben angegeben, nur eine Konfiguration für das CLI-Tool. Dies macht keinen Unterschied, solange Sie nicht anrufen ntpdate. Wenn der NTP-Daemon (Paket "ntp") installiert ist, gibt es auch den ntpHook. Dadurch wird ein zusätzlicher ntp.confDaemon eingerichtet und der Daemon neu gestartet, der dann die neue Konfiguration bevorzugt.
F30