How can I connect to a Samba server using its hostname instead of the IP?
There are a couple of issues that could lead to this:
-
Enabling Netbios in your samba configuration file
in your
/etc/samba/smb.conf
file, after the WORKGROUP line, add the following:netbios name = PC_NAME
Where PC_NAME is the name of your PC as it will show in the network. Then reset the samba servicesudo service smbd restart
-
Not having STATIC IP
Need to have static IP set in order for other PCs on that network to see you. This also depends on your router and the configuration of your network.
-
Hostname length should be less than 15 characters
If your hostname is longer than 15 characters it will give an error in some cases. Type
hostname
to see your hostname. To change it you can either:sudo sysctl kernel.hostname=NAME
or you can edit the
/etc/hostname
file and reboot. -
In the
/etc/samba/smb.conf
file, look for the line that says the following:# What naming service and in what order should we use to resolve host names # to IP addresses ; name resolve order = lmhosts host wins bcast
Uncomment the line that says
name resolve order
and make sure thatbcast
is the first on in the list, should look like this afterwards:name resolve order = bcast lmhosts host wins
Then restart the Samba service as I mentioned above.
This is all assuming it is Ubuntu the problem, you have already Samba installed and you are not working through Active Directory.
In many case it is also Windows. You would need to do stuff like flush the DNS and the register to it. On Windows in the terminal (cmd) do the following:
ipconfig /flushdns
ipconfig /registerdns
You need to reboot the PC afterwards. After this, check to see if you can see the Ubuntu PC by doing for example net view
in Windows.
In my case I had to restart the nmbd service
sudo systemctl restart nmbd
For me it was because my ubuntu was binding the hostname to IPv6 address, if you continue to face problems, the below article is worth a shot.
http://telsonalva.blogspot.in/2016/07/how-to-access-samba-share-in-linux-by.html
this worked for me