Ubuntu – Unable to set hostname for use within network

dhcphostnameUbuntu

I am having a lot of trouble setting up a hostname for my home server for use within my home network. My home server is running Ubuntu 12.04 LTS and all packages are up to date. Management of this server is done using SSH only, no GUI is present.
I want to use the servers host name mainly for accessing web pages and samba shares from several Windows computers and Android devices.

My homeserver acquires its (static) IP address from a Linksys WRT54GC using DHCP.
Both /etc/hosts and /etc/hostname have added "homeserver" as a host name.
I did not tamper /etc/dhcp/dhclient.conf, because the default settings should work according to Ubuntu sources.

The router is only able to resolve host names for DHCP clients. It does not let me edit the client names like some newer products can.
All host names of my Windows PC are recognized by the router. I am also able to ping those machines using their host names. So everything seems to be all right on my router.

The Linksys WRT54GC is cascaded to an ISP configured DSL modem/router. All internet traffic is routed to the Linksys, as it is placed in the DMZ of the DSL modem/router. The IP address of the DSL modem/router is 192.168.1.1 and the Linksys is 192.168.2.1. The Linksys is configured using a static IP address. The DNS server for the Linksys is configured to 192.168.1.1. All clients linked to the Linksys report having 192.168.1.1 as the DNS server.

This issue might have something to do with this bug.
I have installed the isc-dhcp-client package from 13.04, but that did not do the trick.
If this bug still exist in Ubuntu 12.04 LTS (and 13.04), I would like to know a work around.

Edit #1

The OP posted the contents of the file: /etc/dhcp/dhclient.conf:

# Configuration file for /sbin/dhclient, which is included in Debian's
#   dhcp3-client package.
#
# This is a sample configuration file for dhclient. See dhclient.conf's
#   man page for more information about the syntax of this file
#   and a more comprehensive list of the parameters understood by
#   dhclient.
#
# Normally, if the DHCP server provides reasonable information and does
#   not leave anything out (like the domain name, for example), then
#   few changes must be made to this file, if any.
#

option rfc3442-classless-static-routes code 121 = array of unsigned integer 8;

send host-name "<hostname>";
#send dhcp-client-identifier 1:0:a0:24:ab:fb:9c;
#send dhcp-lease-time 3600;
#supersede domain-name "fugue.com home.vix.com";
#prepend domain-name-servers 127.0.0.1;
request subnet-mask, broadcast-address, time-offset, routers,
    domain-name, domain-name-servers, domain-search, host-name,
    netbios-name-servers, netbios-scope, interface-mtu,
    rfc3442-classless-static-routes, ntp-servers,
    dhcp6.domain-search, dhcp6.fqdn,
    dhcp6.name-servers, dhcp6.sntp-servers;
#require subnet-mask, domain-name-servers;
#timeout 60;
#retry 60;
#reboot 10;
#select-timeout 5;
#initial-interval 2;
#script "/etc/dhcp3/dhclient-script";
#media "-link0 -link1 -link2", "link0 link1";
#reject 192.33.137.209;

#alias {
#  interface "eth0";
#  fixed-address 192.5.5.213;
#  option subnet-mask 255.255.255.255;
#}

#lease {
#  interface "eth0";
#  fixed-address 192.33.137.200;
#  medium "link0 link1";
#  option host-name "andare.swiftmedia.com";
#  option subnet-mask 255.255.255.0;
#  option broadcast-address 192.33.137.255;
#  option routers 192.33.137.250;
#  option domain-name-servers 127.0.0.1;
#  renew 2 2000/1/12 00:00:01;
#  rebind 2 2000/1/12 00:00:01;
#  expire 2 2000/1/12 00:00:01;
#}

Best Answer

If your DHCP server supports it you might want to try and have your client send the desired hostname that it wants. Add the following to the file /etc/dhcp/dhclient.conf:

send host-name 'your-hostname-here';

If you want to send a fully qualified domain name (fqdn) - myhost.mydomain.com instead of just myhost you need to add these lines too:

send fqdn.fqdn "myhost.mydomain.com.";
send fqdn.encoded on;
send fqdn.server-update off;
also request fqdn, dhcp6.fqdn;

Edit #1

The OP was asked to try the following commands and report back:

dig <hostname> @<router ip>

The OP reported that this worked so it was determined to try adding the router's IP explicitly to his dhclient.conf file.

Edit #2

It was suggested to try adding the following to the /etc/dhcp/dhclient.conf file:

prepend domain-name-servers 192.168.2.1;

Edit #3

Given you're able to now ping servers using your router's DNS server when you added 192.168.2.1, but not the internet, I would suggest you add some external DNS servers as well using the above prepend option like so:

prepend domain-name-servers 192.168.2.1, 8.8.8.8, 8.8.4.4;

This will add your router as a DNS resolver along with Google's DNS servers.

Related Question