Gibt es eine Möglichkeit, einer Anwendung einen bestimmten Hostnamen zuzuweisen, der sich vom Hostnamen des Computers unter Linux unterscheidet? Grundsätzlich habe ich eine Software, die erwartet, dass der lokale Rechner einen bestimmten Hostnamen hat, der sich von meinem Rechner-Hostnamen unterscheidet. Anstatt den Hostnamen des Computers global zu ändern, möchte ich einen Mechanismus, mit dem ich das Programm entweder in einer Umgebung mit dem angegebenen Hostnamen oder direkt mit dem angegebenen Hostnamen ausführen kann.
linux
networking
dns
wyer33
quelle
quelle
Antworten:
Es ist mit root-Rechten möglich. Verwenden Sie
unshare --uts
diese Option , um einen neuen UTS 1- Namespace zu erstellen , legen Sie den gewünschten Hostnamen darin fest, kehren Sie dannsu
zu Ihrem Konto zurück und führen Sie die App aus. Zum Beispiel:Namespaces sind standardmäßig auf ihren Erstellungsprozess beschränkt, sodass der neue Hostname nur für Programme sichtbar ist, die Sie im Fenster "unshare" ausführen.
Hinweis: Vergessen Sie nicht, den neuen Hostnamen tatsächlich zu
/etc/hosts
127.0.0.1 hinzuzufügen , da viele Programme erwarten / davon abhängig sind, dass er aufgelöst werden kann.1 Fragen Sie nicht, was "UTS" bedeutet. Das Beste, was ich weiß, ist, dass es ein Überbleibsel aus dem alten Unix ist.
quelle
Wenn Ihre Anwendung die Ausgabe von
hostname
oder die/etc/hostname
Datei nicht direkt liest , können Sie jederzeit einen Alias für Ihren Computer wie unten erstellen.Oder Sie können versuchen, eine Chroot mit einem anderen Hostnamen wie hier zu erstellen
quelle
Ich nehme an, Sie haben nicht den Quellcode des betreffenden Programms. Das Lesen des Hostnamens einer Maschine erfolgt durch einen sys-Aufruf, gethostname () , den man nur schwer umgehen kann, wenn man nicht auf den Quellcode des Programms zugreift .
Sie sollten dann eine virtuelle Lösung verwenden, um das Programm auszuführen. Container, Docker und VMs sind ausreichend isoliert, damit Sie sie in den erforderlichen Wert umbenennen können, ohne Ihren Hostcomputer zu gefährden. Ein Container ist eine sehr leichte Lösung, die nur sehr wenig von Ihren Host-Ressourcen beansprucht.
quelle