samba – using non-standard host names

samba – using non-standard host names

This article shows you how to use non-standard host names.  By default, samba
uses the hostname of the machine on which it is running.  In some situations this can
cause a problem.

The problem

Some time ago, I installed samba and recently I
found it wasn’t working.  I could not see any services from my NT box.  So I
went back to my original article and found a reference to the samba diagnostics.

It is frequently difficult to find the DIAGNOSIS.TXT file referred to by so many SAMBA
documents. It seems to move around the website. Hopefully this will settle down. I suggest
trying the following in the order provided:

Good luck

The diagnostics

I started going through that diagnostic document step by step.  Things started
failing on step 3:

# smbclient -L fred
No interface found for address
Added interface ip= bcast= 
startlmhosts: Can't open lmhosts file /usr/local/etc/lmhosts. 
                                Error was No such file or directory
Server time is Sat Jun 12 21:03:45 1999
Timezone is UTC+12.0
Domain=[FAB] OS=[Unix] Server=[Samba 1.9.18p8]

Server=[FRED] User=[root] Workgroup=[FAB] Domain=[FAB]

        Sharename      Type      Comment
        ---------      ----      -------
        backup         Disk      Backup directory
        ftp            Disk      ftp server file area
        IPC$           IPC       IPC Service (Samba 1.9.18p8)
        lp             Printer   local line printer
        public         Disk      public access area
        root           Disk      Home Directories

The first step was to create /usr/local/etc/lmhosts.  So I did this:

# touch /usr/local/etc/lmhosts

So onto step 4 of the diagnostics.

# nmblookup -B ducky __SAMBA__
Sending queries to
name_query failed to find name __SAMBA__

This tells me that nmbd is incorrectly installed.  So I tried starting

# /usr/local/sbin/nmbd -D 

Checking the log files I found this:

# tail /var/log/log.nmb
1999/06/12 21:44:59 netbios nameserver version 1.9.18p8 started
Copyright Andrew Tridgell 1994-1997
No interface found for address
bind failed on port 137 socket_addr= 
                                      (Can't assign requested address)
make_subnet: Failed to open nmb socket on interface 
   for port 137.
            Error was Can't assign requested address
ERROR: Failed when creating subnet lists. Exiting.

I didn’t understand that.  That IP address didn’t belong to my box.  It
belonged to my router.  So I started composing a message to the questions mailing
list.  Then I had an idea.  I checked the man pages for nmbd(8)
That’s when it struck me: samba is using hostname.  DOH!  I’ll
explain later why this is wrong for me later.

Outdated information

There was another problem with samba.  It was holding outdated
information.   Here’s what I found in another log file:

# tail /var/log/samba/log.smb
                    lookup failureMatchname failed on 
                    lookup failureMatchname failed on 
                    lookup failureMatchname failed on 
                    lookup failureMatchname failed on 
                    lookup failureMatchname failed on 
Gethostbyaddr failed for
No interface found for address

First, this hostname is long out of date.  I’ve not used that hostname for months.
  And the IP address was very out of date.  My box has a DHCP
connection.  The IP address was quite different now.  So I killed and restarted samba:

# ps -auwx | grep smb
root  58 0.0 0.6 134  72 ?? Is 10Mar99 0:01.69 /usr/local/sbin/smbd -D
root 663 0.0 1.4  38 180 p0 R+  9:17PM 0:00.15 grep smb
# kill -quit 358
# /usr/local/sbin/smbd -D

Then a the log file contained:

No path in service printers - using /tmp
No interface found for address

Good!  Now we’re getting somewhere.  Slowly.

Why change the hostname?

My current topology is rather unusual.  If you
look up the hostname of my box, it doesn’t match any of the network interfaces connected
to my box.  Here’s what I mean:

# ifconfig ed0
ed0: flags=c843<up,broadcast,running,simplex,link2,multicast> mtu 1500
        inet netmask 0xffffff00 broadcast
        ether 00:80:ad:df:f5:db 
# ifconfig ed1
ed1: flags=8843<up,broadcast,running,simplex,multicast> mtu 1500
        inet netmask 0xffffff00 broadcast
        ether 00:80:ad:df:f5:d6
# hostname
# nslookup


As you can see, neither ed0 nor ed1 matches up to the hostname of
my computer.  That is because is my ADSL modem/router.  That is
why nmbd cannot open a socket on that address.  It’s on another device.
  [insert big grin here]

What I tried first

Initially, I thought we could tell samba to use a name other than that
returned by hostname.   Specifically, I thought that setting the following
in /usr/local/etc/smb.conf would suffice:

netbios name = fred

But I couldn’t get that to work.  So I took another approach.

Changing the hostname

It’s time to change the hostname of my FreeBSD box. 

# hostname
# hostname
# hostname

All done.  Now when I start nmbd, I get this in the logs:

$ tail log.nmb
1999/06/12 23:26:34 netbios nameserver version 1.9.18p8 started
Copyright Andrew Tridgell 1994-1997
standard input is not a socket, assuming -D option

And a quick check shows that both smbd and nmbd are running.

# ps -auwx | grep mbd
root 228 19.0 4.0  72 58 p2 R+ 11:26PM 0:00.20 grep mbd
root 282  0.0 0.6 104  8 ?? Is 10:53PM 0:00.10 /usr/local/sbin/smbd -D
root 225  0.2 6.0 144 86 ?? Ss 11:26PM 0:00.30 /usr/local/sbin/nmbd

Continuing with the diagnostics

And now step 4 gives this:

# nmblookup -B fred __SAMBA__
Sending queries to __SAMBA__<00>

That’s much better!  [insert sigh here]

The rest of the diagnostics proceeded without incident.  samba is now
running fine!


My thanks to Andrew Tridgell of the Samba team for creating the diagnostics checklist.

Leave a Comment

Scroll to Top