A diferencia de la hostname
invocación de comandos simples , la invocación hostname --fqdn
intentará hacer algunas cosas más, lo que a menudo resultará en algunas búsquedas de DNS.
Tome por ejemplo la siguiente invocación (exitosa) (esto es de un cuadro de Red Hat, pero me imagino que debería ser lo mismo para Ubuntu):
# hostname --fqdn --verbose
gethostname()=`myserver.example.com'
Resolving `myserver.example.com' ...
Result: h_name=`myserver.example.com'
Result: h_addr_list=`10.1.2.3'
myserver.example.com
Tenga en cuenta la --verbose
opción muy útil .
En resumen, cualquier cosa que no sea simple hostname
probablemente esté haciendo más de lo que espera. Aquí hay otro ejemplo:
# hostname --ip --verbose
gethostname()=`myserver.example.com'
Resolving `myserver.example.com' ...
Result: h_name=`myserver.example.com'
Result: h_addr_list=`10.1.2.3'
10.1.2.3
Y para redondearlo:
# hostname --verbose
gethostname()=`myserver.example.com'
myserver.example.com
Tenga en cuenta que el nombre de host de un sistema (tal como lo devuelve gethostname) puede proporcionarme un nombre de host no calificado, como 'myserver'. Esta es la razón por la cual el programa que desea instalar utiliza en su hostname --fqdn
lugar.
El mensaje de error hostname: Name or service not known
proviene de las funciones de resolución : estas son las partes de la biblioteca del sistema que se traducen entre nombres y direcciones (generalmente, nombres DNS y direcciones IP).
En realidad, el solucionador hace más que solo DNS (y más que solo traducir entre nombres de host y direcciones IP); su comportamiento está configurado en parte por el archivo /etc/nsswitch.conf
, y típicamente consultará lo siguiente, típicamente en este orden:
- 'hosts' (en Linux, los medios / etc / hosts)
- (a veces) nscd (demonio de almacenamiento en caché del servicio de nombres)
- 'dns'
(tenga en cuenta que también puede tener un servidor DNS de almacenamiento en caché como dnsmasqd --- para el punto de lo anterior, que todavía está bajo el mecanismo 'dns').
Vale la pena señalar que herramientas como dig , host y el venerable nslookup no siguen este orden; son explícitamente herramientas de consulta DNS. Esto significa que si confía en ellos (en un script, por ejemplo), puede terminar obteniendo un resultado diferente al que obtendrían los programas regulares de los clientes (que usan el sistema de resolución). Por esta razón, use el programa getent en los scripts, especialmente si tiene un componente de almacenamiento en caché como nscd en ejecución.
# getent hosts myserver.example.com
10.1.2.3 myserver.example.com
Entonces, la clave aquí es que a) si tiene / etc / hosts bien configurados con una entrada para su propia máquina, yb) su /etc/nsswitch.conf tiene la configuración habitual, hosts: files dns
en ese orden, entonces c) incluso Si no tiene DNS bien configurado en su entorno, entonces hostname --fqdn
debería funcionar.
En un DNS bien configurado, se espera que tenga una dirección 'inversa' (un "registro PTR") que proporciona el nombre 'canónico' de su servidor, y ese nombre también debería poder buscarse (un " Un registro "para IPv4).
Versión corta: agregar --verbose
; te indicará lo que te falta.
Espero que eso te ayude a entender lo que está sucediendo.