Networking

How to enable Linux machines to resolve Windows hostnames

Are your Linux machines able to communicate with your Windows machines via hostname? If not, here's how to configure them so they can.

winbindhero.jpg
Image: Jack Wallen

On your network, every machine should be able to see one another, right? That's a great idea, until you need to communicate to a Windows machine from a Linux machine via hostname. Out of the box, that's just not going to happen. You can ping those Windows hostnames from your Linux boxes all you want and it will come back "hostname not found." Every. Single. Time. If you issue even a ping command, you will see the failed results (Figure A).

Figure A

Figure A

A failed ping to a Windows hostname.

There's a fix for that, one that happens entirely on the Linux side. I'm going to show you how to easily add the necessary components to make this work for you. I will be demonstrating this on both an Elementary OS desktop and an instance of Fedora Server, as the installation process is different.

The fix for Elementary OS (or Ubuntu)

First we'll take care of Elementary OS. Do note this process is the same for any distribution based on Debian or Ubuntu. In order to enable our Ubuntu-derivative to communicate to Windows, via hostname, we have to install winbind and libnss-winbind. To do that, open up a terminal window and issue the following command:

sudo apt install winbind libnss-winbind

Once that installation completes, open up the file /etc/nsswitch.conf with the command sudo nano /etc/nsswitch.conf and look for the line:

hosts: files mdns4_minimal [NOTFOUND=return] dns

Change that line to:

hosts: files mdns4_minimal [NOTFOUND=return] dns wins mdns4

Save and close the file.

Now issue the same ping command to the hostname, and you should see a response (Figure B).

Figure B

Figure B

A successful ping command to our Windows hostname.

The fix for Fedora Server

The fix for Fedora Server is quite different. Instead of installing winbind and lbnss-winbind, you open up a terminal and issue the following command:

sudo dnf install samba-winbind-clients

The above command will pick up the necessary dependencies (samba-winbind and samba-winbind-modules). That is all you need to do for Fedora. Once those install, you should be able to ping your Windows machine, via hostname, all you want.

Not just pinging

With this fix in place, you should also be able to connect to Windows shares via hostname and any other service you might need. If you're working on a network landscape that consists of a mixture of platforms, these little nuances can go a very long way.

Also see

About Jack Wallen

Jack Wallen is an award-winning writer for TechRepublic and Linux.com. He’s an avid promoter of open source and the voice of The Android Expert. For more news about Jack Wallen, visit his website jackwallen.com.

Editor's Picks

Free Newsletters, In your Inbox