Out of the box, Ubuntu cannot resolve hostnames announced by Windows out of the box.
The internet had many solutions from ditching NETBIOS (winbind, wins) but it involves replacing systemd-resolved
with the old NetworkManager (systemd-resolved was an extra level of indirection to break VPN ties), which I illustrated in this now deprecated blog post.
Having router assign host names you specify often included a local domain name (must not choose one that conflicts with the internet) such as local
or lan
. So the computers are accessed in the format of myPC.local
or myPC.lan
depending on the local domain name you picked. However, it doesn’t take advantage of the hostname announced by Windows computers.
I decided to give the NETBIOS service a second research today and found the missing link to the common solution of installing winbind
and adding wins
entry to host
search order in /etc/nsswitch.conf
(you can put it at the end or earlier if you want). I put it at the end as I wanted it to be the last resort
hosts: files {a bunch of things depending on your system} wins
Of course having a wins
entry in the hosts
search order involves installing winbind make sure the winbind service is running
sudo apt install winbind
The missing piece is editing /etc/samba/smb.conf
to inject a name resolve order list after installing samba and winbind:
name resolve order = wins lmhosts bcast
You will need to install samba
package first if you haven’t already installed it (for sharing folders with Windows)
sudo apt install samba
The post said the name resolve order
section was commented out, but in newer version of samba, the line is simply non-existent. You’ll have to add it somewhere in /etc/samba/smb.conf
, I chose to put it right at the beginning of [global]
section.
Restart the services after editing to reflect the changes and you can start pinging!
sudo systemctl restart nmbd smbd winbind
So in the process above (installing samba
and winbind
and editing nsswitch.conf), you’ve also enabled linux to announce its hostname to Windows, which I’ve discussed in this blog post.
So to summarize the concepts,
- You need to install winbind to add wins to host search list in nsswitch.conf, but it doesn’t do you anything yet!
- Once you installed samba, your linux computer start announcing its hostname to Windows computers
- To be able to use the hostnames announced by Windows, i.e. the other direction, you’ll need to add the
name resolve order
line tosmb.conf
(samba config file) and restartsamba
andwinbind
.