¿Existe alguna manera de proporcionar un nombre de host específico a una aplicación que difiera del nombre de host de la máquina en Linux?

¿Existe alguna manera de proporcionar un nombre de host específico a una aplicación que difiera del nombre de host de la máquina en Linux?

¿Existe alguna manera de proporcionar un nombre de host específico a una aplicación que difiera del nombre de host de la máquina en Linux? Básicamente, tengo un software que espera que la máquina local tenga un determinado nombre de host que difiere del nombre de host de mi máquina. En lugar de cambiar el nombre de host de la máquina globalmente, me gustaría un mecanismo donde pueda ejecutar el programa en un entorno con el nombre de host especificado o ejecutar el programa directamente con el nombre de host especificado.

Respuesta1

Es posible con privilegios de root. Usarunshare --utsPara crear un nuevo espacio de nombres UTS 1 , configure el nombre de host deseado en él, luego suregrese a su cuenta y ejecute la aplicación. Por ejemplo:

ongun@foo$ sudo -s
~ create a new namespace ~
root@foo# unshare --uts /bin/sh
~ this terminal now has its own namespace – change the hostname ~
root@foo# hostname quux
~ switch back ~
root@quux# sudo -s -u ongun
ongun@quux$ /usr/bin/game

Los espacios de nombres están limitados a su proceso creador de forma predeterminada, por lo que el nuevo nombre de host será visible solo para los programas que ejecute.adentrola ventana "no compartir".

Nota:No olvide agregar el nuevo nombre de host /etc/hostscomo 127.0.0.1, ya que muchos programas esperan o dependen de que se pueda resolver.


1 No preguntes qué significa "UTS". Lo mejor que sé es que es un resto del antiguo Unix.

Respuesta2

Si su aplicación no lee directamente la salida hostnameo /etc/hostnameel archivo, siempre puede crear un alias para su máquina como se muestra a continuación.

#
# /etc/hosts: static lookup table for host names
#

#<ip-address>   <hostname.domain.org>   <hostname>
127.0.0.1       localhost.localdomain   localhost MYHOSTNAME   OTHER_ALIAS
::1             localhost.localdomain   localhost MYHOSTNAMEv6 OTHER_ALIASv6

o puedes intentar crear un chroot con un nombre de host diferente comoaquí

Respuesta3

Supongo que no tienes el código fuente del programa en cuestión. La lectura del nombre de host de una máquina se realiza a través de una llamada al sistema,obtener nombre de host(), que sería difícil de eludir sin acceso al código fuente del programa.

Luego debería utilizar una solución virtual para ejecutar el programa. Los contenedores, acopladores y máquinas virtuales tienen el grado suficiente de aislamiento para permitirle cambiarles el nombre al valor requerido, sin comprometer su máquina host.Un contenedorEs una solución muy liviana que consumirá muy pocos recursos de su host.

información relacionada