hostname -f says "hostname: the specified hostname is invalid". Guess why?

hostname -f says "hostname: the specified hostname is invalid". The hostname (FQDN) specified in /etc/hostname is also listed in /etc/hosts and is pingable. No actual DNS server yet of the host knows. Is this a reason of the error reported or something else? (the OS is Ubuntu 10.04 Server).

Update: registering the host at a DNS server (so that the name can be successfully resolved via Internet) did not help.


From this thread on Ubuntu Forums.

Apparently the underscore is an illegal character for hostnames. I had one in my hostname, and it gave me your failure message. Maybe you're getting something similar.


Check the configuration of:

/etc/host.conf
/etc/nsswitch.conf

host.conf should have "order hosts, bind" and nsswitch.conf should have "hosts: files dns" at a minimum. Possibly you've got something out of whack that's searching only DNS and not your local files?


/etc/hostname should only contain the hostname and not a full FQDN.


hostname -f relies on DNS working.

What does:

host `cat /etc/hostname`

print?