View previous topic :: View next topic |
Author |
Message |
Yamakuzure Advocate
Joined: 21 Jun 2006 Posts: 2284 Location: Adendorf, Germany
|
Posted: Thu Mar 16, 2017 12:24 pm Post subject: |
|
|
schmidicom wrote: | aber der eigene DHCP-Client sollte es tun wenn er schon meint den Hostname, aus welchem Grund auch immer, verändern zu müssen. | Frage: Da ein Rechner einen Hostnamen hat, den der Admin des Rechners festlegt, warum (zur Hölle) sollte irgendwas diesen Namen ändern? Das ergibt keinen Sinn!
Nichteinmal Microsoft Exchange würde sowas tun, und das will was heißen.
Der Hostname ist lokal, fest, und muss in keinem Netzwerk der Welt eindeutig sein. In einer DNS-Liste muss die FQDN eindeutig sein. Aber theoretisch können 200 Rechner in einem Subnetz den selben Hostnamen haben, und über Subdomains unterschieden werden.
Das Einzige, was sich ändern kann, ist die Domain bei einem Netzwerkwechsel. Das hat mit dem Hostnamen aber nichts zu tun.
Und deshalb schreibt man seine eigenen Daten ja auch in /etc/hosts als (zum Beispiel) Code: | 127.0.0.1 <hostname>.<Standarddomain> <hostname> localhost | Tut nicht weh, schadet nicht, und wenn man sich an einer anderen Domain anmeldet, wird sich der dhcp-client (wenn dafür konfiguriert) schon darum kümmern, und es passiert nichts Schlimmes, wenn das Kabel gezogen wird.
Nochmal zur Verdeutlichung:
Der Rechnername ist heilig. Wer diesen durch ein Programm zu verändern versucht, oder die Veränderung des heiligen Hostname durch ein Programm fordert, wird geteert, gefedert, und aus dem Land gejagt. _________________ Important German:- "Aha" - German reaction to pretend that you are really interested while giving no f*ck.
- "Tja" - German reaction to the apocalypse, nuclear war, an alien invasion or no bread in the house.
|
|
Back to top |
|
|
musv Advocate
Joined: 01 Dec 2002 Posts: 3337 Location: de
|
Posted: Thu Mar 16, 2017 9:41 pm Post subject: |
|
|
schmidicom wrote: | Natürlich darf ein Server im Netzwerk nicht einfach so an der lokalen /etc/hosts herumbasteln aber der eigene DHCP-Client sollte es tun |
Nein, sollte er nicht. In der /etc/hosts schreibt maximal der Admin mit einem Editor rum, auf keinen Fall aber ein DHCP-Client. |
|
Back to top |
|
|
flammenflitzer Advocate
Joined: 25 Nov 2003 Posts: 3482 Location: Berlin
|
Posted: Sun Mar 19, 2017 10:43 am Post subject: |
|
|
Installiert waren:
Code: | net-misc/dhcp 4.3.4
net-misc/dhcpcd 6.11.3 |
flammenflitzer olaf #
Code: | emerge -C net-misc/dhcpcd |
flammenflitzer olaf # Code: | cat /etc/hostname
cat: /etc/hostname: Datei oder Verzeichnis nicht gefunden |
flammenflitzer olaf # Code: | hostnamectl
Static hostname: n/a
Transient hostname: flammenflitzer
Icon name: computer-desktop
Chassis: desktop
Machine ID: 2deee6e266ae5ddb7e142a94501baefa
Boot ID: a6433cf4c2b34e41a33577586166815e
Operating System: Gentoo/Linux
Kernel: Linux 4.9.6-gentoo-r1
Architecture: x86-64 |
flammenflitzer olaf # Code: | hostnamectl set-hostname flammenflitzer |
flammenflitzer olaf # Code: | hostnamectl
Static hostname: flammenflitzer
Icon name: computer-desktop
Chassis: desktop
Machine ID: 2deee6e266ae5ddb7e142a94501baefa
Boot ID: a6433cf4c2b34e41a33577586166815e
Operating System: Gentoo/Linux
Kernel: Linux 4.9.6-gentoo-r1
Architecture: x86-64 |
flammenflitzer olaf # Code: | cat /etc/conf.d/hostname
# Set to the hostname of this machine
hostname="localhost" |
flammenflitzer olaf # Code: | nano /etc/conf.d/hostname |
flammenflitzer olaf # Code: | cat /etc/conf.d/hostname
# Set to the hostname of this machine
#hostname="localhost"
hostname="flammenflitzer" |
flammenflitzer olaf # Code: | cat /etc/dhcp/dhclient.conf | grep -v '\#' |
flammenflitzer olaf # Code: | cat /etc/hosts | grep -v '\#'
127.0.0.1 localhost
::1 localhost |
flammenflitzer olaf # Code: | cat /etc/NetworkManager/NetworkManager.conf | grep -v '\#'
cat: /etc/NetworkManager/NetworkManager.conf: Datei oder Verzeichnis nicht gefunden |
Stecker abgezogen. Desktop funktioniert. Werde ich beobachten und die Daumen drücken. |
|
Back to top |
|
|
Yamakuzure Advocate
Joined: 21 Jun 2006 Posts: 2284 Location: Adendorf, Germany
|
Posted: Mon Apr 03, 2017 12:37 pm Post subject: |
|
|
hostnamectl?
Ah. da haben wir die Antwort.
Ja, der Poettering darf in /etc/hosts und /etc/hostname natürlich nach belieben rummalen, sowas tut Süss-tämm-Dieh nun einmal. Damit musst du leben. _________________ Important German:- "Aha" - German reaction to pretend that you are really interested while giving no f*ck.
- "Tja" - German reaction to the apocalypse, nuclear war, an alien invasion or no bread in the house.
|
|
Back to top |
|
|
musv Advocate
Joined: 01 Dec 2002 Posts: 3337 Location: de
|
Posted: Mon Apr 03, 2017 7:00 pm Post subject: |
|
|
Yamakuzure wrote: | Ja, der Poettering darf in /etc/hosts und /etc/hostname natürlich nach belieben rummalen, sowas tut Süss-tämm-Dieh nun einmal. |
Gib mal bitte ein Beispiel, in dem Systemd/Poettering die /etc/hosts bearbeiten. |
|
Back to top |
|
|
Yamakuzure Advocate
Joined: 21 Jun 2006 Posts: 2284 Location: Adendorf, Germany
|
Posted: Tue Apr 04, 2017 7:21 am Post subject: |
|
|
musv wrote: | Yamakuzure wrote: | Ja, der Poettering darf in /etc/hosts und /etc/hostname natürlich nach belieben rummalen, sowas tut Süss-tämm-Dieh nun einmal. |
Gib mal bitte ein Beispiel, in dem Systemd/Poettering die /etc/hosts bearbeiten. | Ah, stimmt! Ich vergaß, dass das Ding ja extra auf localhost reagiert, damit /etc/hosts ... moment, ich zitieren: src/nss-myhostname/nss-myhostname.c wrote: | 72 /* We respond to 'localhost', so that /etc/hosts
73 * is optional */ | Ok, Spaß beiseite, mein Fehler. systemd malt natürlich nur in /etc/hostname rum.
Falls es dich interessiert, den entsprechenden Teil findet man in: Code: | src/network/networkd-link.c:919:int link_set_hostname(Link *link, const char *hostname) | Und das wird von dhcp_lease_lost() aufgerufen, und zwar mit einem NULL hostname.
Oder anders ausgedrückt:
Die systemd-Entwickler sind der einhelligen Meinung, dass dein Rechner, sobald der Link weg ist, keinen Host-Namen mehr verdient.
Siehe src/network/networkd-dhcp4.c:dhcp_lease_lost() : Code: | 237 if (link->network->dhcp_hostname) {
238 const char *hostname = NULL;
239
240 if (link->network->hostname)
241 hostname = link->network->hostname;
242 else
243 (void) sd_dhcp_lease_get_hostname(link->dhcp_lease, &hostname);
244
245 if (hostname) {
!!! 246 /* If a hostname was set due to the lease, then unset it now. */
247 r = link_set_hostname(link, NULL);
248 if (r < 0)
249 log_link_warning_errno(link, r, "Failed to reset transient hostname: %m");
250 }
251 } | Damit der Spaß ein Ende hat, könntest du also versuchen "DHCP.UseHostname" bzw. "DHCPv4.UseHostname" in der Config auf 'false' zu setzen. Dann sollte der Hostname nicht mehr angerührt werden, egal wie oft das Kabel gezogen/gesteckt wird.
...dass der Wert Standardmäßig auf 'true' steht, empfinde ich aber als bedenklich... _________________ Important German:- "Aha" - German reaction to pretend that you are really interested while giving no f*ck.
- "Tja" - German reaction to the apocalypse, nuclear war, an alien invasion or no bread in the house.
|
|
Back to top |
|
|
schmidicom Veteran
Joined: 09 Mar 2006 Posts: 1924 Location: Schweiz
|
Posted: Tue Apr 04, 2017 8:09 am Post subject: |
|
|
Der nach wie vor rein optionale Netzwerkstack von systemd ist nicht die einzige Software welche standardmäßig versucht den lokalen Hostname auf den Wert zu setzen welcher vom DHCP-Server gegebenenfalls vorgeschlagen wird, "net-misc/dhcpcd" hat oder hatte dieses Verhalten auch schon an den Tag gelegt. Davon abgesehen wird das Verhalten von systemd-networkd in der offizellen Doku ziemlich deutlich erklärt:
https://www.freedesktop.org/software/systemd/man/systemd.network.html wrote: | [DHCP] Section Options
The "[DHCP]" section configures the DHCPv4 and DHCP6 client, if it is enabled with the DHCP= setting described above:
...
SendHostname=
When true (the default), the machine's hostname will be sent to the DHCP server.
UseHostname=
When true (the default), the hostname received from the DHCP server will be set as the transient hostname of the system
Hostname=
Use this value for the hostname which is sent to the DHCP server, instead of machine's hostname.
... |
Auf privaten Geräten ist sowas zwar eher unüblich aber in Firmenumgebungen (und genau darauf legt systemd nun mal seinen Hauptfokus) kann das durchaus erwünscht sein.
PS: Man kann an systemd ja kritisieren was man will aber irgendwann wirkt es auch ziemlich zwanghaft. _________________ Lenovo - ThinkPad P16s Gen 2 - 21K9CTO1WW |
|
Back to top |
|
|
mv Watchman
Joined: 20 Apr 2005 Posts: 6747
|
Posted: Tue Apr 04, 2017 4:14 pm Post subject: |
|
|
Yamakuzure wrote: | systemd malt natürlich nur in /etc/hostname rum. |
M.W. nur, wenn das root explizit mit hostnamectl will: Ein "service" für Administratoren, die nicht in der Lage sind, eine 1-zeilige Datei zu editieren.
Alles andere passiert rein im RAM, also durch Aufruf der kernel-Funktion zum Setzen des Hostnamens.
Ganz im Gegenteil wird m.W. bei explizit gesetztem /etc/hostname dieser in jedem Fall statt "localhost" als Fallback benutzt.
Davon abgesehen ist /etc/hostname keine offizielle Datei, sondern eine reine systemd-spezifische Konfigurationsdatei. Weder kernel noch openrc noch irgendwelche dhcp* clients sollten sie kennen/benutzen; Ausnahme natürlich systemd-eigener dhcp und möglicherweise andere Software, die systemd-kompatibel sein will. |
|
Back to top |
|
|
firefly Watchman
Joined: 31 Oct 2002 Posts: 5182
|
Posted: Tue Apr 04, 2017 4:36 pm Post subject: |
|
|
mv wrote: |
Davon abgesehen ist /etc/hostname keine offizielle Datei, sondern eine reine systemd-spezifische Konfigurationsdatei. |
Nope /etc/hostname gibt es schon viel länger als systemd
z.b. das hostname programm, welches unter gentoo in sys-apps/net-tools paket enthalten ist, kennt /etc/hostname schon
siehe manpage: http://man7.org/linux/man-pages/man1/hostname.1.html _________________ Ein Ring, sie zu knechten, sie alle zu finden,
Ins Dunkel zu treiben und ewig zu binden
Im Lande Mordor, wo die Schatten drohn. |
|
Back to top |
|
|
mv Watchman
Joined: 20 Apr 2005 Posts: 6747
|
Posted: Tue Apr 04, 2017 5:41 pm Post subject: |
|
|
firefly wrote: | mv wrote: |
Davon abgesehen ist /etc/hostname keine offizielle Datei, sondern eine reine systemd-spezifische Konfigurationsdatei. |
Nope /etc/hostname gibt es schon viel länger als systemd |
Um präziser zu sein hätte ich sagen sollen: Es ist eine rein init-system-spezifische Datei. openrc nutzt sie nicht; systemd ist diesbezüglich ausnahmsweise etwas kompatibler zu anderen init-Systemen. Solange Du allerdings nicht mehrere Init-Systeme parallel fährst, ist systemd der einzige Konsument dieser Datei. Insofern ist meine Aussage schon richtig, nur nicht historisch vollständig.
Quote: | z.b. das hostname programm, welches unter gentoo in sys-apps/net-tools paket enthalten ist, kennt /etc/hostname schon |
Nope. Ein "grep" der Sourcen zeigt, das /etc/hostname nur in der manpage auftaucht. Dort steht auch i.W. nur, dass in der Regel das Init-System den Hostnamen beim Booten einmalig aufgrund von /etc/hostname setzt: Also nur ein allgemeiner Hinweis. |
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|