How can I make ubuntu use samba to resolve windows host names?

I have an Ubuntu 11.04 computer with two vms : debian and windows xp. Each vm also has Host-only connection so I can see them from Host without setting up port forwarding.

All machines can ping each other using ip addresses, but the linux machines(ubuntu host and debian guest) cant ping windows xp by name, only by using tools like 'nmblookup' or by typing 'smb://hostname' in nautilus. Windows XP can ping all machines by name.

Surely I must be missing some configuration in smb.conf. Here is the current one I'm using :

[global]
workgroup = WORKGROUP
server string = %h server (Samba, Ubuntu)
name resolve order = bcast host lmhosts wins     
printing = cups
printcap name = cups
printcap cache time = 750
cups options = raw
use client driver = yes
map to guest = Bad User
usershare allow guests = Yes
usershare max shares = 100
usershare owner only = False

Any help will be appreciated.


Solution 1:

It's not just Samba!

You need to have Winbind installed, which also installs the Name Service Switch library needed to do what you're looking for. If /lib/libnss_winbind exists on your system, all you should need to do is modify the hosts line in /etc/nsswitch.cfg:

hosts     files dns winbind

The key thing being the winbind line. That tells Linux to use the Windows system for name-resolution.

Solution 2:

Same as the previous comment, but on Arch things are a bit different...

First I made sure nmblookup WinXpClient resolves proper ip and Nmbd service running etc.

On arch linux I had to install nss-mdns and edit /etc/nsswitch.conf to

hosts     files dns wins

(append wins to hosts line)

systemctl enable avahi-daemon.service
systemctl restart avahi-daemon.service
ping WinXpClient

and it works.. or check resolveip WinXpClient